JeuWeb - Crée ton jeu par navigateur
[Résolu] (un) serialize - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [Résolu] (un) serialize (/showthread.php?tid=2929)



[Résolu] (un) serialize - Ruz - 20-08-2008

Hello!
Petite question suite à un comportement bizarre du code: Comment stocker un objet en bdd et le récupérer sur la page plus loin?

l'idée étant:
le joueur se connecte, choisi le perso à activer... hop, activation, génération de l'objet 'perso' => stockage dans un champ 'objet' de la bdd.
(Objet = "serialize($p)" )
Que je peux récupérer plus loin, pour une donnée quelconque (combat, compétence, jet opposition, etc...)

Page d'inventaire:
1)Select Objet from perso Where ID=*id_perso*
2)j'inclus ma déclaration de classe
3) je le remet en place avec
$p=unserialize($p["Objet"]);

et non, ca marche pas...
Y a des trucs à faire gaffe? c'est pas la bonne méthode? enfin, bref: qu'est-ce qui pourrait faire que ca déconne? (sachant que ca marchait pendant les phases de tests)
un addslashes(serialize($objet)) est-il utile à l'enregistrement?


RE: (un) serialize - Tekmerak - 20-08-2008

Tu pourais pas plutot mettre le code complet STP ?


RE: (un) serialize - Anthor - 20-08-2008

As tu bien instancié ta classe en retour ?

Voir : http://fr.php.net/manual/fr/language.oop.serialization.php


RE: (un) serialize - Cartman34 - 20-08-2008

Quelle est la chaîne rendue par mysql ?
As tu échappé les guillemets ?


RE: (un) serialize - Ruz - 21-08-2008

arf...
rien de tout ca, en fait, mais merci!

L'erreur débile... de mauvaise interprétation
A l'activation: méthode construct d'un objet...

Dans l'inventaire, je remet mon objet à jour partiellement, via une méthode de l'objet (appelée aussi par le construct). La méthode en appelle une autre (Maj magie), qui en appelle une autre (maj_caracs), etc...
Sauf que la dernière méthode, je l'ai tjs pas mise en fonction... donc, partie intégrante du construct... donc pas appellée si je demande juste une mise à jour...

En résumé, mon objet est bien sauvegardé, et bien mis à jour... y a juste que la dernière partie n'est pas finie, et que c'est ca qui bloquait (alors que je pensais qu'il ne me sauvegardait pas mon objet mis à jour... ce qui se fait, au final ^^)

je corrige ce point, et je vois si c'est bien ca...
Je met pas encore le tag [Resolu] car un autre truc me turlupine... vais vérifier un truc avant de cloturer le sujet.


RE: [En correction] (un) serialize - Ruz - 21-08-2008

Bon, c'était bien ca ...
Honte sur moi.

Première erreur : mise à jour incomplète de l'objet perso. (corrigé)
Deuxième errzeur, sur une autre page, de débuggage: mauvaise méthode appelée => erreurs.

Résolu, donc ^^


RE: [Résolu] (un) serialize - Ter Rowan - 21-08-2008

question certainement très bête

Quel intérêt de stocker toutes les propriétés dans un seul champ de la BDD et pas dans autant de champs qu'il y a de propriétés ?

je suis pas du tout dans une question polémique / péjorative, mais j'aimerai juste comprendre cette démarche que je n'applique pas perso ?


RE: [Résolu] (un) serialize - Ruz - 21-08-2008

données volatiles...
a chaque changement d'équipement, chaque sort, chaque environnement, les caracs du perso changent...

Je stocke donc les valeurs qui ne changent pas, et je recalcule à chaque session de jeu ce qui en découle... ce qui est plutot lourd. (une dizaine de requetes + traitement)
Donc, je crée mon perso une bonne fois, à l'activation... et je stocke ce résultat.
Ensuite, a chaque page du jeu, j'ai une seule requete à faire pour récupérer un perso complet, et à jour.
Au final, c'est une économie processeur pour une perte minime de place.

A la déconnection, je vide le champ. (et ceux qui se déconnectent pas, ben... faut que je trouve un malus... a traiter pendant le chron nocturne sur les perso dont le champ n'est pas NULL ^^)

L'(avenir me dira si je vois juste ou pas ^^


RE: [Résolu] (un) serialize - Ter Rowan - 21-08-2008

oki

n'hésite pas à partager la dessus Smile

pour l'instant je fais du "beau" modèle qu on apprend à l'école des théories basiques mais je n'ai aucune visibilité sur l'optimisation que l'on pourrait faire pour de telles transactions


RE: [Résolu] (un) serialize - Ruz - 21-08-2008

bah, moi pareil ^^
mon site, c'est mon TFE, après tout ^^

Sauf que bon, optimiser, c'est tjs bien d'y penser avant, pendant, et après ^^
tout en restant un peu cohérent...
C'est jamais que la 3e fois que je reprends mon système d 'inventaire ^^ (mais bon, c'est aussi la 3e version/orientation du site... a chaque but, ses nécessités. Ce qui est bon pour l'un n'est pas forcément le meilleur pour un autre.)

Waaaa... j'arrive a pondre de belles phrases,parfois, quand meme ^^
Bon, la noter pour le TFE...