PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-10-2012 20:31:27

meteu2
Membre
Inscription : 25-10-2012
Messages : 4

Passer variables XML sur une autre page

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 :

<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>:


$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 :

$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....

Hors ligne

#2 25-10-2012 20:59:21

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Passer variables XML sur une autre page

Saluton,
Je pense que tu dois d'abord sérialiser les variables $model et $photo avant de les mettre dans l'url.
Mais attention, cela risque de faire une url bien longue, peut-être ferais-tu mieux de passer par des variables de session.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#3 25-10-2012 22:19:58

meteu2
Membre
Inscription : 25-10-2012
Messages : 4

Re : Passer variables XML sur une autre page

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 ?

Hors ligne

#4 25-10-2012 22:33:05

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Passer variables XML sur une autre page

Ben, je ne suis pas devin, donc sans voir où quand et comment des valeurs sont affectées à ces variables de session, partant, je ne peux pas te dire précisément où elles devraient être éventuellement écrasées (unset).


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 26-10-2012 00:20:09

meteu2
Membre
Inscription : 25-10-2012
Messages : 4

Re : Passer variables XML sur une autre page

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
[php]session_start();

echo $_SESSION['photo'];
echo $_SESSION['model'];


 ?>

Dernière modification par meteu2 (26-10-2012 00:21:15)

Hors ligne

#6 26-10-2012 08:08:03

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Passer variables XML sur une autre page

Comme tu as plusieurs balises <model></model> et <photo></photo>, là ton code

    $_SESSION['model'] = htmlspecialchars((string)$node->model, ENT_QUOTES);
    $_SESSION['photo'] = (string)$node->photo_list->photo;

doit écraser avec la dernière valeur parcourue dans le foreach les deux index de $_SESSION.
Essaye avec $_SESSION['photo'][] et $_SESSION['model'][], ça devrai te créer un array.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 26-10-2012 21:50:05

meteu2
Membre
Inscription : 25-10-2012
Messages : 4

Re : Passer variables XML sur une autre page

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

Hors ligne

#8 26-10-2012 23:09:09

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Passer variables XML sur une autre page

Non les crochets vides [] c'est pour instancier les valeurs dans des index de $_SESSION['photo'] et $_SESSION['model'] dans la 1ère page.
A près, pour parcourir les array à 2 dimensions dans testf2.php, je te renvoie vers la doc PHP de foreach pour le parcours des tableaux multi-dimensionnels (en imbriquant 2 structures foreach).


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

Pied de page des forums