[PHP] passer un array par la methode post

Résolu
krabs -  
 Dest -
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. krabs
     
    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];
    ?>
    
    3
  2. krabs
     
    En effet cela fonctionne a merveille => Merci beaucoup de votre aide qui ma été très précieuse =).
    1
  3. Dest
     
    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' />";
    0
  4. krabs
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. krabs
     
    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
    1. Alain_42 Messages postés 5413 Statut Membre 904
       
      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];
      0
      1. krabs > Alain_42 Messages postés 5413 Statut Membre
         
        merci 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
        0
  7. krabs
     
    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
  8. krabs
     
    d'alleur le test if(!$array[0] OR !$array[1]) le confirme ...
    -1
    1. Alain_42 Messages postés 5413 Statut Membre 904
       
      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
      0
      1. krabs > Alain_42 Messages postés 5413 Statut Membre
         
        hum 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
        0
  9. krabs
     
    c'est une fonction de base php mais sinon pour les éventuelles fautes d'orthographe c'est un copier coller ;)
    -1
    1. Alain_42 Messages postés 5413 Statut Membre 904
       
      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); ????
      0