Serialize + Split

Serialize + Split - PHP - Programmation

Marsh Posté le 22-07-2003 à 12:20:53    

Bonjour je code un gestionnaire d'article et afin d'améliorer la mise en page j'ai plusieurs tableau(php).
Dans mon formulaire d'ajout:
j'ajoute:

Code :
  1. $nbrpara = count($titre);
  2.            for($i=0 ;$i<$nbrpara; $i++)
  3.             {
  4. $texte[$i] = "$titre[$i] - $paragraphe[$i] - $image[$i]";
  5.             }
  6. $textedb = serialize($texte);


$titre,$paragraphe et image sont liées par $i.
Tout ceic est bien dans ma base de donnée.
Mais maintenant j'aimerai le dechiffré:

Code :
  1. texte = unserialize($data[texte]);
  2. $nbr=count($texte);
  3. echo $nbr;
  4. for($i=0;$i<$nbr;$i++)
  5. {
  6. list($titren[$i],$paragraphe[$i],$image[$i]) = split("-",$texte[$i]);
  7. }
  8. $nbrpara = count($titren);
  9. for($i=0 ;$i<$nbrpara; $i++)
  10. {
  11. echo "$image[$i] $titre[$i] paragraphe[$i]
  12. }


 
Malheureusement le dechiffrage ne m'affiche rien...
QQ peut m'aider ?
merci d'avance...

Reply

Marsh Posté le 22-07-2003 à 12:20:53   

Reply

Marsh Posté le 22-07-2003 à 12:21:48    

$texte =unserialize(...) non ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 22-07-2003 à 12:35:22    

nan c'est jsute un erreure dan mon copier/coller:(

Reply

Marsh Posté le 22-07-2003 à 12:44:05    

coconutes4 a écrit :


Code :
  1. $nbrpara = count($titre);
  2.            for($i=0 ;$i<$nbrpara; $i++)
  3.             {
  4. $texte[$i] = "$titre[$i] - $paragraphe[$i] - $image[$i]";
  5.             }
  6. $textedb = serialize($texte);



ton code est équivalent à :

Code :
  1. $nbrpara = count($titre);
  2.            for($i=0 ;$i<$nbrpara; $i++)
  3.             {
  4. $texte[$i] = $titre."[".$i."] - ".$paragraphe."[".$i."] - ".$image."[".$i."]";
  5.             }
  6. $textedb = serialize($texte);


J'espères que tu vois un peu mieux la différence entre ce que tu t'étais imaginé et ce qu'il ce passe vraiment. ;)

Reply

Marsh Posté le 22-07-2003 à 13:07:56    

:pfff: tsss tsss tsss ... Tiens omega un petit test pour chez toi:

Code :
  1. $myArray = array('a', 'b', 'c', 'd', 'e', 'f' );
  2. $myArray2 = array(1, 2, 3, 4, 5, 6 );
  3. for($i=0 ;$i<5; $i++)
  4. {
  5.   $texte = "$myArray[$i] - $myArray2[$i]";
  6.   print $texte;
  7. }


Tu obtiens quoi?

Reply

Marsh Posté le 22-07-2003 à 13:33:44    

Anapajari a écrit :

:pfff: tsss tsss tsss ... Tiens omega un petit test pour chez toi:

Code :
  1. $myArray = array('a', 'b', 'c', 'd', 'e', 'f' );
  2. $myArray2 = array(1, 2, 3, 4, 5, 6 );
  3. for($i=0 ;$i<5; $i++)
  4. {
  5.   $texte = "$myArray[$i] - $myArray2[$i]";
  6.   print $texte;
  7. }


Tu obtiens quoi?

Ha oui, autant pour moi, a force de mettre mes variables en dehors des chaines de caractères, j'en avais oublié que pour les tableaux, ca marchait aussi comme ça.

Reply

Marsh Posté le 22-07-2003 à 19:53:38    

donc ?;)

Reply

Marsh Posté le 23-07-2003 à 09:48:59    

Bin dans la deuxieme partie de ton code il manque déjà un $ devant le texte mais je pense que c'est une faute de frappe .
 
