Ecrire dans mon fichier XML

Résolu
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009 - 15 janv. 2008 à 18:55
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009 - 17 janv. 2008 à 10:30
Bonjour,

Voila je vous expose ma demande. J'ai un fichier XML qui gère mon diaporama FLASH. J'aimerais grace a php mettre ce fichier à jour. Il y a une partie pour la config et une partie pour les photos.

<?xml version="1.0"?>



J'aimerais que quand je met les options à jour il n'y a que la partie jusqu'a  de qui soit remplacée et quand je met la partie photo à jour il n'y a que la partie qui soit remplacée.

Faisable ? Quelle solution ?

Merci

18 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 janv. 2008 à 07:14
Hello,

ben si, c'est du xml, on peut très bien via l'extension DOM par exemple.
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 07:36
tu stockes dans une variable ( $truc .= ) au lieu de faire un echo et ensuite,, tout à la fin, tu sauves cette variable dans un fichier.
http://ch2.php.net/fwrite

*****
noisy communication - wherever, be everywhere!
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 09:18
excuse moi de dire ça, mais tu es u npeu désespérant... essaie de réfléchir un petit peu avant de poser ce genre de questions!

$image_xml =  '';

while ($scan = readdir($dir)) {

if(is_file($rep."/".$scan)) {

$ext = strtolower(substr($scan, strrpos($scan, '.') + 1));if (($ext "jpg") || ($ext "jpeg") || ($ext == "gif") || ($ext == "bmp") || ($ext == "png")) {

$image_xml .= "";        
  }
 }
}

*****
noisy communication - wherever, be everywhere!
3
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
17 janv. 2008 à 09:31
$x .= $y est un raccourci pour dire $x = $x+$y.
Visiblement, tu as ton error_reporting avec les notices, du coup si tu ne déclares pas la variable, il bloque et il faut donc effectivement commencer par la déclarer, vide.

*****
noisy communication - wherever, be everywhere!
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
15 janv. 2008 à 21:46
Tu ne peux pas modifier juste une partie d'un fichier, il te faut utiliser une astuce.

L'idée:

$content = file_get_contents('nom_de_ton_xml');
$new_param = 'noisy communication - wherever, be everywhere!
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
15 janv. 2008 à 21:47
$text c'est $new_param et $filename c'est "nom_de_ton_xml" dans mon bout de code

*****
noisy communication - wherever, be everywhere!
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 janv. 2008 à 08:47
ah ben effectivement... j'ai tellement pas l'habitude des fichiers XML que je pense jamais à ça ...

Malalam, t'aurais une seconde? http://www.phpcs.com/infomsg_CACHE-OB_START-AJAX_1060501.aspx

*****
noisy communication - wherever, be everywhere!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 janv. 2008 à 08:55
En fait, Malik, j'ai lu ton post déjà. Mais il faut que je teste et ça, je n'ai pas eu le temps. Je ne me suis jamais penché sur ce problème donc je ne peux pas te dire quoi que ce soit comme ça, de but en blanc :-)
Mais j'y pensais! Je comptais bien tester ton idée :-)
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
16 janv. 2008 à 12:42
OK merci mais c'est quoi DOM ?
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 janv. 2008 à 12:48
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 janv. 2008 à 13:16
Tu récupères comme tu l'entends tes nouveaux attributs... dans mon petit exemple ils sont stockés dans un tableau $attributs:

$filename = 'fichier.xml';
$xmlDoc = new DomDocument();
$xmlDoc->load($filename);

$album = $xmlDoc->getElementsByTagName('album');
// NOUVEAUX ATTRIBUTS
$album->item(0)->setAttribute('showbuttons', $attributs['showbuttons']);
$album->item(0)->setAttribute('showtitles', $attributs['showtitles']);
... etc ...
$album->item(0)->setAttribute('speed',$attributs['speed']);

$xmlDoc->save($filename);

*****
noisy communication - wherever, be everywhere!
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
16 janv. 2008 à 14:05
Bon voila j'ai un message d'erreur: Parse error: parse error, unexpected T_OBJECT_OPERATOR in /mnt/www/*******.com/www/administration/gestion_photo.php on line 713

ligne 713: $album->item(0)->setAttribute('showbuttons', $showbuttons);
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
16 janv. 2008 à 14:13
T'as forcément fait une erreur quelque part, genre en déclarant $album

*****
noisy communication - wherever, be everywhere!
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
16 janv. 2008 à 14:36
Je ne comprends pas ce qui se passe .....
$album = $xmlDoc->getElementsByTagName('album');
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
16 janv. 2008 à 20:54
Apparement DOMXML n'est pas activé chez mon hébergeur !!!

Sinon je passe par une écriture de fichier. J'aimerais juste savoir comment récupérer tous les résultats de ce code pour les écrire dans mon fichier:

$rep = "../images/diaporama/thumbs/";
$dir = opendir($rep);


while ($scan = readdir($dir)) {


if(is_file($rep."/".$scan)) {


$ext = strtolower(substr($scan, strrpos($scan, '.') + 1));if (($ext "jpg") || ($ext "jpeg") || ($ext == "gif") || ($ext == "bmp") || ($ext == "png")) {


echo "";        
  }
 }
}
  
closedir($dir);

Là il y a une boucle et on affiche les résultat avec echo moi j'aimerais les écrire dans mon fichier
avec:

fputs($fichier, $contenu_xml.$image_xml.$end_xml);

@+
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
17 janv. 2008 à 09:15
Sinon si je fais comme tu écrits : $image_xml .= il me dit variable non défini ($image_xml) et si j'enlève le '.' avant le '=' il ne me retourne que un résultat dans mon xml.   
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
17 janv. 2008 à 09:28
Ok très bien celà fonctionne correctement à présent. Si je comprends bien il faut d'abord déclarer la variable vide ?

De là venait l'erreur ?
0
LiTtLeBuBu Messages postés 50 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 10 février 2009
17 janv. 2008 à 10:30
OK merci. Sinon pour faire partager le script:

<?php

$xmlfile = '../images/diaporama/dewslider.xml';

$showbuttons = $_POST['showbuttons'];
   $randomstart = $_POST['randomstart'];
      $timer = $_POST['timer'];
         $transition = $_POST['transition'];

$contenu_xml = '<?xml version="1.0"?>
';


$rep = '../images/';
   $dir = opendir($rep);


$image_xml =  '';


while ($scan = readdir($dir)) {


if(is_file($rep."/".$scan)) {


$ext = strtolower(substr($scan, strrpos($scan, '.') + 1));if (($ext "jpg") || ($ext "jpeg") || ($ext == "JPG") || ($ext == "JPEG") || ($ext == "gif") || ($ext== "bmp") || ($ext == "png")) {


$image_xml .= ''."\n";     
        }
    }
}  
closedir($dir);


$end_xml = '';


if (file_exists($xmlfile))
 {
$fichier = fopen($xmlfile,'w+');
fputs($fichier, $contenu_xml.$image_xml.$end_xml);
fclose($fichier);
}


mysql_query("UPDATE slider SET showbuttons ='$showbuttons', randomstart ='$randomstart', timer ='$timer', transition ='$transition'") or die ("Impossible de mettre à jour table_slider");

?>

Ceci pour enregistrer la modif des paramètres. Sinon quand j'ajoute ou supprime une photo je fais pareil mais en récuperant la configuration dans la table MySQL

@+ et encore merci
0
Rejoignez-nous