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

PHP & Base de données Discussion :

fonction serialize() [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut fonction serialize()
    Bonjour,

    je pense avoir mal compris l'utilisation des fonctions serialize, unserialize, rawurlencode et rawurldecode..
    j'expose mon probleme:

    sur la page 1.php, j'ai 2 formulaires, un qui lance un script sur la meme page et un autre sur une autre page (donc pour ne perdre aucune valeur, je les balade un peu partout) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
    if(isset($_POST['p'])) $bp=serialize($_POST['p']);
    ....
    //et a un autre moment
    ....
    <input type="hidden" name="ap[]" value="<?echo rawurlencode(serialize($bp));?>">


    sur la page 2.php, apres avoir transporte $ap[] par post


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ....
    if(isset($_POST['ap'])) $p=$_POST['ap'];
    ...
    // puis plus loin
    ...
    $bp=unserialize(rawurldecode($p[$i]));

    Premierement, desole pour le nom des variables.
    Sinon, l'affichage de $bp me renvoie quelquechose de la forme
    a:2:{i:0;s:8:"Belgique";i:1;s:6:"france";}
    malgre le unserialize.

    Ou pourrais-je m'etre trompe? C'est surement evident, mais en plus d'1 heure(!!), je ne trouve toujours pas..

    merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    Rassures-moi, y a bien des { } à un moment...

    a:2:{i:0;s:8:"Belgique";i:1;s:6:"france";} est la forme serialysé de $bp qi est un tableau.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    sans le unserialize, l'affichage est exactement celui ci :

    "s:42:"a:2:{i:0;s:8:"Belgique";i:1;s:6:"france";}";"

    avec un unserialize :

    "a:2:{i:0;s:8:"Belgique";i:1;s:6:"france";}"

    et avec un second, je recois la chaine

    "Array"

  4. #4
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Que vient faire rawurlencode dedans? Il n'y a pas d'url dans ton cas?
    Sinon une chose: ap est un tableau dans ton formulaire, donc pour le récupérer il faut faire $_POST['ap'][0] pour récupérer l'élément 0.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Sans rawurlencode, je n'arrive pas du tout a le transmettre sur la page suivante. Je sais que c'est pour les URL, mais bon.. j'ai trouve cette solution dans google, et tant que ca marche (esprit de prog microsoft...)

    Et, j'aimerais tout de suite l'affecter en tant qu' array,
    pour pouvoir construire une requete dans une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for($i=0; $i<count($p); $i++)
                $req_cond.="pays='".unserialize(rawurldecode($p[$i]))."' OR ";
    mais ce(s) unserialize me renvoient ce que j'ai cite 2 cases au-dessus

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    <input type="hidden" name="ap[]" value="<?echo rawurlencode(serialize($bp));?>">
    ça c'est pas clair...
    Sinon, unserialyse avant d'utiliser le tableau
    machin=unserialye(truc);
    machin[1]...etc..

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Citation Envoyé par josmiley
    <input type="hidden" name="ap[]" value="<?echo rawurlencode(serialize($bp));?>">
    ça c'est pas clair...
    tres certainement, mais a quel niveau?

    sinon je vais tenter d' "unserializer" ailleurs

  8. #8
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Tu peux écrire le code plus clairement avec genre tout à la suite je ne comprends rien aux variables p bp a ap comme ça...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Citation Envoyé par josmiley
    Sinon, unserialyse avant d'utiliser le tableau
    machin=unserialye(truc);
    machin[1]...etc..
    ca me retourne exactement le meme resultat.. j'ai beau chercher, rien ne me vient a l'esprit pour deceler mon erreur

  10. #10
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Tu peux écrire le code plus clairement avec genre tout à la suite je ne comprends rien aux variables p bp a ap comme ça...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    je ne peux pas poster 1.php, mais voici une partie:
    (je me repete, mais toutes ces variantes de noms de variables sont necessaires avec tous ces mouvements

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    <form name="rech" action="1.php" method="post">
    ...
    <select name="pays[]" size="3" multiple>
    ...
    </form>
     
     
    <form name="aff" action="2.php" method="post">
    <?
    ...
    if(isset($_POST['pays'])) $bpays=serialize($_POST['pays']);
    ...
    ?>
    <input type="hidden" name="apays[]" value="<?echo rawurlencode(serialize($bpays));?>">
    </form>


    et 2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    if(isset($_POST['apays'])) $pays=unserialize($_POST['apays']);
    ...
    if($pays!="$choix_null"){
         // pour des raisons d'affichage, j'utilise cette variable choix_null
         for($i=0; $i<count($pays); $i++)
             $req_cond.="pays='".rawurldecode($pays[$i])."' OR ";
    ...
    je n'utilise a aucun autre moment toutes les variables citees

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Une idee?

    Moi, ce qui me bloque et m'epate le plus, c'est quand meme ce tableau serialise qui ne peut pas se "deserialiser" completement...

  13. #13
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Ton code 1 est faux déjà, tu ne peux pas fourrer un array tout pres dans un champ de type tableau.

    Je ferai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <form name="rech" action="1.php" method="post"> 
    <select name="pays[]" size="3" multiple> 
    </form> 
     
     
    <form name="aff" action="2.php" method="post"> 
     
    <?php
    if(isset($_POST['pays'])) $bpays=serialize($_POST['pays']); else $bpays = serialize('');
    ?>
     
    <input type="hidden" name="apays" value="<?echo $bpays;?>"> 
     
    </form>
    Et ensuite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if(isset($_POST['apays'])) $pays=unserialize($_POST['apays']); 
    if($pays != $choix_null"){ 
       for($i=0; $i<count($pays); $i++) 
       $req_cond.="pays='".$pays[$i]."' OR "; 
    ...

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Desole, je n'ai pas eu le temps de regarder ceci plutot...
    J'ai suivi ca a la lettre et j'obtient toujours magiquement quelquechose de serialise quand je fais un affichage de la requete...

    SELECT ida FROM table WHERE pays='a:2:{i:0;s:8:'

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 71
    Par défaut
    Pourquoi faire simple quand on peut faire complique?

    Donc voila, ca marche..
    Tant pis pour ces serialize, de toutes facons, ma seule intention est d'utiliser ces differentes valeurs pour une requete SQL.

    Donc ca me donne

    sur 1.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ...
        $bpays="";
        if(isset($_POST['pays'])) {
          $tmp=$_POST['pays'];
          foreach($tmp as $t) $bpays.="pays='".$t."' OR ";
        }
    ...
        <input type="hidden" name="apays" value="<?echo $bpays;?>">
    ...

    et sur 2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            if(isset($_POST['apays'])) $pays=$_POST['apays'];
    Voila, merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. problème avec la fonction serialize
    Par l.laurent60 dans le forum Langage
    Réponses: 1
    Dernier message: 31/05/2010, 22h51
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

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