Page 1 sur 1
Passer variables XML sur une autre page
Posté : 25 oct. 2012, 21:28
par meta
Bonjour
Je souhaite faire passer des valeurs ayant le meme nom de balise XML d'un fichier php vers un autre.
l'extrait du fichier xml :
Code : Tout sélectionner
<model>MODENA 450</model>
<photo_list>
<photo>
1-185.JPG
</photo>
</photo_list>
<model>EDALON 556</model>
<photo_list>
<photo>
1-185.JPG
</photo>
<photo>
2-185.JPG
</photo>
sur un premiere page j'ai le lien qui pointe vers la 2e page, censée passer en variable les multiple champs <photo> et <model>:
Code : Tout sélectionner
$xml = utf8_encode(file_get_contents('176.xml'));
$rows = array();
$sxml = simplexml_load_string($xml);
foreach($sxml as $node) {
$model = htmlspecialchars((string)$node->model, ENT_QUOTES);
$photo = (string)$node->photo_list->photo;
$rows[] = <<<HTML
<a href="http://MONSITE.fr/fancy/demo/test8.php?model={$model}&photo={$photo}">lien vers produit</a></br>
{$model}
HTML;
}
et sur la seconde page je souhaite afficher ces photos :
Code : Tout sélectionner
$model = $_GET['model'];
$photo = $_GET['photo'];
echo $model;
$i = 0;
foreach ($photo_list as $photo) {
$photo = strval($photo);
$photo = trim($photo);
if ($i == 0)
echo '<img src="'.$photo.'" alt="" />';
echo '</a>';
$i ++;
}
cela m'affiche seulement la première photo. Comment pourrais je faire pour passer en URL les différentes valeurs des champs <photo> ?
Si quelqu'un pourrait m'éclairer....
Re: Passer variables XML sur une autre page
Posté : 25 oct. 2012, 22:32
par moogli
salut,
pourquoi passer par l'url ?
utilise plutot les sessions pour cela.
@+
Re: Passer variables XML sur une autre page
Posté : 25 oct. 2012, 23:18
par meta
bonjour
oui ca parait plus simple mais je ne suis pas vraiment expert. J'ai donc remodif le code pour utiliser les sessions, nouveau problème deja a chaque fois que je fais page arrière sur mon browser pour réafficher le tableau de tout les produits (la 1ere page) et que je reclique sur un lien, la variable envoyée par la session est toujours la meme....
j'ai mis un session_start(); tout en haut de chaque page, que pourrais je faire de plus ?
Re: Passer variables XML sur une autre page
Posté : 25 oct. 2012, 23:26
par moogli
la faut voir le code que tu utiiser pour cela, parce que sinon c'est un peu au p'tit bonheur la chance.
@+
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 01:19
par meta
voila donc le code, le soucis c'est qu'il me retourne en permanence les champs de la derniere balise XML...je vois pas du tout pourquoi :
la page 1 :
<?php
// On démarre la session AVANT d'écrire du code HTML
session_start();
$NbrCol = 5;
$xml = utf8_encode(file_get_contents('176.xml'));
$rows = array();
$sxml = simplexml_load_string($xml);
foreach($sxml as $node) {
$thumb = (string)$node->photo_list->thumb;
$model = htmlspecialchars((string)$node->model, ENT_QUOTES);
$_SESSION['model'] = htmlspecialchars((string)$node->model, ENT_QUOTES);
$_SESSION['photo'] = (string)$node->photo_list->photo;
$rows[] = <<<HTML
<a href="http://monsite.fr/fancy/demo/testf2.php"><img src="{$thumb}" alt="Aperçu" /></a></br>
{$model}</br></br>
HTML;
}
// -------------------------------------------------------
// nombre de cellules a remplir
$NbreData = count($rows);
// -------------------------------------------------------
// affichage
$NbrLigne = 0;
if ($NbreData != 0)
{
$k = 0; // indice du tableau
?>
<table frameBorder="0">
<tbody>
<?php
while ($k < $NbreData)
{
if (($k+1)%$NbrCol == 1) {
$NbrLigne++;
$fintr = 0;
?> <tr>
<?php }
?> <td>
<?php // -------------------------
// DONNEES A AFFICHER dans la cellule
echo $rows[$k];
//echo $rows[$id];
?> </td>
<?php if (($k+1)%$NbrCol == 0) {
$fintr = 1;
?> </tr>
<?php }
$k++;
}
// fermeture derniere balise /tr
if ($fintr!=1) {
?> </tr>
<?php } ?>
</tbody>
</table>
<?php
} else { ?>
pas de données à afficher
<?php
}
?>
</body>
</html>
et la page 2 :
<?php
// On démarre la session AVANT d'écrire du code HTML
session_start();
echo $_SESSION['photo'];
echo $_SESSION['model'];
?>
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 08:10
par moogli
echo $_SESSION['photo'];
echo $_SESSION['model'];
Ces deux variables doivent être des tableaux la ce n'est pas le cas donc le comportement est normal

Donc au parse du fichier XML utilise
$_SESSION['photo'][];
$_SESSION['model'][];
@+
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 08:10
par moogli
echo $_SESSION['photo'];
echo $_SESSION['model'];
Ces deux variables doivent être des tableaux la ce n'est pas le cas donc le comportement est normal

Donc au parse du fichier XML utilise
$_SESSION['photo'][];
$_SESSION['model'][];
@+
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 22:49
par meta
bonjour
je dois modifier la 1ere page aussi ? car la je me prends un :
Cannot use [] for reading in /homepages/34/d419102841/htdocs/fancy/demo/testf2.php on line 4
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 23:34
par moogli
Surtout la première page, c'est lors du parse du xml que tu dois entrer les données dans mes variables de session
ensuite tu pourras les utiliser sur ta seconde page (avec un foreach par exemple).
@+
Re: Passer variables XML sur une autre page
Posté : 26 oct. 2012, 23:58
par meta
bin j'avais testé aussi de le mettre sur la 1ere page ca fait pareil en fait...
Tu n'aurais pas un exemple fonctionnel à me montrer ? j'ai essayé pas mal de truc mais rien a faire..
Re: Passer variables XML sur une autre page
Posté : 27 oct. 2012, 10:53
par moogli
tu as déja le code
<?php
// On démarre la session AVANT d'écrire du code HTML
session_start();
$NbrCol = 5;
$xml = utf8_encode(file_get_contents('176.xml'));
$rows = array();
$sxml = simplexml_load_string($xml);
foreach($sxml as $node) {
$thumb = (string)$node->photo_list->thumb;
$model = htmlspecialchars((string)$node->model, ENT_QUOTES);
$_SESSION['model'][] = htmlspecialchars((string)$node->model, ENT_QUOTES);
$_SESSION['photo'][] = (string)$node->photo_list->photo;
// etc
}
la seconde pages foreach sur $_SESSION['model'] et tu utilise l'index pour prendre l'info sur le second tableau
<?php
foreach ($_SESSION['model'] as $index => $valeur) {
// la valeur correspondante pour la photo : $_SESSION['photo'][$index]
}
?>
@+