Après tu te mélanges un peu les pieds avec $titre puisqu'un fois tu l'appeles $titre et juste après $titren.
 
Quoi qu'il en soit mets des prints un peu partout et regardes à partir d'ou ça marche pas  :D

Reply

Marsh Posté le 23-07-2003 à 10:04:21    

Vérifis tes variables : $titren qui devient $titre un peu plus loin, c'est assez louche
 
Pour un cas si simple, à savoir découper une chaine sur le caractère "-", ne serait-il pas plus imple d'utiliser explode en lieu et place de split qui utilise les expressions régulières.
 

Reply

Marsh Posté le 24-07-2003 à 09:11:34    

Je vais voir pour explode...
Pour titren -> titre erreur de frappe encore

Reply

Marsh Posté le 24-07-2003 à 09:11:34   

Reply

Marsh Posté le 24-07-2003 à 09:44:28    

Voici e code contenue dans ma db

Code :
  1. a:2:{i:0;s:12:"Titre para 1";i:1;s:12:"titre para 2";} - a:2:{i:0;s:12:"text epara 1";i:1;s:12:"texte para 2";} - a:2:{i:0;s:7:"image 1";i:1;s:7:"image 2";}


 
mon code pour decrypté:

Code :
  1. list($titre[$i],$paragraphe[$i],$image[$i]) = explode("-",$data[texte]);
  2. $titre = unserialize($titre);
  3. $paragraphe = unserialize($paragraphe);
  4. $image = unserialize($image);
  5. $nbrpara = count($titre);
  6. for($i=0 ;$i<$nbrpara; $i++)
  7. {
  8. echo $titre[$i] $image[$i] $paragraphe[$i];
  9. }


malheureusement ce code ne m'affiche rien:(

Reply

Marsh Posté le 24-07-2003 à 10:11:13    

Attention a bien effectuer les étapes dans l'ordre inverse de ce que tu as fait pour enregistrer dans la base.
 
Il serait bon que tu montres également le code d'enregistrement.
 
D'après le code que tu as montré en début de topic, je vois que concatène les champs puis que tu serialize. Donc, il faut que tu unserialize puis que tu deconcatène grace à explode.
 
Moi je ferais ca comme ca :
 

Code :
  1. $texte=unserialize($data["texte"]);
  2. for($i=0;$i<sizeof($texte);$i++)
  3. {
  4. list($titre,$paragraphe,$image)= explode("-",$texte[$i]);
  5. echo "$titre $paragraphe $image";
  6. }


Message édité par Lord II le 24-07-2003 à 10:15:21

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 24-07-2003 à 12:59:43    

Code :
  1. $titre = serialize($titre);
  2. $paragraphe = serialize($paragraphe);
  3. $image = serialize($image);
  4. $texte = "$titre - $paragraphe - $image";


Mon code: $texte est envoyé dans la db

Reply

Marsh Posté le 24-07-2003 à 13:04:08    

coconutes4 a écrit :

Code :
  1. $titre = serialize($titre);
  2. $paragraphe = serialize($paragraphe);
  3. $image = serialize($image);
  4. $texte = "$titre - $paragraphe - $image";


Mon code: $texte est envoyé dans la db


 
Dans ce cas, tu fais :
 

Code :
  1. $texte=explode("-",$data["texte"]);
  2. $titre=unserialize($texte[0]);
  3. $paragraphe=unserialize($texte[1]);
  4. $image=unserialize($texte[2]);
  5. for($i=0 ;$i<sizeof($titre); $i++)
  6. {
  7. echo $titre[$i]." " .$image[$i] ." " .$paragraphe[$i];
  8. }


Message édité par Lord II le 24-07-2003 à 13:07:47

---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 24-07-2003 à 13:14:04    

Je viens de voir une petite faute qui a son importance
 

Code :
  1. $texte="$titre-$paragraphe-$image";

 
 
Il ne faut pas qu'il y ait d'espace ou alors le transformateur devient " - ". Si les espaces perdurent après l'explode, alors la fonction serialize a l'air assez perdue.


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 24-07-2003 à 18:17:48    

:pfff:  :pfff:  
merci:D :D  :D  :D

Reply

