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 :

Erreur ksort sur array après un unserialize


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut Erreur ksort sur array après un unserialize
    Bonsoir,


    J'utilise un array que je stock en BDD à l'aide de serialize($mon_array).
    Pour info, c'est un tableau associatif, du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Array(
    "titre1" => "Impli",
    "titre2" => "Machin"
    );
    J'extrais donc mon array à l'aide d'un mysql_fetch_assoc();, puis j'utlise la fonction unserialize() afin de retrouver mon "vrai" tableau. Jusqu'ici, pas de problème.
    Mais tout se complique lorsque je souhaite trier les clefs de mon tableau ...

    La fonction ksort() me sort sans arrêt un FALSE si je m'en sers sur le tableau passé par unserialize(); mais ne me dit rien si j'applique cette même fonction sur un tableau que je viens de créer (sans être passé par serialize(); puis unserialize(); ).


    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $data = mysql_fetch_assoc($sql);
    $arr_conseil = unserialize($data['conseil']);
    print_r(ksort($arr_conseil));
    Me donne une erreur (FALSE).


    Mais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $arr_conseil = array("titre1" => "Impli", "titre2" => "Machin");
    print_r(ksort($arr_conseil));
    Ne me retourne pas d'erreur. (Le tableau est trié comme souhaité)


    Alors que les deux tableaux semblent (sont ?) identiques si les affiche via un print_r.



    Aurais-je raté une étape ? Ou ai-je mal utilisé telle ou telle fonctions ?



    Dans tous les cas, je vous remercie d'avance pour votre aide et vos précieux conseils.




    Impli.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Que donne un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump($arr_conseil);
    ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Les deux me retournent le même résultat.
    A savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array(2) { ["titre"]=>  string(5) "Impli" ["titre2"]=>  string(6) "Machin" }

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu pourrais nous donner la valeur de la chaine avant le unserialize pour qu'on test ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Venant de la DB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    a:2:{s:4:"titre1";s:5:"Impli";s:3:"titre2";s:5:"Machin";}
    L'array crée à la volée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    array("titre1"=>"Impli","titre2"=>"Machin");


    A noter que le tableau venant de la DB est correctement crée (vérifié lors du débugage).

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 11
    Par défaut
    Mouhahaha. Je n'ai plus qu'à aller me pendre.


    Erreur de jeunesse (ou de fatigue, j'vous laisse décider) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r(ksort($mon_array));
    -> Pas bon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ksort($mon_arr); print_r($mon_arr);
    -> Bon.


    Une simple (et idiote ?) mauvaise utilisation de la fonction.
    Je reste quand même curieux de savoir pourquoi le fait d'affecter ksort à une variable génére une erreur ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var = ksort($array) // False
    ksort($array) // True


    Mais pour conclure, je vous remercie pour votre aide ! ; )

Discussions similaires

  1. PHPExcel erreur sur array
    Par bjo393 dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2013, 16h14
  2. [Exchange 2010] Erreur HTTP 500 sur Autodiscover après MAJ SP
    Par webrider dans le forum Exchange Server
    Réponses: 0
    Dernier message: 29/05/2012, 15h25
  3. Tri sur array : erreur de script
    Par Zuthos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/05/2011, 15h53
  4. Réponses: 13
    Dernier message: 24/06/2009, 08h19
  5. [VB6] Erreur 9 sur redim preserve
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 22/10/2002, 17h29

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