Probleme pour générer un xml

Résolu
scoubydog Messages postés 10 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 8 février 2009 - 6 janv. 2009 à 12:58
scoubydog Messages postés 10 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 8 février 2009 - 6 janv. 2009 à 15:06
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

krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
6 janv. 2009 à 14:16
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
3
krolenain Messages postés 149 Date d'inscription lundi 7 février 2005 Statut Membre Dernière intervention 6 février 2009 1
6 janv. 2009 à 14:18
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)
3
scoubydog Messages postés 10 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 8 février 2009
6 janv. 2009 à 15:06
Ca fonctionne, merci beaucoup.
0
Rejoignez-nous