Je fais actuellement face à un problème depuis un moment, mais je n'arrive pas à le résoudre
Je dispose d'une page sur laquelle on peut sélectionner un formulaire PHP. Ce formulaire est crée dynamiquement grâce à un fichier XML que voici :
Code : Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<listetemplate>
<template>
<nom>Début d'opération de maintenance</nom>
<description>Début d'opération de maintenance</description>
<titre>Opération de maintenance</titre>
<text>categorie</text>
<destinataire>activer</destinataire>
<time>activer</time>
<textlong>Description</textlong>
<textlong>Incidence</textlong>
</template>
<template>
<nom>Fin d'opération de maintenance</nom>
<description>Fin d'opération de maintenance</description>
<titre>Fin de l'opération de maintenance</titre>
<text>categorie</text>
<destinataire>activer</destinataire>
<time>activer</time>
<textlong>Description</textlong>
<signature>IRCAD</signature>
</template>
<template>
<nom>Information</nom>
<description>Information</description>
<titre>Information</titre>
<text>categorie</text>
<destinataire>activer</destinataire>
<textlong>Description</textlong>
</template>
<!-- <template> -->
<!-- <nom>template4</nom> -->
<!-- <description>Description du template 4</description> -->
<!-- </template> -->
</listetemplate>
Code : Tout sélectionner
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>Votre message</title>
<script src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script src='http://code.jquery.com/ui/1.10.3/jquery-ui.js'></script>
<script src='http://trentrichardson.com/examples/timepicker/jquery-ui-timepicker-addon.js' ></script>
<link rel="stylesheet" href='http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css' />
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<html>
<body>
<h1><center>Votre message : </center></h1>
<form id="form" action="mail.php" method="post">
<?php
$xml = "template.xml";
$dom = new DOMDocument();
//echo "test2 <br>";
$dom->load($xml);
$dom->normalizeDocument();
// test = valeur du template choisi
if($_POST['test'] == NULL) { echo "c'est null"; }
else { $test = $_POST['test']; }
echo "<br>";
//echo $test;
//echo "test3 <br>";
$templates = $dom->getElementsByTagName('listetemplate')->item(0);
$nbchild = $templates->childNodes->length;
//echo "nombre d'enfants : ".$nbchild."<br>";
//echo "testtest <br>";
$nom_template="";
$compteur=0;
//$nom_template = $dom->getElementsByTagName('nom')->item($compteur)->nodeValue;
while($compteur<$nbchild && $_POST['test'] != $nom_template) {
$template = $dom->getElementsByTagName('template')->item($compteur);
$nom_template = $template->childNodes->item(1)->nodeValue;
//echo "nom du template : ".$nom_template."<br>";
//echo "test4 <br>";
$compteur++;
}
//echo $template->childNodes->length."<br>";
for($compteur=5;$compteur < $template->childNodes->length;$compteur=$compteur+2) {
//echo "Nom du noeud : ".$template->childNodes->item($compteur)->nodeName."<br>";
$template->childNodes->item($compteur)->nodeValue;
//echo "Valeur du noeud : ".$template->childNodes->item($compteur)->nodeValue."<br>";
if($template->childNodes->item($compteur)->nodeName == "titre") {
echo '<h2><center>'.$template->childNodes->item($compteur)->nodeValue.'</h2></center>';
$nom = $template->childNodes->item($compteur)->nodeValue;
//<input type="hidden" name="nom" id ="nom" value='$nom' />
}
elseif($template->childNodes->item($compteur)->nodeName == "text") { //if nodeName = text => générer balise html textarea
echo '<div>
<label for="'.$template->childNodes->item($compteur)->nodeValue.'">'.$template->childNodes->item($compteur)->nodeValue.'</label>
<input type="textarea" id="'.$template->childNodes->item($compteur)->nodeValue.'" name ="'.$template->childNodes->item($compteur)->nodeValue.'"/>
</div>';
echo "<br>";
}
elseif($template->childNodes->item($compteur)->nodeName == "textlong") {
echo'<div>
<label for="'.$template->childNodes->item($compteur)->nodeValue.'">'.$template->childNodes->item($compteur)->nodeValue.'</label>
<textarea cols="50" rows="10" id="'.$template->childNodes->item($compteur)->nodeValue.'" name ="'.$template->childNodes->item($compteur)->nodeValue.'"></textarea>
</div>';
}
elseif($template->childNodes->item($compteur)->nodeName == "time") {
echo '<div>
<label for="datepicker">Début : </label>
<select name="heure1">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>
<select name="minute1">
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
<input type="text" id="datepicker" class="datepicker" name="datepicker" />
</div>';
echo '<div>
<label for="datepicker2">Fin : </label>
<select name="heure2">
<option value="00">00</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>
<select name="minute2">
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
<input type="text" id="datepicker2" class="datepicker" name="datepicker2" />
</div>';
}
elseif($template->childNodes->item($compteur)->nodeName == "destinataire") {
echo '<INPUT type="checkbox" name="ircad" value="1" checked> IRCAD
<INPUT type="checkbox" name="ihu" value="2"> IHU
<INPUT type="checkbox" name="partenaires" value="3"> Autres partenaires
<INPUT type="checkbox" name="informatique" value="4"> Informatique';
echo "<br>";
}
}
?>
<div class="button">
<input type="submit" id="Envoyer" name="Envoyer" value=Envoyer >
</div>
<div>
<input type="hidden" id="diffhour" name="diffhour"/>
</div>
<div>
<input type="hidden" id="diffmin" name="diffmin"/>
</div>
<!-- //Nom template -->
<input type="hidden" name="nom" id ="nom" value=<?php echo htmlspecialchars($nom); ?> >
</form>
<script src="js/controleform.js"></script>
</body>
</html>
Mon problème vient du fichier liste.php, ce fichier présente un select avec la liste des templates disponibles.
Code : Tout sélectionner
<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<title>Liste de template</title>
<h3>Choisissez un template de mail : </h3>
</head>
<html>
<body>
<form id="form" action="rempli.php" method="post">
<button type="submit" id="envoyer" name="envoyer"> Envoyer </button>
<select name="test">
<?php
$xml = "template.xml";
$dom = new DOMDocument();
$dom->load($xml);
$dom->normalizeDocument();
$templates = $dom->getElementsByTagName('listetemplate')->item(0);
$nbchild = $templates->childNodes->length;
/*$nom_template="";
foreach ($template as $nom_template) {
if (method_exists($nom_template->childNodes, 'item')) {
for ($compteur=1;$compteur<$nbchild;$compteur=$compteur+2) {
$nom_template = $templates->childNodes->item($compteur)->childNodes->item(1)->nodeValue;
echo '<option value ="'.$nom_template.'">'.$nom_template.'</option>';
}
// echo $template->childNodes->item($compteur)->nodeValue."<br />";
// To reproduce the exact output you need this line also.
// You need to display the second child (Answer)
// echo $li->childNodes->item(1)->nodeValue."<br />";
}
}*/
//$compteur=0;
for ($compteur=1;$compteur<$nbchild;$compteur=$compteur+2) {
$nom_template = $templates->childNodes->item($compteur)->childNodes->item(1)->nodeValue;
echo '<option value ="'.$nom_template.'">'.$nom_template.'</option>';
}
?>
</select>
</body>
</html>
Code : Tout sélectionner
$nom_template = $templates->childNodes->item($compteur)->childNodes->item(1)->nodeValue;Code : Tout sélectionner
[Tue Jan 07 09:05:41 2014] [error] [client 192.168.3.14] PHP Fatal error: Call to a member function item() on a non-object in /var/www/template/liste.php on line 47Merci d'avance pour votre aide !