Page 1 sur 2
simple xml fonction xpath
Posté : 05 oct. 2010, 12:55
par sknano
bonjour
j'ai un petit soucis
je souhaite utiliser la fonction foreach et xpath pour aller chercher des neud
mais on ID est une variable
je ne sais pas comment le mettre en forme
voici mon code qui ne marche pas
Code : Tout sélectionner
foreach ($xml->xpath('/produits/num[@id = $resultid]') as $numid)
{
echo $numid->produit;
}
*quelqu'un peu m'aider???
merci a tous
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:31
par stealth35
essayes comme ca :
$xml->xpath("//produits/num[@id =\"$resultid]\"")
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:38
par sknano
merci de ton aide encore mais ca marche po
mon code avec ta correstion
Code : Tout sélectionner
foreach ($xml->xpath("//produits/num[@id =\"$resultid]\"") as $numid)
{
echo $numid->produit;
}
et le resultat
Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: Invalid predicate in /homez.342/senimedi/www/test/prod.php on line 13
Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: xmlXPathEval: evaluation failed in /homez.342/senimedi/www/test/prod.php on line 13
Warning: Invalid argument supplied for foreach() in /homez.342/senimedi/www/test/prod.php on line 13
tu as une idee?
merci
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:42
par stealth35
essyaes sans espace apres id
que rend "//produits/num[@id =\"$resultid]\""
si tu fais echo "//produits/num[@id =\"$resultid]\"" ?
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:54
par sknano
rien j'ai toujours
Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: Invalid expression in /homez.342/senimedi/www/test/prod.php on line 13
Warning: SimpleXMLElement::xpath() [simplexmlelement.xpath]: xmlXPathEval: evaluation failed in /homez.342/senimedi/www/test/prod.php on line 13
Warning: Invalid argument supplied for foreach() in /homez.342/senimedi/www/test/prod.php on line 13
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:55
par sknano
la ligne 13 c'est
foreach ($xml->xpath('/produits/num[@id=\"$resultid]\"') as $numid)
voici mon code entier
foreach ($xml->xpath('/produits/num[@id=\"$resultid]\"') as $numid)
echo "//produits/num[@id =\"$resultid]\"" ;
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 13:59
par stealth35
dis moi ce que rend
echo "//produits/num[@id=\"$resultid]\"";
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:02
par sknano
dsl j'avais pas compris
elle renvoie ca
//produits/num[@id="]"
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:06
par stealth35
donc deja $resultid rend rien
fais
var_dump($resultid);
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:10
par sknano
sa me donne
NULL //produits/num[@id="]"
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:10
par stealth35
sa me donne
NULL //produits/num[@id="]"
donc $resultid rend rien, montre tout ton code
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:12
par sknano
je pense qu'il faut que je t'explique
j'ai un formulaire qui me renvoi elorsque je post la variable $resultform
celle si est utiliser pour genere l'id
if ( $resultform == 11 ) {$resultid=1 ;}
else
donc j'ai maintenant cette varaible resultid que je souhaite utiliser pour rechercher dans mon xml les testes des neud
produit
picture
voila tu c tout
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:13
par sknano
lorsque je fait un
echo $resultid ;
il me rend bien la valeur de l'id
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:16
par stealth35
montre quand meme
Re: simple xml fonction xpath
Posté : 05 oct. 2010, 14:19
par sknano
attention c long en rouge le code ou je bataille
<?php
// on ouvre le fichier produit.xml
$xml = simplexml_load_file('produit.xml');
//variable resultant du formulaire 1 et 2
$ecran = $_POST['ecran'];
$produit = $_POST['produit'];
$resultform = $ecran . $produit;
[color=#FF0000]// on cree la fonction $numid qui va lire le numero id
// foreach ($xml->xpath('/produits/num[@id ="'.$resultid.'"]') as $numid)
// foreach ($xml->xpath('//produits/num[@id=\"$resultid]\"') as $numid)
[/color]
var_dump($resultid);
echo "//produits/num[@id=\"$resultid]\"";
// on cree la fonction qui genere l'id $resultid
// suivant le resultat du form1 et du form2
if ( $resultform == 11 ) {$resultid=1 ;}
else
if ( $resultform == 12 ) {$resultid=2 ;}
else
if ( $resultform == 13 ) {$resultid=3 ;}
else
if ( $resultform == 14 ) {$resultid=4 ;}
else
if ( $resultform == 15 ) {$resultid=5 ;}
else
if ( $resultform == 21 ) {$resultid=6 ;}
else
if ( $resultform == 22 ) {$resultid=7 ;}
else
if ( $resultform == 23 ) {$resultid=8 ;}
else
if ( $resultform == 24 ) {$resultid=9 ;}
else
if ( $resultform == 25 ) {$resultid=10 ;}
else
if ( $resultform == 31 ) {$resultid=11 ;}
else
if ( $resultform == 32 ) {$resultid=12 ;}
else
if ( $resultform == 33 ) {$resultid=13 ;}
else
if ( $resultform == 34 ) {$resultid=14 ;}
else
if ( $resultform == 35 ) {$resultid=15 ;}
else
if ( $resultform == 41 ) {$resultid=16 ;}
else
if ( $resultform == 42 ) {$resultid=17 ;}
else
if ( $resultform == 43 ) {$resultid=18 ;}
else
if ( $resultform == 44 ) {$resultid=19 ;}
else
if ( $resultform == 45 ) {$resultid=20 ;}
else
if ( $resultform == 51 ) {$resultid=21 ;}
else
if ( $resultform == 52 ) {$resultid=22 ;}
else
if ( $resultform == 53 ) {$resultid=23 ;}
else
if ( $resultform == 54 ) {$resultid=24 ;}
else
if ( $resultform == 55 ) {$resultid=25 ;}
else
if ( $resultform == 61 ) {$resultid=26 ;}
else
if ( $resultform == 62 ) {$resultid=27 ;}
else
if ( $resultform == 63 ) {$resultid=28 ;}
else
if ( $resultform == 64 ) {$resultid=29 ;}
else
if ( $resultform == 65 ) {$resultid=30 ;}
else {echo "Vous n'avez pas selectionnez les deux choix";}
// on cree la premiere liste deroulante
echo '
<FORM METHOD=POST ACTION="prod.php">
<select name="ecran" onclick="this.form.choix1.value=this.selectedIndex;">>
<option value="">Quel est votre rayon?</option>
<option value="1">Rayon casque</option>
<option value="2">Rayon blouson</option>
<option value="3">Rayon gant</option>
<option value="4">Rayon cross</option>
<option value="5">Caisse</option>
<option value="6">Moto Occasion</option>
</select>
<br>
';
// on cree la deuxieme liste deroulante
echo '
<select name="produit" onclick="this.form.choix2.value=this.selectedIndex;">>
<option value="">Quel Numero de produit ?</option>
<option value="1">Produit n°1</option>
<option value="2">Produit n°2</option>
<option value="3">Produit n°3</option>
<option value="4">Produit n°4</option>
<option value="5">Produit n°5</option>
</select>
<br>
<input type="submit" value="OK">
</form>
';
echo $resultid ;
?>