PHP et simpleXML, automatiser les fonctions
Bonjour,
Je débute totalement en XML, je ne suis pas beaucoup plus avancée en PHP.
J'ai besoin pour mon stage de creer un formulaire en XML, de l'afficher en PHP (POO ), et de récuperer les données avec une base de donnée.
mon XML ressemble à ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
<xml>
<questionnaire ID="700" nom="Ss">
<!-- question N°7 -->
<question ID="7" table="" texte="...:" type="radio">
<question ID="7.2.1" table="" texte="..." type="radio">
<question ID="7.3.1" table="" texte="..." type="yesno_condition" var="">
<question ID="7.4.1" table="" texte="..." type="texte" var="">
</question>
</question>
<question ID="7.3.2" table="" texte="..." type="yesno_condition" var="">
<question ID="7.4.2" table="" texte="..." type="texte" var="">
</question>
</question>
<question ID="7.3.3" table="" texte="..." type="yesno_condition" var="">
<question ID="7.4.3" table="" texte="" type="texte" var="">
</question>
</question>
</question>
<question ID="7.2.2" table="" var="" texte="" type="yesno_condition">
<tableau ID="1.1" table="" type="array" texte="" >
<tableau ID="1.1.1" table="" var="" type="texte">
</tableau>
<tableau ID="1.1.2" table="" var="" type="">
</tableau>
<tableau ID="1.1.3" table="" var="" type="texte">
</tableau>
<tableau ID="1.1.4" table="" var="" type="time">
</tableau>
<tableau ID="1.1.5" table="" var="" type="texte">
</tableau>
<tableau ID="1.1.6" table="" var="" type="time">
</tableau>
<tableau ID="1.1.7" table="" var="" type="texte">
</tableau>
<tableau ID="1.1.8" table="" var="" type="time">
</tableau>
</tableau>
</question>
<question ID="7.2.3" table="" var="" type="yesno_condition" texte="">
<tableau ID="1.2" texte="">
<tableau ID="1.2.1" table="" var="" type="texte"> <div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px"><div style="margin-left:40px">
.
.
.
.
.
.</div></div></div></div>.ETC....
</tableau>
</tableau>
</question>
<question ID="7.2.4" table="" texte="" type="radio">
<question ID="7.3.4" table="" var="" type="yesno_condition" texte="">
<question ID="7.4.4" table="" var="" texte="" type="texte">
</question>
</question>
<question ID="7.3.5" table="" var="" type="" texte="">
<question ID="7.4.5" table="" var="" texte="" type="texte">
</question>
</question>
</question>
</question>
</questionnaire>
</xml> |
Bref, un code XML avec plusieures balises imbriquées, qui doivent sortir sous forme de texte ou de tableau.
J'ai commencé à afficher le tout avec simpleXML, mais je bloque completement sur les boucles. Je n'ai absolument rien automatisé.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
<?php
include ('classe.php');
$xml = simplexml_load_file('data.xml');
// questionnaire n°7
foreach ($xml->questionnaire[0]->question[0]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse")
{
echo utf8_decode($b),"\n";
}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->question[0]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->question[0]->question[0]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->question[0]->question[1]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->tableau[1]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?>
<br>
<?php
foreach($xml->questionnaire[0]->question[0]->question[0]->question[1]->question[0]->attributes() as $a => $b)
{
if ($a =="texte" OR $a =="reponse" ){
echo utf8_decode($b),"\n";}
}
?> |
Quelqu'un pourrai m'expliquer comment essayer d'automatiser tout ça, sachant que j'ai pas mal de balises <questionnaire> dans mon script?:oops:
Ca fait un moment que je cherche, et mes essais pour afficher les child n'ont absolument pas été concluant.
Merci