[RESOLU] Pb d'affichage avec plusieurs éléments

Pb d'affichage avec plusieurs éléments [RESOLU] - PHP - Programmation

Marsh Posté le 11-04-2005 à 16:51:19    

Salut à tous,  
voila je colle sur un code que je doit faire...
J'ai des éléments dans ma table, qui comportent des données différentes comme le nom de la personne, le sexe, etc, mais j'ai des éléments qui sont identiques (comme par exemple la date de naissance).. Ce que je veux faire c'est faire afficher tout ce qu'il y à dans ma table, mais en regroupant les éléments dont la date correspond...
JE vous explique avec un exemple :  
 
Marcel ::: Né le 08 nov :: A reims
René ::: Né le 12 mars :: à Paris
Philippe ::: Né le 16 juin :: A perpignan
Louis ::: Né le 08 nov :: A calais
Jean ::: Né le 12 mars :: Au touquet
Robert ::: Né le 08 nov :: A Paris
 
Ce que je ve, c'est un affichage d'un tableau affichant :  
 
Né le 08 nov : Marcel, Louis, Robert ::> voir leur descriptions
Né le 12 Mars : René, Jean ::> Voir leur descriptions
Né le 16 juin : Philippe ::> Voir sa description
 
En fait je colle pour réunir tous les éléments et les faires afficher à la suite, si quelqu'un peu m'aider, ce serait vraiment gentil à vous, j'ai juste besoin de la requete ou du moyen d'afficher ça en if(plusieurs date sont identique){ alors on affiche tous les prenom }
J'espère que c'est possible :) MERCI !!
 
PS : c'est une sorte de requete multiple ou i lfaudrai que je selection déjà la date, après suivant la date les gusses, mais je voi pas comment... HELP, merci a tous


Message édité par micfont999 le 13-04-2005 à 16:30:06

---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 16:51:19   

Reply

Marsh Posté le 11-04-2005 à 17:07:39    

un truc simple sans passer par sql : tu stockes tes résultats dans un tableau associatif qui aura comme clés les dates de naissances.
=> pour chaque enregistrement tu fais un truc du genre :

Code :
  1. $data[$date][]=$row;

Reply

Marsh Posté le 11-04-2005 à 17:08:42    

Kikou c encore moi, si au moins vous pouviez m'aider pour annuler les différents doublons, par exemple faire une première requete pour avoir toutes les dates :: je supprime celles qui sont en plusieurs pour n'en avoir qu'une et après je refait une autre requete pour me trouver les noms des gusses suivant la date que j'ai obtenu, je ne voit vraiment pas comment faire,  
j'ai un SELECT * FROM tbl_nom ORBER BY date_naissance
Il faudrai que j'arrive à analyser tout, et que ma variable $date=une première date et ainsi faire ma seconde requete SELECT * FROM tbl_nom WHERE date_naissance=$result->$date ..
PLEASE HELP ME.
merci de tt coeur


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:11:08    

soju a écrit :

un truc simple sans passer par sql : tu stockes tes résultats dans un tableau associatif qui aura comme clés les dates de naissances.
=> pour chaque enregistrement tu fais un truc du genre :

Code :
  1. $data[$date][]=$row;



 
 :)  Et une fois que j'ai ça, j'en fé quoi?? Désolé je me débrouille d'habitude en php, mais la, ça coince, il va me détecter toutes les dates une par une? Le $row fait quoi??


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:13:11    

donc tu vas faire autant de requetes qu'il y a de dates... pas tres efficace...
regarde la solution que je te propose plus haut, c'est plus simple.
 
PS: DISTINCT tu connais en sql ?

Reply

Marsh Posté le 11-04-2005 à 17:20:57    

Non connais pas DISTINCT c'est quoi?
En fait je la comprend pas ta solution, après avoir fait ma requete SELECT * FROM ... je fais donc mon mysql_query et... la je voi pas, ta solution elle fait quoi??


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:26:29    

bon, un autre exemple plus parlant :
 

