[PHP] passer un array par la methode post

Résolu
Bonjour,
Je cherche a passer un tableau a une autre page en utilisant le méthode post.
$data = array($ref,$nb);


J'ai tester une fonction serialize($data) ce qui donne un résultat du type : a:2:{i:0;s:9:"reference";i:1;i:17;}
pour $ref = "reference" et $nb = 17

quand sur la même page en guise de test j'exécute la fonction unserialize je récupère bien mon tableau

$test = serialize($data);
$test_u = unserialize($test);
echo $test_u[0].$test_u[1];


Par contre quand je passe la variable $test a mon autre page et que j'exécute le même script je ne le récupère pas :'(

$data = $_POST['data'];
echo $data."<br>";
$array = unserialize($data);
echo $array[0]." and value is :".$array[1];


Merci de votre aide
Configuration: Windows XP
Firefox 2.0.0.16

8 réponses

  1. Salut,

    J'ai fait un truque tout simple ..

    <form action="test.php" method="POST">
    <?php
    $name = "reference";
    $value = 17;
    $data = array($name,$value);
    $test = serialize($data);
    echo $test;
    echo "<br><input type='text' value='".$test."' name='data' />";
    $test_u = unserialize($test);
    echo $test_u[0].$test_u[1];
    ?>
    
    <input type="submit" />
    </form>


    et je recupere sa avec :
    <?php 
    
    $data = $_POST['data'];
    echo $data."<br>";
    $array = unserialize($data);
    echo $array[0]." and value is :".$array[1];
    ?>
    
    1. et le résultat est loin d'être probant :S

      a:2:{i:0;s:9:\"reference\";i:1;i:17;}
      and value is :

      a priori je voit pas d'erreur mais il doit bien en avoir une :D
      1. Je pense pas que l'erreur vienne de l'envoie de la variable puisque je la récupère correctement:
        le $data = $_POST['data']; echo $data."<br>"; s'affiche bien on le voit sur la page.
        1. Salut, chez moi ça marche avec ce code:

          il faut donner un name et une value à ton bouton submit

          <form action="test.php" method="POST">
          <?php
          $name = "reference";
          $value = 17;
          $data = array($name,$value);
          $test = serialize($data);
          echo $test;
          echo "<br><input type='text' value='".$test."' name='data' />";
          $test_u = unserialize($test);
          echo $test_u[0].$test_u[1];
          ?>
          
          <input type="submit" name="envoyer" value="Envoyer"/>
          </form>


          et test.php:

          <?php 
          
          $data = $_POST['data'];
          echo $data."<br>";
          $array = unserialize($data);
          echo $array[0]." and value is :".$array[1];
        2. @Alain_42merci de ton aide mais cela n'a rien changer : en effet sa marche sur la 1ere page mais pas sur la seconde c'est sa qui me rend fou :D
      2. Si justement le champ $data contien le resultat : a:2:{i:0;s:9:\"reference\";i:1;i:17;}

        le pb vient apres:
        $array = unserialize($data);
        echo $array[0]." and value is :".$array[1]; affiche le resultat : "and value is"

        $array[0] et $array[1] n'ont apparement pa de valeur :S
        1. d'alleur le test if(!$array[0] OR !$array[1]) le confirme ...
          1. chez moi ça marche parfaitement sur la deuxième page test.php

            j'ai comme résultat:

            a:2:{i:0;s:9:"reference";i:1;i:17;}
            reference and value is :17
          2. @Alain_42hum alors la je comprend pas ...
            j'ai pas regarder le php.ini mais si sa fonctionne sur une page pourquoi pas dans l'autre :o
        2. c'est une fonction de base php mais sinon pour les éventuelles fautes d'orthographe c'est un copier coller ;)
          1. dans un post plus haut tu mets:

            le champ $data contien le resultat : a:2:{i:0;s:9:\"reference\";i:1;i:17;}

            donc avec des \"

            moi j'ai seulement
             a:2:{i:0;s:9:"reference";i:1;i:17;}


            dans la page test.php

            essayes en mettant:

            unserialise(stripslashes($data); ????
        3. En effet cela fonctionne a merveille => Merci beaucoup de votre aide qui ma été très précieuse =).
          1. j'ai galéré aussi avec la méthode post ^^' j'ai pas tout lu donc je ne sais pas si quelqu'un a déjà proposé ça mais voilà ma solution :) :

            echo "<br><input type='text' value='".htmlspecialchars($test, ENT_QUOTES)."' name='data' />";