N'afficher qu'une seule entrée d'une table
RésoluJooS Messages postés 2705 Statut Membre -
je voudrais n'afficher qu'une seule entrée d'une table SQL.
En fait ça serait pour un système d'annonce :
j'ai une liste de moto à vendre sous forme de tableau et je voudrais que si une personne clique sur le lien d'une moto tombe sur une fiche descriptive de cette moto.
Le modèle de la fiche descriptive serait une seule page pré-remplie complétée par des variables.
Mon problème :
Je ne connais pas la requête SQL permettant de n'afficher qu'une seule entrée.
En cherchant, j'ai trouvé WHERE mais je ne sais pas si l'usage est vraiment adapté dans mon cas.
Merci d'avance à tous pour votre implication.
8 réponses
Affiner l'affichage d'une liste SQL pour ne présenter qu'une seule fiche descriptive dépend d'une requête ciblée et d'un passage d'identifiant via l'URL, afin d'ouvrir une page préremplie. Des solutions courantes passent par une page de détail recevant un paramètre id dans l'URL, puis une requête préparée comme SELECT * FROM article WHERE id = ? pour récupérer l'enregistrement et afficher ses attributs. En pratique, le lien associé à chaque moto pointe vers la fiche individuelle, par exemple afficher_fiche.php?id=13, et la page de fiche utilise $_GET['id'] ou une variable similaire pour alimenter la requête. Certaines réponses préconisent l'usage de PDO et de filtrage, par exemple $id = intval($_GET['id']);, pour limiter les injections et garantir que l'identifiant soit un entier.
-
Salut,
Peux-tu nous donner ta table pour voir ce que l'on peut faire.
Sinon si j'ai bien compris, tu veux lorsque l'utilisateur clic sur le lien, il reçoit un descriptif d'une moto a vendre c'est bien ça ? -
Exactement.
'modele' => $_POST['modele'],
'cylindree' => $_POST['cyl'],
'km' => $_POST['km'],
'annee' => $_POST['annee'],
'prix' => $_POST['prix'],
'description' => $_POST['description'],
Je sais pas si c'est suffisant, si c'est le cas n'hésitez pas à me demander. -
Ah j'ai oublié de préciser que je suis un gros débutant en PHP/MySQL ...
Si ça peut vous aidez à comprendre ... -
Bonsoir,
Désolé de mon retard mais voilà quelques chose que tu va t'en ravir !<?php $requete = mysql_query ("SELECT * FROM table ORDER BY id DESC LIMIT 10"); // Changer table par ta table 10 = Le nombre de requêtes maximum while($donnees = mysql_fetch_array($requete)) { ?> Modele : <?php echo ''.$donnees['modele'].''; ?> Cylindre : <?php echo ''.$donnees['cylindree'].''; ?> Année : <?php echo ''.$donnees['annee'].''; ?> Nombre de kilomètres : <?php echo ''.$donnees['km'].''; ?> Prix : <?php echo ''.$donnees['prix'].''; ?> Description : : <?php echo ''.$donnees['description'].''; ?> <?php } ?> -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Pendant ce temps j'ai également bossé sur un script, ça ne fonctionne pas j'ai une erreur undefined index : id
<?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=annonces', 'root', '', $pdo_options); $req = $bdd->prepare('SELECT * FROM article WHERE id = ?'); $req->execute(array($_GET['id'])); // Je sépare la variable $_GET['id'] de ma requête pour éviter les injections SQL while ($donnees = $req->fetch()) { ?> <ul> <li>Marque/Modèle : <?php echo $donnees['modele']; ?></li> <li>Cylindrée : <?php echo $donnees['cylindree']; ?></li> <li>Km : <?php echo $donnees['km']; ?></li> <li>Année : <?php echo $donnees['annee']; ?></li> <li>Prix : <?php echo $donnees['prix']; ?></li> <li>Description : <?php echo $donnees['description']; ?></li> </ul> <?php } $req->closeCursor(); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } ?>
Par contre, je me pose une question :
Comment j'utilise $_GET sans avoir un <form></form> pour traiter quand je clique sur mon lien ?
Je reconnais que l'idée de récupérer l'id avec ne variable est ce que je comptais faire mais je ne sais pas comment m'y prendre.-
-
-
Ton adresse(URL) doit être du genre ...tonsite.com/afficher_fiche.php?id=15
La page afficher_fiche.php sera la page qui contiens le code suivant ...
15 c'est l'id de la moto dans ta table ...<?php try { $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=annonces', 'root', '', $pdo_options); } catch (Exception $e) { die('Erreur : ' . $e->getMessage()); } $id = htmlentities($_GET['id']); $req = $bdd->prepare('SELECT * FROM article WHERE id = ?'); $req->execute(array($id)); while ($donnees = $req->fetch()) { ?> <ul> <li>Marque/Modèle : <?php echo $donnees['modele']; ?></li> <li>Cylindrée : <?php echo $donnees['cylindree']; ?></li> <li>Km : <?php echo $donnees['km']; ?></li> <li>Année : <?php echo $donnees['annee']; ?></li> <li>Prix : <?php echo $donnees['prix']; ?></li> <li>Description : <?php echo $donnees['description']; ?></li </ul> <?php } $req->closeCursor(); ?>
Dans la page qui affiche les motos que tu as dans ta table, exemple afficher_motos.php
Tu fait la meme chose avec une boucle sauf que tu doit afficher juste le nom de la moto avec un lien vers sa fiche, t'aura un truc du genre ...
....... while ($donnees = $req->fetch()) { ?> <ul> <li><a href="afficher_fiche.php?id=<?php echo $donnees['id'] ?>"><?php echo $donnees['modele']; ?></a></li> </ul> } ......
Donc par exemple pour la moto dont l'id est 13, le lien ressemblera a ça : afficher_fiche.php?id=13
-
-
Est-ce que tu veux ça :
PAGE INDEX : (nom exemple)
<a>Nom du model</a>
PAGE VOIR MODEL :
Modèle
Km
Prix
etc ... -
Alors, je crois que ça devrais marcher (lis bien les commentaires):
<!-- INDEX soit index.php --> <?php // La connexion à la base de donnée $requete = mysql_query ("SELECT * FROM table ORDER BY id DESC LIMIT 10"); // Changer table par ta table 10 = Le nombre de requêtes maximum while($donnees = mysql_fetch_array($requete)) { ?> <a href="ventes.php?id=<?php echo''.$donnees['id'].''; ?>" action="ventes.php?=<?php echo''.$donnees['id'].''; ?>">Modele : <?php echo ''.$donnees['modele'].''; ?></a> <!-- Ventes = ta page ou tu verra le descriptif--> <?php } ?> <!-- PAGE avec de descriptif soit ventes.php--> <?php // La connexion à la base de donnée $ids = mysql_real_escape_string(htmlspecialchars($_GET['id'])); $retour = mysql_query("SELECT * FROM table WHERE id='" . $ids . "' ORDER BY id ASC"); // Changer table par ta table while ($donnees = mysql_fetch_array($retour)) { ?> <ul> <li>Marque/Modèle : <?php echo $donnees['modele']; ?></li> <li>Cylindrée : <?php echo $donnees['cylindree']; ?></li> <li>Km : <?php echo $donnees['km']; ?></li> <li>Année : <?php echo $donnees['annee']; ?></li> <li>Prix : <?php echo $donnees['prix']; ?></li> <li>Description : <?php echo $donnees['description']; ?></li> </ul> <?php } ?> -
Bien joué les gars ça marche à la perfection.
Vous m'avez tous bien aidé.
Je vous remercie tous autant que vous êtes pour votre compréhension et votre patience.
Merci beaucoup.