Code :
  1. $data = array();
  2. $result = mysql_query('SELECT date, nom FROM personnes ORDER BY date');
  3. while ($row=mysql_fetch_assoc($result))
  4. {
  5.   $data[$row['date']][] = $row['nom'];
  6. }


tu auras donc dans $data toutes les personnes regroupées par date de naissance
 
PS: distinct c'est pour virer les doublons...


Message édité par soju le 11-04-2005 à 17:27:09
Reply

Marsh Posté le 11-04-2005 à 17:28:09    

j'essai ça de suite ^^ Merki !! Je te dit quoi


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:31:15    

Rahh il ne me retourne rien... Dsl... JE voi bien coment ça marche la c'est bon, j'ai il ne me met aucune valeur... Rohh bon on va y arriver oui !!


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:41:07    

Si je fait un  
echo"$row[date_naissance]<br>";
echo"$row[nom]<br>";
Il me met les champs, jusque la rien de bien sorcier ça marche
En revanche si je met  
echo"$row[date_naissance]<br>";
echo"$row[nom]<br>";
 
alors la :  
Notice: Use of undefined constant nom - assumed 'nom' in c:\program files\easyphp1-8\www\scyrendale\espace_prive\gestion_naissance\module_gestion_naissance.php on line 17
Array
Notice: Use of undefined constant date_naissance - assumed 'date_naissance' in c:\program files\easyphp1-8\www\scyrendale\espace_prive\gestion_naissance\module_gestion_naissance.php on line 17
 
Il m'affiche cette erreur et le array... ça veut dire quoi, qu'il ne trouve pas la relation??


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 11-04-2005 à 17:41:07   

Reply

Marsh Posté le 11-04-2005 à 17:42:17    

Oups je voulais dire, en revanche si je met  
$data[$row[date_naissance]][] = $row[nom_chien];
echo"$data";  
DSL erreur de ctrl C ctrl V :$


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 09:01:23    

tu as mal compris, il faut que tu affiches $data à la fin, de plus $data est un array donc pas de echo...
donc recapitulons, à la fin tu fais par exemple :

Code :
  1. foreach($data as $date=>$personnes)
  2. {
  3.   echo $date.' : '.implode(', ', $personnes).'<br />';
  4. }

Reply

Marsh Posté le 12-04-2005 à 09:20:35    

soju a écrit :

tu as mal compris, il faut que tu affiches $data à la fin, de plus $data est un array donc pas de echo...
donc recapitulons, à la fin tu fais par exemple :

Code :
  1. foreach($data as $date=>$personnes)
  2. {
  3.   echo $date.' : '.implode(', ', $personnes).'<br />';
  4. }



 
Kikou, merci encore pour tes réponses, et désolé de pas toujours tout comprendre, j'ai encore un peu de mal lorsque ce n'est pas des trucs tout simple avec une requete le résultat et on affiche  :D  quelques fois un piti eregi et c'est tout.... :sarcastic:  juste une toute petite question encore, ton $date et $personne correspondent aux données de la base, il fo que je fasse un truc du style $date=$row['date'] ??? Merci pour toute vos réponses encore  :jap:


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 09:48:26    

Alors voila, la ça marche, voici mon code  

Code :
  1. $cx=mysql_connect("$host","$user","$pass" );
  2. $base=mysql_select_db("$bdd" );
  3. $data = array();
  4. $result = mysql_query('SELECT * FROM tbl_perso ORDER BY date_naissance');
  5. while ($row=mysql_fetch_assoc($result))
  6. {
  7. $date=$row['date_naissance'];
  8. $nom=$row['nom'];
  9. $data[$row['date_naissance']][] = $row['nom'];
  10. foreach($data as $date=>$nom)
  11. {
  12.   echo $date.' : '.implode(', ', $nom).'<br />';
  13. }
  14. echo"<br> -----------<br>";
  15. }


 
Il m'affiche les différents résultats mais suivant le while, hors moi il me faudrai juste la dernière valeur :: Je vous montre le résultat :
 
02-02-2005 : Paul
 
-----------
02-02-2005 : Paul
02-05-2005 : Jean
 
-----------
02-02-2005 : Paul
02-05-2005 : Jean
05-05-2005 : Jacques
 
