petit problème pour unserializer des données

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : petit problème pour unserializer des données

par latitude » 02 mars 2007, 13:17

ok, je comprend, je test ca merci (la seconde solution, car le "cc" est fixe, mais effectivemetn la clef change pour le pseudo)

merci

par Ryle » 02 mars 2007, 13:01

Pas de honte à avoir, c'est un forum pour apprendre :)

Tu as plusieurs solutions pour parcourir ton tableau. La plus simple, si tu connais tes index, c'est de les appeler directement :
// Array ( [cc] => Array ( [603] => kumkat ) ) )

echo $tableau['cc'][603]; // affiche : "kumkat"
Si tu ne les connais pas ou partiellement (si tu as toujours le cc, mais que tu ne connais pas le 603), il faut utiliser une boucle et parcourir le tableau pour récupérer les enregistrements un par un. Pour cela, il y a également plusieurs solutions, en voici une :
// pour chaque élément du tableau $tableau['cc']
foreach ($tableau['cc'] as $key => $val) { // on affecte l'index dans $key et la valeur dans $val
  // on va donc avoir $key==603 et $val=='kumkat'
  echo $val; // affiche donc : "kumkat"
}
Si jamais tu ne connais pas non plus l'index "cc", il suffit d'imbriquer tout cela dans un autre foreach :) (attention dans ce cas à changer les noms des variables $key et $val pour qu'elles ne soient pas écrasées quand tu rentres dans la seconde boucle :))

par latitude » 02 mars 2007, 12:49

oui, si j'applique unserialize() à mon champs de bdd j'ai bien ca ( exemple :Array ( [cc] => Array ( [603] => kumkat ) ) ), reste a parcourir l'index, ..mais faut qu'on m'aide, je comprend pas comment on fait (j'ai honte !)

merci

par Ryle » 02 mars 2007, 11:32

Pareil que Truc... récupère la valeur dans ta base et colle là dans une variable php et passe là en paramètre à unserialize(). Fait un print_r() sur le résultat obtenu et tu verras la tête de ta variable déserialisée :)

'i' => int, 'a' => array, 's' => string. Pour ces deux derniers, la valeur qui suit est la taille. A vue de nez, tu devrais donc obtenir un truc comme ça :
a:1:{s:2:"cc";a:1:{i:546;s:5:"Ben01";}} 

Array ( 
   "cc" => Array (
      546 => "Ben01"
   )
)
Et donc pour récupérer la chaine, tu devrais juste avoir à parcourir le tableau en suivant les index :)

par Truc » 02 mars 2007, 02:05

Salut,
Montre nous ce que tu as essayé...
suffirait d'un unserialize() sur le champ récupéré de la BD :-k

petit problème pour unserializer des données

par latitude » 01 mars 2007, 23:54

bonjour,

voilà, je récupère des données venant d'une bdd d'un forum pour un affichage, j'ai un champs d'option qui est "serializé" et visiblement il s'agit d'un imbriquement de 2 serie je vous donne l'exemple :

a:1:{s:2:"cc";a:1:{i:546;s:5:"Ben01";}}

je veux récupérer juste le BEN01 et j'arrive pas a manipuler la comment unserialize pour l'obtenir

si vous pouviez m'aider , merci