N'afficher qu'une seule entrée d'une table

Résolu/Fermé
Pascal-Jr - 8 mars 2011 à 12:44
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 - 10 mars 2011 à 17:29
Bonjour,
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

MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
8 mars 2011 à 13:13
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 ?
1
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.
0
C'est une partie de mon script de traitement lorsque l'administrateur souhaite ajouter une annonce.
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
8 mars 2011 à 13:50
Non, ta structure de ta table s'il te plait.
0
id int(11)
modele varchar(100)
cylindree int(5)
annee int(4)
km int(6)
prix int(5)
description text

Je suppose que c'est ça que tu voulais.
Je n'ai qu'une entrée. Je ne sais pas si c'est nécessaire de la mettre.
0
Ah j'ai oublié de préciser que je suis un gros débutant en PHP/MySQL ...
Si ça peut vous aidez à comprendre ...
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 8/03/2011 à 17:17
Ben tu affiche la fiche selon l'id ...
En utilisant PDO et avec une requete préparé, tu aura un truc du genre ...
$req = $bdd->prepare('SELECT * FROM table WHERE id = ?'); 
$req->execute(array($id)); 
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
8 mars 2011 à 23:57
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
}
?>
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
9 mars 2011 à 00:04
ça affichera 10 résultats ...!!!
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 00:09
Ben il peut modifier après !
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 9/03/2011 à 12:41
l'id doit être une variable ...et on la récupère avec get

$art_id = $_GET['id'];   
..............("SELECT * FROM table WHERE id = '%$art_id%'");
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 01:20
Pourquoi tu veux faire ça ?
Si sa se trouve sa convient parfaitement à Pascal ma requête !
0

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.
0
Enfin disons que je sais comment m'y prendre mais ça ne marches pas ... donc ça revient à dire que ...
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 11:03
Prend le mien il n'y a pas d'erreur et tu veux faire comme moi x)
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 10/03/2011 à 17:37
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
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 11:04
Est-ce que tu veux ça :
PAGE INDEX : (nom exemple)
<a>Nom du model</a>

PAGE VOIR MODEL :
Modèle
Km
Prix
etc ...
0
Exactement et en fait ça afficherais le nom du modèle en se servant de variables, et d'une seule page standard complétées grâce aux variables lorsque l'utilisateur clique sur le lien du modèle souhaité.
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 11:31
Facile je te fais ça de suite !
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 11:40
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
}
?>
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 11:49
Est-ce que il y a des erreurs, ou quelques choses que tu ne comprends pas ?
0
Je ne comprends pas pourquoi tu ne passes pas par PDO.
C'est moins sécurisé il me semble.
0
MastercroW Messages postés 1095 Date d'inscription dimanche 3 octobre 2010 Statut Membre Dernière intervention 31 mai 2019 163
9 mars 2011 à 12:27
Sa revient au même !
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
Modifié par JooS le 9/03/2011 à 12:45
Salut, pour infos, PDO est la méthode de connexion la plus utilisé, et elle sera la principale dans quelque années ...et effectivement Pascal, elle devient plus sécurisé si on sait comment l'utiliser ...
0
tito23 Messages postés 305 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 janvier 2013 4
9 mars 2011 à 13:21
Puisque l'id est de type int, il faut changer ça
$retour = mysql_query("SELECT * FROM table WHERE id='" . $ids . "' ORDER BY id ASC"); 
par ça
$retour = mysql_query("SELECT * FROM table WHERE id=" . $ids . " ORDER BY id ASC");
0
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.
0