[Modéré] Lister le contenu d'une table SQL
Bonjour,
toujours débutant, je me trouve devant un problème.
J'ai créé une table SQL nommée images qui contient une colonne référence produits, une colonne lien image et encore d'autres colonnes mais que je ne souhaite pas voir apparaitre sur ma page. J'ai pour l'instant 10 articles dans ma base
Voici mon code
Avec celui-ci, mes 10 articles apparaissent.
<?php
include ("connexion.inc.php");
$idcom=connex("mabd", "myparam");
$requete="SELECT reference, images_bd FROM images";
$result=@mysql_query($requete, $idcom) or die (mysql_error());
if(!$result)
{
echo "Lecture impossible";
}
else
{
$nbcol=mysql_num_fields($result);
$nbart=mysql_num_rows($result);
echo "<h2>Il y a $nbart articles</h2>";
echo "<table border=1' size='800px'>";
echo "<tr>";
while($donnees=mysql_fetch_array($result))
{
echo "<td>".$donnees['reference']."</td>";
echo "<td> <img src=".$donnees['images_bd']."></td>";
echo "</tr>";
}
echo "</table>";
}
mysql_free_result($result);
?>
</body>
</html>
Je souhaite qu'en cliquant sur la reference d'un produit on accède à sa fiche. J'ai donc remplacé la ligne
echo "<td>".$donnees['reference']."</td>";
par
echo "<td><a href='fiche.php?id=".$donnees['reference'].">".$donnees['reference']."</td>";
Du coup, je n'ai plus que 5 articles qu s'affichent. Je ne comprends pas pourquoi?
Merci pour votre aide.
Réponses apportées à cette discussion
Il y a une mauvaise utilisation des quotes dans ta ligne : au lieu de
echo "<td><a href='fiche.php?id=".$donnees['reference'].">".$donnees['reference']."</td>";
essaye plutôt :
echo '<td><a href="fiche.php?id='. $donnees['reference'] .'">'. $donnees['reference'] .'</td>' . "\n";
Observe bien les détails et regarde le code source généré dans ta page en comparantle résultat de ton code original et celui-ci.
Un point est important : pars toujours du résultat que tu veux obtenir : en (X)HTML, les valeurs d'attribut doivent être entre guillemets (") et non entre apostrophes (') : donc, ça devrait au final ressembler à :
<td><a href="fiche.php?id=1">1</td>
Prends la chaine au complet et mets-là entre apostrophes dans ton «echo» :
echo '<td><a href="fiche.php?id=1">1</td>';
Ensuite, il te reste à remplacer les valeurs en dur par les variables correspondante en faisant une concaténation : ici on remplace le « 1 » par « '. $donnees['reference'] .' » : ici, pas de comflit entre les apostrophes encadrant la variable et celles encadrant l'index de ton tableau. Si tu as un doute, alors utilise des guillemets pour l'index de façon à avoir une alternance et tu mets « '. $donnees["reference"] .' »
Au final, tu auras le code que j'ai indiqué au départ.
Hello Cyrano,
une fois de plus, merci pour tes précieux conseils. Cela fonctionne beaucoup mieux. Je dois avouer que je m'enmêle un peu avec les quotes.
Encore deux questions:
lorsque l'on clique sur la référence du produit, sa fiche apparit sur une autre page. Est-ce mieux de gérer tout cela au moyen de fonctions ou de classes ou bien ma méthode est la bonne ?
Et depuis la fiche produit ouverte si je veux retourner sur ma page avec tous mes produits au moyen d'un bouton "retour page" comment puis-je faire?
Encore un grand merci !