Rechercher : dans
Par :

PHP serialize / unserialize

Dernière réponse le 23 aoû 2008 à 17:28:44 magicfab2008, le 22 aoû 2008 à 11:51:39 
 Signaler ce message aux modérateurs

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();

?>

Configuration: Windows XP
Firefox 3.0.1

Meilleures réponses pour « PHP serialize / unserialize » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...

1

Dr Zoidberg, le 22 aoû 2008 à 12:05:40

Salut,

N'inverses tu pas serialize et deserialize ?

----- SERIALIZE ---->
OBJET CHAINE
<--- DESERIALIZE ---

Répondre à Dr Zoidberg

2

magicfab2008, le 22 aoû 2008 à 13:49:22

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?

Répondre à magicfab2008

3

Dr Zoidberg, le 22 aoû 2008 à 13:59:07

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

Répondre à Dr Zoidberg

4

 magicfab2008, le 23 aoû 2008 à 17:28:44

Oui tout a fait c'est ca.

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

et ca marche!!

Répondre à magicfab2008