IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Passage d'un Array via method POST


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 16
    Points
    16
    Par défaut [Tableaux] Passage d'un Array via method POST
    Bonjour,

    Le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    $sql = mysql_query(" SELECT * FROM table WHERE id='$id' ") or die();
    $res = mysql_fetch_assoc($sql);
    echo print_r($res);
    ?>
    me retourne l'affichage à l'écran souhaité, ie, ma variable de type tableau est correcte.

    Par contre, le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <?php
    $sql = mysql_query(" SELECT * FROM table WHERE id='$id' ") or die();
    $res = mysql_fetch_assoc($sql);
    ?>
     
    <form action ="action.php" method="post">
     <input type="hidden" name="res" value="<?php echo $res; ?>">
     <input type="submit" name="envoyer">
    </form>
     
    # sur la page "action.php"
    <?php echo print_r($_POST['res']); ?>
    me retourne le mot Array ...

    Il s'avère donc que ma variable a été corrompue pendant la transition via le formulaire ?

    Je tenais à vous faire part de mon interrogation par rapport à ceci.

    Merci de vos éclaircissements ;-)

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 199
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 199
    Points : 8 424
    Points
    8 424
    Billets dans le blog
    17
    Par défaut
    Corrompue, non pas vraiment, c'est normal.
    Pour envoyer un tableau tu peux faire un serialize( ) avant de le placer dans le champ HIDDEN, puis qd tu le récupères fait un unserialize( ).

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    +1 Sèb.

    Sinon tu faisais un echo c'est normal que ca affiche juste Array...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 18
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Mr N.
    +1 Sèb.

    Sinon tu faisais un echo c'est normal que ca affiche juste Array...
    ahhh, je suis une chèvre...

    Sinon, merci pour la fonction serialize( ) , je vais regarder de plus prêt ce qu'il en est

  5. #5
    Membre averti Avatar de gofono_bass
    Inscrit en
    Décembre 2005
    Messages
    383
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Décembre 2005
    Messages : 383
    Points : 448
    Points
    448
    Par défaut
    Salut,
    j'ai deja étét confronté au meme probleme, et une solution qui s'est avérée possible aussi pour faire passer le tableau c'etait de ne pas le transmettre en POST mais en le passant en variable de session.
    bien sur, le sérialiser est une alternative plus qu'intéressante

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ouais ou un join puis un explode de l autre coté

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par siddh
    ouais ou un join puis un explode de l autre coté
    à condition de trouver le bon séparateur...

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben si c'est toi qui fais les deux tu met ce que tu veux en général je met un de ceux la :
    ¤ § £

  9. #9
    Membre régulier
    Avatar de Atomicfryer
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Géomaticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2004
    Messages : 103
    Points : 101
    Points
    101
    Par défaut
    c'est marrant mais moi je ferais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <pre>
    <?php
     
    print_r($_POST);
     
    ?>
    </pre>
    et non

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
     
    echo print_r($_POST['res']);
     
    ?>
    de plus si tu utilises la fonction print_r() tu affiches tout type de variable et son contenu, meme si c'est un tableau !!

    la fonction echo() elle n'affiche qu'une chaine de caractere et non un tableau...

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Salut à tous !
    J'ai eu beau chercher sur les différents sites de ressources, je ne trouve pas comment unserializer...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <input type="hidden" name="monchamp_hidden" value="<?php echo serialize($mon_array); ?>" />
     
    // Après un submit : 
    echo ($_POST['monchamp_hidden']);
    // retourne a:7:{i:1;s:2:
     
     
    echo (unserialize($_POST['monchamp_hidden']));
    // retourne... rien :/
    Où est-ce que je fais une grave erreur ? Je commence à perdre mes cheveux

    Merci d'avance pour vos tuyaux, et à priori, cette solution sera merveilleuse une fois que je l'aurai maîtrisée...

    [edit]
    Comment passer pour un con en 1 post...
    le serialize utilise des doubles quotes ainsi, ma value était tronquée lorsqu'il envoyait...
    Avec toutes mes excuses... Je laisse ce message au cas où un autre petit boulet se ferait avoir aussi naïvement.
    Merci à ceux qui ont lu, sans me porter grief
    [/edit]
    [edit 2]
    Une fois ce petit désagrément passé, le unserialize ne me rendait toujours rien... En effet, il faut faire attention que le $_POST n'échappe pas les quotes ! ainsi pour récupérer mon tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $tabl = array(unserialize(stripslashes($_POST['monchamp_hidden])));
    Ce coup là, ça pourrait servir pour de bon. Et promis, j'arrête de modifier ce message à tout va ^^
    [/edit 2]

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Août 2004
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Pour ma part j'avais un formulaire avec cette partie (une liste de choix définie):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select size='7' multiple='multiple' name='nomtableau[]'>
       <option value='0'>item1</option>
       <option value='1'>item2</option>
       <option value='2'>item3</option>
    </select>
    Avec cette forme là du POST(avec un <pre> et print_r()):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    POST:Array
    (
        [nomtableau] => Array
            (
                [0] => item1
                [1] => item2
                [2] => item3
            )
    )
    Et lors de l'envoi du formulaire, je récupère le tableau de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_POST["nomtableau"] AS $valeurs){
       echo $valeurs;
    }
    simple, non ?

    A plus, bon courage,
    MiChAeL

Discussions similaires

  1. [PayPal] Redirection HTTP sur serveur de paiement via method POST
    Par aphax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 6
    Dernier message: 06/08/2009, 10h42
  2. Réponses: 2
    Dernier message: 20/08/2008, 09h05
  3. Nombre de caractères maximum dans un Input Text via method=post ?
    Par dymezac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 02/11/2007, 23h20
  4. Passage de variable GET via formulaire POST ?
    Par tintin72 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2007, 17h51
  5. Passage de variable avec la méthode POST
    Par lama85 dans le forum Langage
    Réponses: 2
    Dernier message: 07/09/2006, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo