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

Résolu
Pascal-Jr -  
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   -
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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
Pascal-Jr
 
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
Pascal-Jr
 
C'est une partie de mon script de traitement lorsque l'administrateur souhaite ajouter une annonce.
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Non, ta structure de ta table s'il te plait.
0
Pascal-Jr
 
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
Pascal-Jr
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
ça affichera 10 résultats ...!!!
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Ben il peut modifier après !
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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
Pascal-Jr
 
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
Pascal-Jr
 
Enfin disons que je sais comment m'y prendre mais ça ne marches pas ... donc ça revient à dire que ...
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Prend le mien il n'y a pas d'erreur et tu veux faire comme moi x)
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Est-ce que tu veux ça :
PAGE INDEX : (nom exemple)
<a>Nom du model</a>

PAGE VOIR MODEL :
Modèle
Km
Prix
etc ...
0
Pascal-Jr
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Facile je te fais ça de suite !
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
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 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Est-ce que il y a des erreurs, ou quelques choses que tu ne comprends pas ?
0
Pascal-Jr
 
Je ne comprends pas pourquoi tu ne passes pas par PDO.
C'est moins sécurisé il me semble.
0
MastercroW Messages postés 1094 Date d'inscription   Statut Membre Dernière intervention   163
 
Sa revient au même !
0
JooS Messages postés 2468 Date d'inscription   Statut Membre Dernière intervention   228
 
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   Statut Membre Dernière intervention   4
 
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
Pascal-Jr
 
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