[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. 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' />";
        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); ????