je m’arrache les cheveux sur un problème d'incrémentation xml via php.
Concrètement, via un formulaire, je veux écrire dans un fichier xml, après avoir stocké différentes variables dans une bdd. jusque là, rien de (trop) compliqué...
Le problème est que ces variable sont organisées selon une hierarchie bien précise, car le fichier xml en question alimente une galerie photo, dont les photos sont regroupées par année (en fait, par catégorie).
Mon formulaire permet, après avoir choisi quelle galerie, puis quelle catégorie, d'uploader une photo, et le but est qu'elle soit rangée dans la bonne catégorie. dans la bdd, tout est ok.
Le problème arrive quand je dois écrire dans le xml.
pour info, la structure est la suivante :
<gallery title="galerie_test" thumbDir="./images/thumbs/" imageDir="./images/" random="false">
<category name="2012">
<image>
<date>2012</date>
<title>test avec accents ééé</title>
<desc>Operation : test avec accents ééé
Description : test avec accents ééé
Photographe - test avec accents ééé
annee : test avec accents ééé
</desc>
<thumb>03_2012toit.jpg</thumb>
<img>03_2012toit.jpg</img>
</image>
<image>
<date>2012</date>
<title>test avec accents ééé</title>
<desc>Operation : test avec accents ééé
Description : test avec accents ééé
Photographe - test avec accents ééé
annee : test avec accents ééé
</desc>
<thumb>03_2012toit.jpg</thumb>
<img>03_2012toit.jpg</img>
</image>
etc...
</category>
<category name="2012">
<image>
...
</category>
et ainsi de suite.
Tout va très bien quand je reste sur une categorie, j'uploade mes images, ça incremente... mais si je crée une nouvelle categorie, celle ci sera ok, mais quand je reviens sur la précédente et que je tente d'uploader une nouvelle photo, le code me crée une nouvelle categorie...
Je vous joins le bout de code php qui permet d'ecrire dans le xml :
//Ecriture dans le fichier XML
$sql = "SELECT * FROM image WHERE Id_Cat IN (SELECT categorie.Id FROM categorie WHERE categorie.Id_Galerie='$gal') ORDER BY Annee DESC";
$req = mysql_query($sql) or die("mysql connect Failled on : selection de la categorie");
$sql_gal = "SELECT * FROM galerie WHERE Id='$gal'";
$req_gal = mysql_query($sql_gal) or die('Erreur SQL'.mysql_error());
$result_gal = mysql_fetch_array($req_gal);
$nom_galerie = $result_gal['Name'];
$chemin = $result_gal['Chemin'];
$xml = '<gallery title="' . html_entity_decode($nom_galerie) . '" thumbDir="./images/thumbs/" imageDir="./images/" random="false">';
$nom_cat=null;
$i=0;
while ($result=mysql_fetch_array($req)){
$cat_prec=$nom_cat; //Le nom de la catégorie précédente
$id = $result['Id'];
$date = $result['Date'];
$titre = html_entity_decode($result['Titre']);
$operation = $result['Operation'];
$desc = $result['Description'];
$photo = $result['Photographe'];
$annee = $result['Annee'];
$thumb = $result['Thumb'];
$img = $result['Img'];
$idCat = $result['Id_Cat'];
$sql_cat = "SELECT Name FROM categorie WHERE Id='$idCat' GROUP BY Name";
$req_cat = mysql_query($sql_cat) or die('Erreur SQL !<br>'.$sql_cat.'<br>'.mysql_error());
$result_cat=mysql_fetch_array($req_cat);
$nom_cat = $result_cat['Name'];
if($nom_cat != $cat_prec){
if($i==0){ $xml .= '
<category name="'.$nom_cat.'">
' ;
$i = 1;
}
else{
$xml .= '</category>';
$xml .= '
<category name="'.$nom_cat.'">
' ;
}
};
$xml .= '<image>
' ;
$xml .= ' <date>' . $date . '</date>
';
$xml .= ' <title>' . $titre . '</title>
';
$xml .= ' <desc>Operation : ' . $operation . '
Description : ' . $desc . '
Photographe - ' . $photo . '
annee : ' . $annee . '
</desc>
';
$xml .= ' <thumb>' . $thumb . '</thumb>
';
$xml .= ' <img>' . $img . '</img>
';
$xml .= ' </image>
';
}
$xml .= '</category>';
$xml .= '
</gallery>';
Je vous remercie de votre aide, et je suis désolé pour un premier message qu'il soit aussi long...