2014-08-29 2 views
0

Je n'arrive pas à obtenir des données spécifiques de mon PHP pour les exporter vers un fichier XML en utilisant mon formulaire web.Enregistrer des données PHP spécifiques au format XML

Qu'est-ce que je fais mal?

<?php 

$ip = $_POST['ip']; 
$httpref = $_POST['httpref']; 
$httpagent = $_POST['httpagent']; 
$visitor = $_POST['visitor']; 
$visitormail = $_POST['visitormail']; 
$notes = $_POST['notes']; 
$attn = $_POST['attn']; 

if(!$visitormail == "" && (!strstr($visitormail,"@") || !strstr($visitormail,"."))) 
{ 
echo "<h2>Use Back - Enter valid e-mail</h2>\n"; 
$badinput = "<h2>Feedback was NOT submitted</h2>\n"; 
echo $badinput; 
die ("Go back! ! "); 
} 

if(empty($visitor) || empty($visitormail) || empty($notes)) { 
echo "<h2>Use Back - fill in all fields</h2>\n"; 
die ("Use back! ! "); 
} 

$todayis = date("l, F j, Y, g:i a"); 

$attn = $attn ; 
$subject = $attn; 

$notes = stripcslashes($notes); 

$message = " 
Subject: $attn \n 
Message: $notes \n 
From: $visitor ($visitormail)\n 
Additional Info : IP = $ip \n 
Browser Info: $httpagent \n 
"; 

$from = "From: $visitormail\r\n"; 


mail('[email protected]', $subject, $message, $from); 

?> 

<?php 

$xml = new SimpleXMLElement(''); 

    $mydata = $xml->addChild('VisitorInfo'); 
    $mydata->addChild('Visitor',$visitor); 
    $mydata->addChild('Key',$ip); 

    $mydata->PHP_EOL; 

mysql_close($db); 

$fp = fopen("VisitorData.xml","wb"); 

fwrite($fp,$xml->asXML()); 

fclose($fp); 

?> 

codes d'erreur que je reçois:

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Entity: line 2: parser error : Start tag expected, '<' not found in /home/content/48/10101748/html/sendeail.php on line 57 

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: Subject: adfasdfd in /home/content/48/10101748/html/sendeail.php on line 57 

Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]:^in /home/content/48/10101748/html/sendeail.php on line 57 

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/content/48/10101748/html/sendeail.php:57 Stack trace: #0 /home/content/48/10101748/html/sendeail.php(57): SimpleXMLElement->__construct('?Subject: adfas...') #1 {main} thrown in /home/content/48/10101748/html/sendeail.php on line 57 
+0

Qu'est-ce que tu as? Une erreur? – bksi

+0

Je doute que vous obtiendrez des données du tout avec '$ xml = new SimpleXMLElement ('');' –

+0

@bksi Eh bien, je suis très nouveau dans n'importe quelle forme de PHP car j'ai seulement vraiment traité HTML et CSS donc c'est un peu un jeu de devinettes pour moi. Je ne reçois pas d'erreur et mon adresse e-mail est correcte. Mais le fichier XML que j'ai hébergé ne met pas à jour – SaturnsEye

Répondre

1

De la documentation PHP SimpleXMLElement la première valeur doit être de type chaîne et ses données doivent être « Une chaîne XML bien formé ou le chemin ou l'URL d'un document XML ".

Actuellement, vous ne remplissez pas ces conditions. Vous devez créer un nouveau nœud comme par exemple:

$xml = new SimpleXMLElement('<xml/>'); 
$mydata = $xml->addChild('VisitorInfo'); 
$mydata->addChild('Visitor','toto'); 
$mydata->addChild('Key', '1'); 

$mydata->PHP_EOL; // Don't understand the goal here 

La sortie de cet échantillon de code:

SimpleXMLElement Object 
(
    [Visitor] => toto 
    [Key] => 1 
) 

En outre, vous utilisez mysql_* dans votre code. Pensez à passer à mysqli_* ou PDO. De la documentation PHP: "Attention:. Cette extension est obsolète PHP5.5.0, et sera supprimée à l'avenir la place, le MySQLi ou extension PDO MySQL doit être utilisé."

+0

Excellent! ça arrive finalement quelque part. Les données XML sont mises à jour pour afficher le nom et l'adresse IP des utilisateurs, mais comment puis-je l'obtenir pour qu'il s'ajoute au fichier XML et ne l'écrase pas à chaque fois? – SaturnsEye

+1

Si vous souhaitez ajouter des données à un fichier XML existant, ce lien peut peut-être vous aider: [Insérer un nœud dans XML en utilisant php] (http://stackoverflow.com/q/1618509/3361444). – Debflav

+0

Merci beaucoup! votre lien suggéré fonctionne parfaitement. J'ai également accepté votre réponse comme étant correcte, comme je le voulais initialement. – SaturnsEye

Questions connexes