function modifxml($nomphoto,$date,$evenement,$personnage,$fichier_xml)
{
$modif = new DomDocument;
//Permet de créer les différents noeud pour les nouvelles photo.
$newphoto = $modif->createElement('photo');
$newnom = $modif->createElement('nom',$nomphoto);
$newdescription = $modif->createElement('description');
$newdate = $modif->createElement('date',$date);
$newevenement = $modif->createElement('evenement',$evenement);
$newprotagoniste = $modif->createElement('protagoniste');
//Boucle permettant l'ajout de plusieurs personnage.
foreach($personnage as $element)
{
$newpersonnage = $modif->createElement('personnage',$element);
$newprotagoniste->appendChild($newpersonnage);
}
//Permet d'ajouter les nouveau fils à la fin des fils.
//$galerie->appendChild($newphoto);
$newphoto->appendChild($newnom);
$newphoto->appendChild($newdescription);
$newdescription->appendChild($newdate);
$newdescription->appendChild($newevenement);
$newdescription->appendChild($newprotagoniste);
//creation obj DOM
$doc = new DOMDocument;
//charge fichier xml d'origine
$doc->load($fichier_xml);
//creation obj DOM xpath
$doc_xpath = new DOMXPath($doc);
//recherche par xpath du noeud a supprimer (normalement une seule reponse)
$entries=$doc_xpath->query('photo[nom="'.$nomphoto.'"]');
//on selectionne la reponse
$oldnode=$entries->item(0);
// Load the $parent document fragment into the current document
$newnode = $doc->importNode($modif->documentElement, true);
Je pense que le mieux c'est de mettre tous les prénoms en majuscules ou en minuscules, voire en minuscules avec la première lettre en majuscule.
Donc tu mets juste avant le "sort" :
foreach($array_unique as galerie) {
$nouveau_tableau[] = ucfirst(strtolower($galerie));
}
Fais gaffe le tableau s'appelle maintenant $nouveau_tableau.
Fais gaffe aussi aux accents, ils ne seront pas forcément mis en majuscules (ca dépend du serveur).
Bon c'est un peu bourrin comme facon mais je viens de me lever et je vois pas d'autres facons.
il serait bon que tu précises ce qui ne marche pas, ce qu'il se passe à la place, et la portin de code incréminée.
Parce que là...je ne vois rien d'anormal.
Si je me trompe pas il faut ca pour voir ce que renvoie documentElement si oui bas il renvoie rien et je voie pas poukoi.
$modif = new DomDocument;
//Permet de créer les différents noeud pour les nouvelles photo.
$newphoto = $modif->createElement('photo');
$newnom = $modif->createElement('nom','grenou.jpg');
$newdescription = $modif->createElement('description');
$newdate = $modif->createElement('date','12/05/2006');
$newevenement = $modif->createElement('evenement','Vacance');
$newprotagoniste = $modif->createElement('protagoniste');
//Boucle permettant l'ajout de plusieurs personnage.
foreach($perso as $element)
{
$newpersonnage = $modif->createElement('personnage',$element);
$newprotagoniste->appendChild($newpersonnage);
}
//Permet d'ajouter les nouveau fils à la fin des fils.
//$galerie->appendChild($newphoto);
$newphoto->appendChild($newnom);
$newphoto->appendChild($newdescription);
$newdescription->appendChild($newdate);
$newdescription->appendChild($newevenement);
$newdescription->appendChild($newprotagoniste);
Tu te trompes...
documentElement renvoie un élément.
On ne lit pas un élémentcomme ça.
Ceci dit, je me rends compte d'un coup :
si j'ai bien pigé, tu veux importer le document à partir du noeud racine "photo".
Bref, c'est le DOMNode photo que tu dois donner.
documentElement renvoie un type DOMElement!
importNode () attend un type DOMNode!
ce qui est très différent...
Si jai bien compris ce que tu me dis c'est que DOMNode->replaceChild() ne serait pas compatible avec DOMDocument->importNode(). Si c'est bien cela je comprend pas comment passé outre ce probléme car en faite ma fonction doit pouvoir modifier ce que contient les balise photos.
Si tu pouvais eclairer ma lenterne je t'en remerci car la je patoge merci a toi.
Juste pour dire que j'ai fini par trouver mon erreur qui était enfin de compte trés bête car je faisait pas d'appenchild pour la balise photo voila tou sinon merci a toi et aussi jai encore une question si ca te derange pas.
Car voila jai une select box qui est alimenté par un foreach avec une requete xpath mais j'aimerai pouvoir classer les élément dans la select box par ordre alphabétique aurais tu une idée pour faire cela merci a toi.
Sauf que dans mon foreach j'utiliser la fonction array_unique et quand je surcharge en + avec un sort ca marche pas serais tu pourquoi merci a toi
//Boucle permettant de récupérer toutes les personnes.
foreach(array_unique($xml->xpath('//photo/description/protagoniste/personnage')) as $galerie)
{
echo '<option value="'.$galerie.'">'.$galerie.'</option>'."\n";
}
Heu...
sort renvoie un booleen. Si tu fais ça, tu vas te retrouver avec un $array_unique qui vaut true. Bref, une variable de type booléen, et plus de type array. Et le foreach va planter.
Ensuite, pourquoi un array_unique () ? On a besoin de ttes les entrées renvoyées par le XPath.
J'ai essayé ta méthode est c'est vrai que ca marche pas sinon j'uitlise un array_unique car comme je remplis mon select avec des prenoms et comme parfois des prenom se répété je veux pas qu'il s'affiche plusieurs fois sinon pas une autre idée pour mon probléme merci a vous .
Ca classe bien sauf que quand il rencontre un prenom en majuscule il le classe bien et que en miniscule il le classe mal, serais tu pourquoi merci a toi
Vi c vrai que c'est un peut bourrin mais pour l'instant je me la met de coté et je vais chercher si y a pas un moyen plus souple pour faire cela merci a toi, tu m'as bien aidé et merci aussi a malalam.