PHP serialize / unserialize

Résolu
magicfab2008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
magicfab2008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour, je ne comprends pas :

Je voudrais serializer et deserializer des objets mais je n'y arrive pas car à chaque fois j'ai le message suivant qui s'affiche :

Catchable fatal error: Object of class stdClass could not be converted to string in C:\wamp\www\GDT 2.6.2\pages\test_CimentFormulaireBDD\Test_Ciment.php on line 107

c'est a dire a cette instruction la : $toto = unserialize($key);

Je veux faire passer des objets dans une variable $POST
J'arrive a lire l'objet serializer meme une fois poster mais je n'arrive pas à le serialiser...

Pourquoi?

Le but de ce programme est vachement interressant (de mon point de vu bien entendu^^):
J'indique dans mon formulaire a quel champ de ma BDD est lié mon <input type=text ...> par exemple,
est ensuite une fois posté, il va insérer automatiquement dans le bon champ.
Pour cela je fais des requetes qui reconnaisse les tables et les champs de ma base et je crée des classes grace aux méthodes magiques!
En fait si ce bout de code marchait, ca serait très interressant je pense pour beaucoup de gens dans la construction des formulaires!!

Ci-dessous mon code :


<?php
include("../_Package.php");

class Base
{
var $nom;
var $tab_tables = array();

public function Base($nom)
{
$this->nom = $nom;
}

public function __set($key, $val)
{
$this->tab_tables[(string)$key]= $val;
}

public function __get($key)
{
return $this->tab_tables[$key];
}
}


class Table
{
var $nom;
var $tab_champs = array();

public function Table($nom)
{
$this->nom = $nom;
}

public function __set($key, $val)
{
$this->tab_champs[$key]= $val;
}

public function __get($key)
{
return $this->tab_champs[$key];
}

public function get_nom()
{
return $this->nom;
}
}




mysql_connect( "localhost", "root", "");
mysql_select_db("gdt27");

$obj_base = new Base("gdt27");
$requete_show_tables = "SHOW TABLES";
$resultat_show_tables = mysql_query($requete_show_tables)
or die("Erreur SQL : $requete_show_tables<br/>".mysql_error());
while ($tuple_show_tables = mysql_fetch_array($resultat_show_tables))
{
$nom_table = $tuple_show_tables[0];
$obj_table = new Table($nom_table);
$requete_show_columns = "SHOW COLUMNS FROM $nom_table";
$resultat_show_columns = mysql_query($requete_show_columns)
or die("Erreur SQL : $requete_show_columns<br/>".mysql_error());
while ($tuple_show_columns = mysql_fetch_array($resultat_show_columns))
{
$nom_colonne = $tuple_show_columns[0];
$obj_colonne = mysql_fetch_field(mysql_query("SELECT $nom_colonne FROM $nom_table"));
$obj_table->{$obj_colonne->name} = $obj_colonne;
}
$obj_base->{$obj_table->get_nom()} = $obj_table;
echo "<br/>";
}

mysql_close();

$form_creation_demande = new Formulaire();
$form_creation_demande->set_action_post("Test_Ciment.php");
$form_creation_demande->set_titre("TEST");
$form_creation_demande->ajouter_bouton_submit('envoyer');

if(isset($_POST['envoyer/']))
{
foreach($_POST as $key=>$val)
{

$toto = unserialize($key);
echo "\$toto : $toto<br/>";
}
}

$rubrique_creation_demande = $form_creation_demande->get_super_rubrique();
$rubrique_objet = new Rubrique();
$rubrique_objet->set_fieldset_style("Objet Demande");

$var_post = serialize($obj_base->demande->objet_demande);
$txt_objet = new Text($var_post);
$txt_objet->set_etiquette("objet");
$rubrique_objet->ajouter($txt_objet);

$rubrique_creation_demande->ajouter($rubrique_objet);

$form_creation_demande->afficher();

?>
A voir également:

4 réponses

Dr Zoidberg Messages postés 529 Date d'inscription   Statut Membre Dernière intervention   100
 
Salut,

N'inverses tu pas serialize et deserialize ?

----- SERIALIZE ---->
OBJET CHAINE
<--- DESERIALIZE ---
0
magicfab2008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   4
 
J'utilise serialize pour transformer mon objet en string et pour le faire passer dans la variable $_POST
J'utilise unserialize pour transformer mon string en objet et donc pour récupérer mon objet.
Porquoi ya un blem avec ca?
0
Dr Zoidberg Messages postés 529 Date d'inscription   Statut Membre Dernière intervention   100
 
C'est bien ça mais dans ce bout de code (j'ai pas tout lu en détail)
foreach($_POST as $key=>$val)
{
$toto = unserialize($key);
echo "\$toto : $toto<br/>";
} 

Tu déserialises une clé de tableau, et tu essaies d'afficher le résultat (?)
C'est ça qui me trouble
0
magicfab2008 Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   4
 
Oui tout a fait c'est ca.

Je veux associer ma valeur à un champ d'une table de ma BDD!!

et ca marche!!
0