simple xml fonction xpath

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 12:55

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

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 13:31

essayes comme ca :
$xml->xpath("//produits/num[@id =\"$resultid]\"")

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 13:38

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

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 13:42

essyaes sans espace apres id

que rend "//produits/num[@id =\"$resultid]\""
si tu fais echo "//produits/num[@id =\"$resultid]\"" ?

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 13:54

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

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 13:55

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]\"" ;

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 13:59

dis moi ce que rend
echo "//produits/num[@id=\"$resultid]\"";

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 14:02

dsl j'avais pas compris

elle renvoie ca

//produits/num[@id="]"

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 14:06

donc deja $resultid rend rien

fais
var_dump($resultid);

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 14:10

sa me donne

NULL //produits/num[@id="]"

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 14:10

sa me donne

NULL //produits/num[@id="]"
donc $resultid rend rien, montre tout ton code

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 14:12

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

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 14:13

lorsque je fait un
echo $resultid ;
il me rend bien la valeur de l'id

ViPHP
ViPHP | 5462 Messages

05 oct. 2010, 14:16

montre quand meme

Eléphanteau du PHP | 41 Messages

05 oct. 2010, 14:19

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 ;

?>


Modifié en dernier par sknano le 05 oct. 2010, 14:20, modifié 1 fois.