2 petites questions sur du xml....

knuts
Invité n'ayant pas de compte PHPfrance

11 août 2005, 13:50

Bonjour,


je suis sur un guest book et j'ai 2 petits soucis.... :(

mon fichier XML ressemble à ça :

Code : Tout sélectionner

<guestbook><message id="1"><nom>test </nom><url>bravo</url><email>[email protected]</email><date>05/8/2005</date><texte>Vraiment super votre site, bravo et bonne continuation. Mangez des pommes !</texte></message><message id="2"><nom>Supertomate</nom><url>c moi !</url><email>[email protected]</email><date>07/8/2005</date><texte>Ouaipe po mal....</texte></message></guestbook>
donc en fait j'ai 2 petits problèmes :

1) Je voudrais savoir comment peut- on placer la tête de lecture du fichier xml à la balise du dernier message et qu'elle aille en sens inverse (pour pouvoir commencer du plus récent au plus vieux....) car en ce moment je suis obligé de commencer au message 0 avec ce code :

Code : Tout sélectionner

messCourant=0;

2) Je voulais égalment savoir si l'on peut faire une interface pour effacer les messages que l'on ne veut plus sur le livre d'or sans être obligé d'editer à chaque fois le fichier xml à la main...


Merci pour vos réponses :)


++

Mammouth du PHP | 19672 Messages

11 août 2005, 13:55

Comment génères-tu ton fichier XML à la base ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

knuts
Invité n'ayant pas de compte PHPfrance

11 août 2005, 13:58

avec une interface flash et du code php :

la partie flash :
on (release) {
// On test si les champs sont remplis
if ((Auteur != "") && (URL != "") && (Mail != "") && (Texte != "")) {

// prise en charge de la date
myDate = new Date();
theDate = (mydate.getDate() + "/" + (1 + myDate.getMonth()) + "/" + mydate.getFullYear());

// id du message => nbr. mess +1
id_mess = _parent.tabGuestbook.length+1;

// formation de la chain de charac. correspondant au mess en XML
str ="<message id=\""+id_mess+"\"><nom>"+Auteur+"</nom><url>"+URL+"</url><email>"+Mail+"</email><date>"+TheDate+"</date><texte>"+Texte+"</texte></message>";
// On encode le message en URL afin de passer tout les charac. spéciaux
// sans torp de pb... :-)
NewMess = escape(str);

// On envoit ca au sript PHP avec loadvariable
loadVariablesNum ("guestbook.php", 0, "POST");
gotoAndPlay (5);
}
else {
messErreur = "Merci de remplir tout les champs !";
}
}

et la partie php :

// Fonction pour l'envoi des valeurs à Flash
function Parse($variable,$valeur)
{
echo "&$variable=$valeur";
}
//------------------------------------------
// Fonction pour lire le contenu du fichier dans
// un buffer
function readFileIntoBuffer( $filename )
{
@$fp = fopen( $filename, "r");
if ( $fp )
{
$val = fread( $fp, filesize( $filename ));
fclose( $fp );
return $val;
}
return false;
}
//----------------------------------------------
// Fonction pour écrire $content dans un fichier
function writeFile( $filename,$content )
{
@$fp = fopen( $filename, "w");
if ( $fp )
{
$val = fwrite( $fp, $content);
fclose( $fp );
return 1;
}
return false;
}
//-----------------------------------------------
// On lit le fichier Guest Book
$gbook=readFileIntoBuffer('guestbook.xml');
// On ajoute le dernier message ajouté
$NewMess=urldecode($NewMess);
$gbook=ereg_replace("",$NewMess."",$gbook);
// On ecrit le nouveau guestbook
writeFile('guestbook.xml',$gbook);
// On envoi une var de fin a flash
Parse("op_fin","1");
?>
tu aurais une petite idée...?
n'hésite pas si tu as d'autres questions... :)

Mammouth du PHP | 19672 Messages

11 août 2005, 14:04

Mon idée de base : en fait la technique que j'ai utilisée pour mon propre script de LO à ce détail près que le mien n'utilise ni flash ni XML, mais le principe est exactement le même : des données structurées dans un fichier: pour supprimer un message, je stocke les données dans un tableau associatif en parcourant le fichier: ensuite, dans un formulaire, je sélectionne celui que je veux supprimer qu'on retrouve grâce à un identifiant: je recontrsuis ensuite mon fichier en le ré-écrivant complètement, mais je saute par dessus le message sélectionné quand je rencontre l'identifiant à supprimer.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

knuts
Invité n'ayant pas de compte PHPfrance

11 août 2005, 14:14

lol, c'est vrai que c'est une bonne technique mais pour le faire en xml... :(
déjà que je n'arrive même pas à lire ce fichier xml en partant de la fin et en sens inverse alors...
En tt cas c sympa de ta part de t'être penché sur mon problème !
merci :)


++

Mammouth du PHP | 19672 Messages

11 août 2005, 14:16

Selon la version de PHP utilisée, tu as plusieurs fonctions pour manipulier des fichiers XML
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

knuts
Invité n'ayant pas de compte PHPfrance

11 août 2005, 15:05

je suis un peu perdu là :(