Marsh Posté le 24-07-2003 à 18:47:44    

J'ai un gros probleme des que je met un " dans ma chaine plus rien ne marche :(``\ :??:  :??:

Reply

Marsh Posté le 24-07-2003 à 20:00:49    

Il faut essayer de voir apres qu'elle instructions plus rien ne marche. Cela va permettre de trouver le probleme et d'y remedier ( en encodant par exemple)


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 24-07-2003 à 22:01:40    

j'ai fait un sizeof($titre) et je retrouve 1 a chaque fois quand un de mes champs contient "

Reply

Marsh Posté le 24-07-2003 à 22:16:49    

coconutes4 a écrit :

j'ai fait un sizeof($titre) et je retrouve 1 a chaque fois quand un de mes champs contient "  

Fait un echo entre chaque étape, avant la première et après la dernière par ce que c'est pas en regardant que le résultat final que tu pouras ccomprendre a quel niveau ca plante.

Reply

Marsh Posté le 25-07-2003 à 15:27:41    

j'ai fait un

Code :
  1. $texte=explode("-",$data["texte"]);
  2. sizeof etc...


et ju'ai trouvé 4...
c'est dans l'unserialize que ca merdeuh:(

Reply

Marsh Posté le 25-07-2003 à 15:34:32    

coconutes4 a écrit :

j'ai fait un

Code :
  1. $texte=explode("-",$data["texte"]);
  2. sizeof etc...


et ju'ai trouvé 4...
c'est dans l'unserialize que ca merdeuh:(

T'en avais pas trois au départ? ;)

Reply

Marsh Posté le 25-07-2003 à 17:23:03    

Oué si tu veut lol mais bon j'ai fait plusieur tests:p

Reply

Marsh Posté le 25-07-2003 à 17:41:21    

? ? ? Pourquoi faire simple quand on peu faire compliqué ? ? ?
 

Code :
  1. $texte[0] = $titre;
  2. $texte[1] = $paragraphe;
  3. $texte[2] = $image";
  4. $textedb = serialize($texte);


 

Code :
  1. $texte = unserialize($data[texte]);
  2. $titre = $texte[0];
  3. $paragraphe = $texte[1];
  4. $image = $texte[2]";
  5. for($i=0 ;$i<$nbrpara; $i++)
  6. {
  7.     echo "$image[$i] $titre[$i] paragraphe[$i]";
  8. }


Message édité par Mara's dad le 25-07-2003 à 17:42:46

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 26-07-2003 à 12:30:08    

Oué pas bête lol:)
Enfin j'ai toujours le même probleme : impossible d'unserializer ma chaine quand elle cotient " ou ' ...

Reply

Marsh Posté le 29-07-2003 à 09:54:40    

qu'lqu'un peut m'aider ?...:)

Reply

Marsh Posté le 29-07-2003 à 10:30:09    

C'est quoi ton problème avec les " et ' !

Code :
  1. <?php
  2. $titre[0] = "En route pour les étoiles !";
  3. $paragraphe[0] = "C'est cool les \"Etoiles\"";
  4. $image[0] = "stars.jpg";
  5. $titre[1] = "A dada sur ma moto.";
  6. $paragraphe[1] = "Mara : 'Moi aussi ze veux monter sur la moto de papa'!";
  7. $image[1] = "moto.jpg";
  8. $texte[0] = $titre;
  9. $texte[1] = $paragraphe;
  10. $texte[2] = $image;
  11.  
  12. $textedb = serialize($texte);
  13.  
  14. $texte = unserialize($textedb);
  15.  
  16. $titre = $texte[0];
  17. $paragraphe = $texte[1];
  18. $image = $texte[2];
  19.  
  20. for($i=0 ;$i<count($titre); $i++)
  21. {
  22. echo "$image[$i]<br>$titre[$i]<br>$paragraphe[$i]<hr>";
  23. }
  24. ?>


 
Si c'est des " et ' qui viennent de formulaire, ben essaye la fonction qui va bien :
 
http://fr.php.net/manual/fr/function.addslashes.php


Message édité par Mara's dad le 29-07-2003 à 10:30:36

---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed