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 ;

?>