PHP serialize / unserialize

Résolu/Fermé
magicfab2008 Messages postés 10 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 22 mai 2009 - 22 août 2008 à 11:51
magicfab2008 Messages postés 10 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 22 mai 2009 - 23 août 2008 à 17:28
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 jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
22 août 2008 à 12:05
Salut,

N'inverses tu pas serialize et deserialize ?

----- SERIALIZE ---->
OBJET CHAINE
<--- DESERIALIZE ---
0
magicfab2008 Messages postés 10 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 22 mai 2009 4
22 août 2008 à 13:49
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 jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
22 août 2008 à 13:59
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 samedi 9 août 2008 Statut Membre Dernière intervention 22 mai 2009 4
23 août 2008 à 17:28
Oui tout a fait c'est ca.

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

et ca marche!!
0