Probleme pour générer un xml [Résolu]

Signaler
Messages postés
10
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
8 février 2009
-
scoubydog
Messages postés
10
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
8 février 2009
-
Bonjour à tous, je voudrais savoir comment récupérer en xml toute la liste des images d'une base de donnée en les classant dans leurs albums respectif.
La base de donnée se compose d'une table image, avec un champ id, albumid (pour le numéro de l'album) et nom (pour le nom de l'image)

voila le résultat que j'essaye d'obtenir :
<dossier albumid="2">
 
 
 
</dossier>
<dossier albumid="3">
 
 
</dossier>
...(ainsi de suite pour tous les albums et images)

Pour l'instant j'arrive à récupérer toutes la liste de mes albums avec une première requête :
select DISTINCT albumid from image
Mais lorsque je rajoute une deuxieme requête dans la premiere (pour la liste des images), cela m'affiche des messages d'erreur.

Voici mon code :
<?php
$db_name = "mabase";
$connection = mysql_connect("localhost", "root", "") or die("Connexion impossible.");
$db = mysql_select_db($db_name);

$query = "select DISTINCT albumid from image  ORDER BY albumid";
$query2 = "select * from image ORDER BY albumid";

$result = mysql_query($query, $connection) or die("Impossible d'interroger la base de données");
$result2 = mysql_query($query2, $connection) or die("Impossible d'interroger la base de données");
$num = mysql_num_rows($result);

 $file= fopen("results3.xml", "w");
 $_xml ="<?xml version="1.0" encoding="UTF-8" ?>\r\n";
 
 if ($num != 0) {
 
/////////ma premiere boucle pour la liste d'album
 while ($a = mysql_fetch_array($result)) {
{$_xml .="   <dossier albumid="" . $a["albumid"] . ""/>

///////// la ou devrait etre normalement ma deuxieme boucle pour la liste d'image de cette album
while ($b = mysql_fetch_array($result2))
 {if ($b["albumid"]==$a["albumid"]){$_xml .="\r\n";}}
</dossier>\r\n";
}}

 fwrite($file, $_xml);
 fclose($file);
 echo "XML à été écrit.  Voir le XML.";
 } else {
 echo "No Records found";
 }
 ?>

Si il y a une autre solution je suis preneur.

Merci pour votre aide !

3 réponses

Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

Salut,
tu t'y prends mal pour tes deux requêtes, fait plutot un truc du genre

$query = "select albumid from album ORDER BY albumid";
$req = mysql_query($sql);
while($tab = mysql_fetch_array($req)){
    $xml .= $tab['albumid']; //j'ai pas mis les balises xml, c'est juste pour l'exemple
    $query2="select * from image WHERE albumid = '".$tab['albumid']."'";
    $req2 = mysql_query($query2);
    while($tab2 = mysql_fetch_array($req)){
       $xml.= $tab2['imagenom'];
    }
    $xml .= ;
}

Bon en gros c'est le principe, faut juste bien que tu mettes les balises du xml correctement.
Voilou
Messages postés
149
Date d'inscription
lundi 7 février 2005
Statut
Membre
Dernière intervention
6 février 2009

Oups tu feras gaffes, j'aurais du me relire avant.
Ligne 2 c'est mysql_query($query)
Ligne 8 c'est mysql_fetch_array($req2)
Messages postés
10
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
8 février 2009

Ca fonctionne, merci beaucoup.