-----------
02-02-2005 : Paul
02-05-2005 : Jean
05-05-2005 : Jacques, René
 
-----------
02-02-2005 : Paul
02-05-2005 : Jean
05-05-2005 : Jacques, René, Pierre
 
... etc, etc, etc
et à la dernière ligne  
 
-----------
02-02-2005 : Paul
02-05-2005 : Jean
05-05-2005 : Jacques, René, Pierre, Alex, Emilie
07-05-2004 : Ambroise, Ginnette, Sandrine
09-04-2005 : Emilie, Michel
10-03-2005 : Essai 01, Essai 02
 
-----------
 
 :??:  :??:  :??: Comment faire pour limiter le résultat à la dernière ligne au juste? Je suis paumé, si quelqu'un pouvais juste me donner ce tri... MERKI !!  :hello:  ;) (Je sens que ça va me servir ce petit code....) :ange:  


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 09:48:37    

micfont999 a écrit :

ton $date et $personne correspondent aux données de la base, il fo que je fasse un truc du style $date=$row['date']

non, regarde bien le foreach...
je recapitule :

Code :
  1. $data = array();
  2. $result = mysql_query('SELECT * FROM tbl_perso ORDER BY date_naissance');
  3. while ($row=mysql_fetch_assoc($result))
  4. {
  5.   if (!isset($data[$row['date_naissance']])) $data[$row['date_naissance']]=array();
  6.   $data[$row['date_naissance']][] = $row['nom'];
  7. }
  8. foreach($data as $date=>$personnes)
  9. {
  10.   echo $date.' : '.implode(', ', $personnes).'<br />';
  11. }


 
EDIT: j'avais dit de mettre le foreach a la fin


Message édité par soju le 12-04-2005 à 09:52:45
Reply

Marsh Posté le 12-04-2005 à 10:09:33    

soju a écrit :

non, regarde bien le foreach...
je recapitule :

Code :
  1. $data = array();
  2. $result = mysql_query('SELECT * FROM tbl_perso ORDER BY date_naissance');
  3. while ($row=mysql_fetch_assoc($result))
  4. {
  5.   if (!isset($data[$row['date_naissance']])) $data[$row['date_naissance']]=array();
  6.   $data[$row['date_naissance']][] = $row['nom'];
  7. }
  8. foreach($data as $date=>$personnes)
  9. {
  10.   echo $date.' : '.implode(', ', $personnes).'<br />';
  11. }


 
EDIT: j'avais dit de mettre le foreach a la fin


 
 
 :ouch:  :ouch:  :wahoo:  ça marche !!!! MERKI !!  :pt1cable:  
Par contre je comprend pas comment les variables $date et $personnes font pour prendre une valeur... Je vais essayer de bidouiller tt ça pour essayer de comprendre un peu, parce que la je pige pas tout, si par exemple je veux rajouter le sexe de la personne, alors la ??? lol j'en sais pas plus, en tout cas merci, et puis si ta 5 minutes pour m'expliquer comment ça fonctionne ces bêtes j'en serais ravi, mais la tu m'a déjà carement bien aidé !!!  :love:  MERCI vraiment  :whistle:  


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 10:47:25    

QUESTION :::  
peut on mettre dans un foreach() plusieurs conditions :
Par exemple, si après le nom de la personne, je veux aussi avoir son sexe, j'arrive à l'afficher dans un deuxième foreach() mais pas dans le premier à la suite des prenoms des personnes, ou ne serait ce même que pour avoir le nom et le prénom à la suite, chose toute bête, comment faire?  
 
Voila le code  

Code :
  1. $data = array();
  2. $result = mysql_query('SELECT * FROM tbl_perso ORDER BY date_naissance');
  3. while ($row=mysql_fetch_assoc($result))
  4. {
  5.   if (!isset($data[$row['date_naissance']])) $data[$row['date_naissance']]=array();
  6.   $data[$row['date_naissance']][] = $row['nom'];
  7.   $data02[$row['date_naissance']][] = $row['sexe'];
  8. }
  9. foreach($data as $date=>$nom AND $data02 as $date=>$sexe) [#ff2a00]// pb à cette ligne je pense
  10. {
  11.   echo $date.' : '.implode(', ', $nom;',',$sexe).'<br />'; [#ff2a00]// je pense que cette ligne est completement foireuse aussi
  12. }


 
et bien sur la petite erreur ::  :pfff:  
Parse error: parse error, expecting `')'' in c:\program files\easyphp1-8\www\scyrendale\espace_prive\gestion_naissance\module_gestion_naissance.php on line 50
 
lol, je tente des choses on sais jamais, sur nexen j'ai regardé un peu comment fonctionne les différentes requetes et je pense que ce que j'ai fais est completement impossible mais j'aimerais savoir un peu comment faire, si vous avez une idée, ou si c'est impossible, faites le moi savoir  :sweat:  :sweat: merci d'avance


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 11:02:51    

hou là... regarde la doc de foreach : http://fr.php.net/foreach
et reapprend un peu le php, là c'est n'importe quoi...
 
encore un exemple :

Code :
  1. $data = array();
  2. $result = mysql_query('SELECT * FROM tbl_perso ORDER BY date_naissance');
  3. while ($row=mysql_fetch_assoc($result))
  4. {
  5.   if (!isset($data[$row['date_naissance']])) $data[$row['date_naissance']]=array();
  6.   $data[$row['date_naissance']][] = $row['nom'].' ('.$row['sexe'].')';
  7. }
  8. foreach($data as $date=>$personnes)
  9. {
  10.   echo $date.' : '.implode(', ', $personnes).'<br />';
  11. }


 

Reply

Marsh Posté le 12-04-2005 à 11:08:21    

A la la la la, comment t une star, pfff et moi c vrai que je suis vraiment mauvais, bon bah j'ai plus qu'a aller me recoucher, mdr... Je te remercie soju, je pense que je viens d'apprendre plus de choses en deux jours, que en deux en à l'iut, sympa à toi d'avoir pris le temps de me montrer tout cela... quand même c'est beau la technologie et tout ce qu'on peut faire avoir tout ça...
Encore MERCI de tout coeur, et je reviens vous voir si j'ai un autre bug, mais la je pense que j'ai tout ce qu'il me faut... Enfin j'espère :: Merci encore.. !!! :D


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 15:22:03    

Encore une pitite question, je n'arrive pas à passer un parametre dans le lien que je fais afficher à coté de mes données, je veux lui passer le paramètre du nom du mec mais j'ai un beug... VOila la synthaxe :  
 
 
$dateget=$row['date_naissance'];
 
  if (!isset($data[$row['date_naissance']]))  
 $data[$row['date_naissance']]=array();  
   $data[$row['date_naissance']][] = '...prenom : '.$row['prenom'].' ('.$row['sexe'].') ... => <a href=naissance.php?date=$dateget>Voir la naissance</a> <br>';
}  
foreach($data as $date=>$personnes)  
{  
   echo '<b> >> </b> A la date du '.$date.': <br>  '.implode('', $personnes).'<br />';
}
 
Il ne veut pas prendre en compte mon nom... Pourquoi??  
merci encore pour toutes vos réponses et surtout toi soju :D
Merci


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le 12-04-2005 à 17:02:18    

micfont999 a écrit :

je veux lui passer le paramètre du nom du mec mais j'ai un beug

dans ton code le seul parametre que tu passes c'est $dateget, je ne vois nul part de nom

Reply

Marsh Posté le 12-04-2005 à 17:04:36    

kikou, non c bon j'ai trouver, tien voila la bonne requete,
 
$data[$row['date_naissance']][] = '...prenom : '.$row['prenom'].' ('.$row['sexe'].') ... => <a href=naissance.php?date='.$dateget.'&pere='.$nomprget.'&mere='.$nommrget.'> Voir la naissance</a> <br>';
 
C'est au niveau du '.$dateget.' que j'avai oublié les '' et les .  
Merci maintenant c'est vraiment bon tout marche nikel.. ;) C'est tout ce qu'il me fallait !!
Encore merci ;)


---------------
> http://graphicriver.net/user/micfo [...] micfont999  
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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