Insertion de données dans le fichier XML avec PHP DOM
J'ai essayé d'insérer de nouvelles données dans un fichier XML existant, mais cela ne fonctionne pas. Voici mon fichier xml:
<list>
<activity>swimming</activity>
<activity>running</activity>
<list>
Maintenant, mon idée était de créer deux fichiers: une page d'index, où il affiche ce qui est sur le fichier et fournit un champ pour l'insertion de nouveaux éléments, et une page php qui va insérer les données dans le fichier XML. Voici le code pour index.php:
<html>
<head><title>test</title></head>
</head>
<?php
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml', LIBXML_NOBLANKS);
$activities = = $xmldoc->firstChild->firstChild;
if($activities!=null){
while(activities!=null){
echo $activities->textContent.'<br/>';
activities = activities->nextSibling.
}
}
?>
<form name='input' action='insert.php' method='post'>
insert activity:
<input type='text' name='activity'/>
<input type='submit' value='send'/>
</form>
</body>
</html
et voici le code insert.php:
<?php
header('Location:index.php');
$xmldoc = new DOMDocument();
$xmldoc->load('sample.xml');
$newAct = $_POST['activity'];
$root = $xmldoc->firstChild;
$newElement = $xmldoc->createElement('activity');
$root->appendChild($newElement);
$newText = $xmldoc->createTextNode($newAct);
$newElement->appendChild($newText);
$xmldoc->save('sample.xml');
?>
L'utilisateur d'accéder à index.php où il allait voir une liste des activités présentes dans le fichier XML, et un champ de texte ci-dessous où il peut insérer de nouvelles activités. En cliquant sur le bouton envoyer, la page d'appel insert.php qui contient un code qui ouvre le fichier XML dans une arborescence DOM, insère un nouveau nœud sous le nœud racine et appelle de nouveau l'index.php page, où l'utilisateur doit être en mesure de voir la liste des activités, de sa nouvelle activité sous la les autres. Il n'est pas de travail. Quand je clique sur le bouton " soumettre une nouvelle entrée, les pages qui rafraîchit et apparemment rien ne se passe, le XML est le même qu'avant. Qu'ai-je fait de mal? Aussi, j'aimerais savoir si il y a une meilleure façon de le faire.
Vous devez vous connecter pour publier un commentaire.
est votre bloc de code à copier-collé à partir de vos fichiers existants? si donc, je vois deux problèmes potentiels:
remarque: il vous manque
action
="insert.php"
, qui serait la cause de la forme juste de se recharger sans se soumettre, ce qui est le comportement que vous décrivez.deuxièmement, assurez-vous que vous possédez les droits d'écriture "sample.xml". vous pouvez vérifier si vous êtes en train d'écrire quoi que ce soit:
Solution Finale
sample.XML
index.php
insert.php
$newText = $xmldoc->createTextNode($newActv);
Modifier cette ligne
$newText = $xmldoc->createTextNode($newAct);
En fait, vous avez fait des erreurs dans les deux endroits.
Cette ligne doit être
Je pense à cause de la faute de frappe, vous avez raté un signe égal. Aussi
Ces lignes doivent être
Essayez-le maintenant, il doit travailler,
Hop, ce serait de faire un certain sens
c'est le code que j'ai de travailler pour moi.
index.php
sample.xml
Je pense que je sais quel est le problème avec votre code. Vous ne devriez pas écrire comme ça:
<?xml-stylesheet type="text/xsl" href="sample.xsl" ?>
Le bon code est: