Affichage Requête 2 tables

Affichage Requête 2 tables - PHP - Programmation

Marsh Posté le 16-11-2007 à 15:02:35    

Bonjour,
J'essaie de faire un trombinoscope de mon assoc mais je cale sur une requête
 
J'ai deux tables
 
trombi_name
id_name
 nom

 
trombi_experience
 id_experience
 id_name
 annee
 fonction

 

Code :
  1. <?
  2. mysql_connect($server, $user, $pass) or die('Erreur de connexion'); 
  3. mysql_select_db($db) or die('Base inexistante'); 
  4. $sql = "SELECT trombi_name.id_name, trombi_name.nom, trombi_experience.id_experience, trombi_experience.id_name, trombi_experience.anne, trombi_experience.fonction FROM trombi_name, trombi_experience WHERE trombi_name.id_name=trombi_experience.id_name ORDER BY trombi_name.id_name "; 
  5. $result = mysql_query($sql)  or die ('Erreur : '.mysql_error() ); 
  6. while ( $list = mysql_fetch_array( $result ) ) { 
  7. echo '   '.$list['id_name'].' / -  '.$list['nom'].' - '.$list['anne'].' - '.$list['fonction'].' <br> ';
  8. }   
  9. mysql_close(); 
  10. ?>


 
J'obtiens
 
NomA - 1999 - pompier
NomA - 1995 - plombier
NomB - 1995 - ambulancier
 
Mais je voudrais afficher
NomA
- 1999 - pompier
- 1995 - plombier

NomB

1995 - ambulancier
 
Pourriez-vous m'aider à formuler la requête ?
Merci


Message édité par paul5454 le 18-11-2007 à 17:06:19
Reply

Marsh Posté le 16-11-2007 à 15:02:35   

Reply

Marsh Posté le 16-11-2007 à 15:08:42    

Ben la requete est bien, il reste plus que l'affichage...

 

Pour chaque ligne faudrait que tu regardes si le id_name est identique à la ligne précédente, si oui tu n'affiche que l'année et le métier, si non tu affiches en plus un nouveau titre avec le nom.

 

Bien sûr ça nécéssite de mettre tous tes résultats dans un tableau d'abord.

 

Si qqun a mieux :??:


Message édité par theredled le 16-11-2007 à 15:10:26

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 16-11-2007 à 17:59:51    

Merci therEDLED
et une première requête qui selectionne les noms puis une deuxième qui selectionne la date et la fonction occupée triée par nom ?
Dans ce cas comment faire cette double requête ?

Reply

Marsh Posté le 16-11-2007 à 18:26:21    

paul5454 a écrit :

Merci therEDLED
et une première requête qui selectionne les noms puis une deuxième qui selectionne la date et la fonction occupée triée par nom ?
Dans ce cas comment faire cette double requête ?


Ca reviendrais au même en pire.
 
L'autre solution c'est de faire une requete pour la liste de noms, puis une requète pour chaque nom, c'est plus facile à faire mais c'est pas très propre...


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
Reply

Marsh Posté le 18-11-2007 à 13:11:59    

j'ai trouvé après quelques jours, j'aurai aimé passé moins de temps mais bon... par acquis de conscience je poste la réponse qui permettra certainement à d'autres d'aller plus vite
 

Code :
  1. <?
  2. mysql_connect($server, $user, $pass) or die('Erreur de connexion'); 
  3. $resultat = mysql_query ('SELECT trombi_name.id_name AS id_name, nom, annee, fonction FROM trombi_name NATURAL JOIN trombi_experience ORDER BY trombi_name.id_name') OR die(mysql_error()); 
  4. $id_name = 0;
  5. while ($donnees = mysql_fetch_array($resultat))
  6. {
  7.     if ($id_name != $donnees['id_name'])
  8.     {
  9.     echo '<br><br/><strong>'.$donnees['nom'].' <br>';
  10. $id_name = $donnees['id_name'];
  11.     }
  12.     echo '<br/>- '.$donnees['annee'];
  13.     echo '-'.$donnees['fonction'];
  14. }
  15. mysql_close();
  16. ?>?>


Message édité par paul5454 le 18-11-2007 à 17:10:43
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed