frakosun Posté 20 Avril 2007 Posté 20 Avril 2007 (modifié) bonjour à tous, Voilà, je suis en train de créer un site de partitions où je désire que chaque page d'artiste affiche une liste d'albums + les noms des chansons + la pochette. Tout fonctionne niquel, sauf pour la pochette qui ne s'affiche pas Basiquement j'ai 2 tables : l'une qui stocke toutes les infos chansons, et l'autre les pochettes. La jointure entre les deux se fait sur le "nom d'album". La requete (simplifiée) sous la forme SELECT id FROM pochettes WHERE titre_album = "test" fonctionne bien sous php myadmin donc il doit sans doute y avoir un soucis dans la jointure.. voici mon code : function showartist(&$a, &$user, &$type) { $qry_result = $user->query("SELECT lid,song, album, track FROM ".$user->datatable()." WHERE artist=\"$a\" ORDER BY album,track"); writesubtitle("Guitar Tab Results for $type \"". htmlentities(stripslashes($a)) ."\""); $prevalbum = ""; $cover = ""; $donesingle = 0; $i = 1; writepage("</p><table id=\"albumlist\">"); while ($result = mysql_fetch_array($qry_result, MYSQL_BOTH)) { if (strtoupper($prevalbum) != strtoupper($result['album']) && $result['album'] != NULL) { $prevalbum = $result['album']; // requete sur les pochettes $sqlalb = 'SELECT id FROM pochettes as coverid WHERE titre_album = ".$prevalbum."'; $reqalb = mysql_query($sqlalb) or die('Erreur SQL !<br>'.$sqlalb.'<br>'.mysql_error()); while($datacover = mysql_fetch_assoc($reqalb)) { $cover = $datacover["coverid"]; } // affichage liste d'albums if ($i != 1) writepage("</table><br><table id=\"albumlist\">"); writepage("<tr class=\"albumheader\"><td colspan=2 class=\"albumheader\">".htmlentities(stripslashes($a))." | ". htmlentities(stripslashes($result['album'])) ." | ".$datacover["coverid"]."</td></tr>"); } normalement l'id appelera une photo mais pour tester je veux juste afficher l'id Merci d'avance à ceux qui pourront m'aider! Modifié 20 Avril 2007 par frakosun
f_trt Posté 20 Avril 2007 Posté 20 Avril 2007 C'est une image que tu as dans le champs ? Si oui tu ne peux faire un affichage de l'image comme cela, il te faut faire un php dédié à cela que tu appelerais aux sein d'une balise image ç donnerai cela à l'endroit ou tu dois afficher: <img src="aff_img.php?id=<?php echo $id; ?> /> Dans aff_img.php // Ta partie ouverture vers mysql// La requette pour peupler la variable $coverheader("Content-type: image/jpg");header("Expires: Wed, 01 Jan 1990 00:00:00 GMT");header("Cache-Control: no-cache");header("Cache-Control: must-revalidate");print $cover;
Portekoi Posté 20 Avril 2007 Posté 20 Avril 2007 Bonjour, Petit conseil : Stock le chemin vers la pochette et non la pochette en elle même. Tu y gagneras en temps et ressources à terme Bye Portekoi
frakosun Posté 20 Avril 2007 Auteur Posté 20 Avril 2007 (modifié) d'abord merci pour vos réponses à tous les deux. Ensuite, pour vous répondre: C'est une image que tu as dans le champs ? Oui, en fait je stocke les images dans la bdd via la fonction BLOB et j'ai déjà une page de type img.php?id=x dédiée à d'affichage. Donc je pensais simplement récupérer l'id de l'image correspondant à la requete de l'album pour l'insérer directement dans l'url. En simplifiant, faire exactement un truc comme tu as dit, voici mon fichier img.php: <?php// connexion mysql$query = "SELECT data,filetype FROM pochettes where id=$id";$result = MYSQL_QUERY($query);$data = MYSQL_RESULT($result,0,"data");$type = MYSQL_RESULT($result,0,"filetype");Header( "Content-type: $type");print $data;?> et donc là où ça coince depuis le début c'est au niveau de la requette pour peupler la variable $cover , elle ne se remplit pas. A mon avis le soucis vient de cette partie du code : $sqlalb = 'SELECT id FROM pochettes as coverid WHERE titre_album = ".$prevalbum."'; $reqalb = mysql_query($sqlalb) or die('Erreur SQL !<br>'.$sqlalb.'<br>'.mysql_error()); while($datacover = mysql_fetch_assoc($reqalb)) { $cover = $datacover["coverid"]; } => $prevalbum étant le résultat de la requête effectuée sur une autre table et affichant le nom de l'album sur le site. (en gros ma jointure se fait sur le nom de l'album) Petit conseil : Stock le chemin vers la pochette et non la pochette en elle même. oui je sais tu as entièrement raison mais j'ai voulu faire au plus simple car les images seront très petites (40*40 px) et il y aura rarement plus de 5 images sur la même page. Modifié 20 Avril 2007 par frakosun
lionel.a Posté 10 Mai 2007 Posté 10 Mai 2007 Bonjour, ton problème semble provenir de l'écriture PHP de ta requête : $sqlalb = 'SELECT id FROM pochettes as coverid WHERE titre_album = ".$prevalbum."'; Essaye : $sqlalb = "SELECT id FROM pochettes as coverid WHERE titre_album = '$prevalbum'";
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant