Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1270 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Problème Jointure SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème Jointure SQL

n°1942523
Hamy
Posté le 19-11-2009 à 18:33:16  profilanswer
 

Voici un bout de code liste_news.php me permet de valider, modifier et supprimer une news. Elle m'affiche aussi son titre, sa date postée, et son auteur.
 

Code :
  1. <table><tr>
  2. <th>Valider</th>
  3. <th>Modifier</th>
  4. <th>Supprimer</th>
  5. <th>Titre</th>
  6. <th>Date</th>
  7. <th>Auteur</th>
  8. </tr>
  9. <?php
  10. $retour = mysql_query('
  11. SELECT *
  12. FROM news
  13. LEFT JOIN membres ON membres.id = news.id_membre
  14. ORDER BY news.id DESC');
  15. while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
  16. {
  17. ?>
  18. <tr>
  19. <td><?php echo '<a href="liste_news.php?valider_news=' . $donnees['id'] . '">'; ?>Valider</a></td>
  20. <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
  21. <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
  22. <td><?php echo stripslashes($donnees['titre']); ?></td>
  23. <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
  24. <td><?php echo $donnees['prenom']; echo " "; echo $donnees['nom'];?></td>
  25. </tr>
  26. <?php
  27. } // Fin de la boucle qui liste les news
  28. ?>
  29. </table>


 
Le problème est que $donnees['id'] me renvoi l'ID du membre qui a posté la news.
Alors que cet ID doit correspondre au n° de la news.

  • champs table news: id, titre, contenu, timestamp, validation, id_membre
  • champ table membres: id, login, pass_md5, prenom, nom, formation


Est-ce un problème de jointure?
Merci d'avance.


Message édité par Hamy le 19-11-2009 à 18:33:52
mood
Publicité
Posté le 19-11-2009 à 18:33:16  profilanswer
 

n°1942526
Mara's dad
Yes I can !
Posté le 19-11-2009 à 18:37:35  profilanswer
 

RTFM :  
http://fr.php.net/manual/fr/functi [...] -array.php : Exemple #1  
Requête avec duplication de nom de colonnes


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1942530
Hamy
Posté le 19-11-2009 à 18:52:45  profilanswer
 

Ok merci de ta réponse. Donc si j'ai bien compri ma requete sera:
$retour = mysql_query('
SELECT membres.id AS id1, news.id AS id2
FROM news, membres
ORDER BY id2 DESC');  
C'est bon ça ?

n°1942548
Mara's dad
Yes I can !
Posté le 19-11-2009 à 20:19:18  profilanswer
 

Oui, si tu ne veux pas du titre, du nom...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1942550
Hamy
Posté le 19-11-2009 à 20:37:04  profilanswer
 

Non je veux le nom de l'auteur, le titre de la news, sa date et son id

n°1942553
Mara's dad
Yes I can !
Posté le 19-11-2009 à 20:42:42  profilanswer
 

Il faut donc les mettre dans ta requête...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1942558
Hamy
Posté le 19-11-2009 à 20:56:07  profilanswer
 

Rien à faire toujours un problème:

Code :
  1. $retour = mysql_query('
  2. SELECT membres.id AS id1, news.id AS id2, membres.prenom, membres.nom, news.titre, news.timestamp
  3. FROM news, membres
  4. ORDER BY id2 DESC');
  5. while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
  6. {
  7. ?>
  8. <tr>
  9. <td><?php echo '<a href="liste_news.php?valider_news=' . $donnees['id2'] . '">'; ?>Valider</a></td>
  10. <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id2'] . '">'; ?>Modifier</a></td>
  11. <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id2'] . '">'; ?>Supprimer</a></td>
  12. <td><?php echo stripslashes($donnees['titre']); ?></td>
  13. <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
  14. <td><?php echo $donnees['prenom']; echo " "; echo $donnees['nom'];?></td>


 
J'obtiens la liste de tout mes membres. Je veux juste afficher les news (titre et date) ainsi que l'auteur (prenom nom)

n°1942561
Mara's dad
Yes I can !
Posté le 19-11-2009 à 21:03:33  profilanswer
 

Le left join a disparu...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°1942562
dsoft
Posté le 19-11-2009 à 21:04:53  profilanswer
 

Il te manque la clause "WHERE" pour que la jointure soit faite.


---------------
www.blurk.fr
n°1942564
Hamy
Posté le 19-11-2009 à 21:17:08  profilanswer
 

Ok enfin ça marche...
Ma requête était foireuse.
Correction:

Code :
  1. $retour = mysql_query('
  2. SELECT news.id AS id1, news.titre, news.timestamp, news.id_membre, membres.prenom, membres.nom
  3. FROM news
  4. LEFT JOIN membres ON membres.id = news.id_membre
  5. ORDER BY id1 DESC');


Après j'incruste l'alias de l'ID dans mon lien:

Code :
  1. <td><?php echo '<a href="liste_news.php?valider_news=' . $donnees['id1'] . '">'; ?>Valider</a></td>


Bonne soirée à vous

mood
Publicité
Posté le 19-11-2009 à 21:17:08  profilanswer
 

n°1942749
Fred999
Rabat-joie
Posté le 20-11-2009 à 11:48:03  profilanswer
 

De manière générale, évite les select * :
 
- très souvent, tu récupères des colonnes dont tu n'as aucun besoin
- pour la maintenance, tu ne sais pas explicitement ce que tu récupères


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Problème Jointure SQL

 

Sujets relatifs
Problème PL/SQL Si tuple déjà dans la baseProblème qualité player
probleme de bdd OVH aprés installation wordpressProbleme pour faire sortir mon menu déroulant sur la droite
Probleme d'espace autour des images dans tableau[SAGE 100 SQL] Job SQL Agent de MAJ Lignes de devis
probléme avec ma page d'index[SQL]Problème requête simple: jointure externe
Raaah le SQL... Probleme de jointure[SQL] Problème de jointure
Plus de sujets relatifs à : Problème Jointure SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR