[resolu] trier un tableau et faire un fichier xml

trier un tableau et faire un fichier xml [resolu] - PHP - Programmation

Marsh Posté le 20-02-2009 à 04:36:00    

bonjour
 
je suis sous php4 et je récupère les datas de ma base de la façon suivante et je l'est met dans un tableau
 

Code :
  1. while($data_randonneur = mysql_fetch_assoc($aff_randonneur)) { $tablo_randonneur[]=$data_randonneur; }


 
une fois les datas récupérés je créer un fichier XML qui contient la ligne suivante

Code :
  1. $xml .= "\t<marker lat=\"".$row["LAT"]."\" lng=\"".$row["LNG"]."\" html=\"".$row["VILLE"]." ".$row["NOM_PRENOM"]."\" label=\"".$row["VILLE"]."\" />\n";


 
seulement le hic c'est qu'il peut avoir plusieurs randonneur dans la même ville
 
comment formater le code pour avoir la concaténation du NOM_PRENOM dans la balise html et que la VILLE soit répéter qu'une seul fois
 
Le resultat du code qui sort actuellement

Code :
  1. <markers>
  2. <marker lat="-21.34088" lng="055.47374" html="97410 St Pierre - Dupont" label="97410 St Pierre" />
  3. <marker lat="-20.92651" lng="055.34162" html="97419 La Possession - Martine" label="97419 La Possession" />
  4. <marker lat="-21.05180" lng="055.22359" html="97434 St Gilles Les Bains - Henri" label="97434 St Gilles Les Bains" />
  5. <marker lat="-21.04800" lng="055.26757" html="97435 St Gilles Les Hauts - Jacques" label="97435 St Gilles Les Hauts" />
  6. <marker lat="-21.04800" lng="055.26757" html="97435 St Gilles Les Hauts - Gilles" label="97435 St Gilles Les Hauts" />
  7. </markers>


 
code de sortie souhaité

Code :
  1. <markers>
  2. <marker lat="-21.34088" lng="055.47374" html="97410 St Pierre - Dupont" label="97410 St Pierre" />
  3. <marker lat="-20.92651" lng="055.34162" html="97419 La Possession - Martine" label="97419 La Possession" />
  4. <marker lat="-21.05180" lng="055.22359" html="97434 St Gilles Les Bains - Henri" label="97434 St Gilles Les Bains" />
  5. <marker lat="-21.04800" lng="055.26757" html="97435 St Gilles Les Hauts - Jacques - Gilles" label="97435 St Gilles Les Hauts" />
  6. </markers>


 
merci d'avance de votre aide a+ gilles


Message édité par gilles974 le 20-02-2009 à 06:51:14
Reply

Marsh Posté le 20-02-2009 à 04:36:00   

Reply

Marsh Posté le 20-02-2009 à 05:28:30    

Un truc du genre ?
 

Code :
  1. $ville  = '';
  2. while($row = mysql_fetch_assoc($aff_randonneur))
  3. {
  4.    if($row["VILLE"] != $ville) // si c'est une nouvelle ville
  5.    {
  6.         if($ville)
  7.         {
  8.             $xml = $debut.$prenoms.$fin;
  9.         }
  10.         $debut = "\t<marker lat=\"".$row["LAT"]."\" lng=\"".$row["LNG"]."\" html=\"".$row["VILLE"]." ";
  11.         $fin = " label=\"".$row["VILLE"]."\" />\n";
  12.         $prenoms = $row["NOM_PRENOM"];
  13.         $ville = $row["VILLE"];
  14.    }
  15.    else
  16.    {
  17.        $prenoms.= " - ".$row["NOM_PRENOM"];
  18.    }
  19. }
  20. $xml = $debut.$prenoms.$fin;



---------------
oui oui
Reply

Marsh Posté le 20-02-2009 à 06:50:08    

merci à toi art_dupond
 
ça marche impec j'avais oublier de déclarer une variable vide $ville  = '';
 
j'ai fait la detection sur le champs ID_VILLE  
 
code complet et fonctionnel

Code :
  1. <?php
  2. // creation du fichier XML
  3. $xml = "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
  4. $xml .= "<markers>\n";   
  5. $sql="SELECT VILLES_REUNION.VILLE, RANDONNEUR.ID_VILLE, RANDONNEUR.NOM_PRENOM, VILLES_REUNION.LAT, VILLES_REUNION.LNG ";
  6. $sql.="FROM RANDONNEUR LEFT JOIN VILLES_REUNION ON RANDONNEUR.ID_VILLE = VILLES_REUNION.ID_VILLE where LAT != '' order by VILLE";
  7. $aff_randonneur = rando($sql);
  8. $id_ville  = '';
  9. while($row = mysql_fetch_assoc($aff_randonneur))
  10.   {
  11.   if($row["ID_VILLE"] != $id_ville) // si c'est une nouvelle ville
  12.     {
  13.     if($id_ville) { $xml .= $debut.$prenoms.$fin; }
  14.     $debut = "\t<marker lat=\"".$row["LAT"]."\" lng=\"".$row["LNG"]."\" html=\"&lt;b&gt;".$row["VILLE"]."&lt;/b&gt;&lt;br&gt; ";
  15.     $fin = "\" label=\"".$row["VILLE"]."\" />\n";
  16.     $prenoms = $row["NOM_PRENOM"];
  17.     $id_ville = $row["ID_VILLE"];
  18.     }
  19.     else { $prenoms.= " &lt;br&gt; ".$row["NOM_PRENOM"]; }
  20.   }
  21.   $xml .= $debut.$prenoms.$fin;
  22. // édition de la fin du fichier XML
  23. $xml .= "</markers>\n";
  24. // écriture dans le fichier
  25. $fp = fopen("randopei/randonneur.xml", 'w+');
  26. fputs($fp, $xml);
  27. fclose($fp);
  28. ?>


 
a+ et merci encore

Reply

Sujets relatifs:

Leave a Replay

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