Aller au contenu

Stocker des tableaux php complexes en base de données


QuentinC

Sujets conseillés

Bonjour,

J'aimerais savoir comment s'y prendre pour stocker des tableaux complexes en base de donnée.

Que faut-il faire ?

- Stocker un bout de code php à évaluer (pour la sécurité c'est pas top)

- Une chaîne à exploder/imploder (ça va pour les tableaux simples, mais après ?)

- du XML (c'est pas un peu sortir un tank pour tuer une mouche ? la conversion des données est extrêmement compliquée)

- autre idée ?

Pour ce que je veux vaire ici, la structure de mes tableaux à stoker est complexe mais néanmoins fixe.

En fait j'ai un tableau associatif, et chaque clé contient elle-même un tableau simple avec une valeur chaîne et une valeur numérique.

Merci pour votre aide.

Lien vers le commentaire
Partager sur d’autres sites

La première solution est effectivement a éviter. A la limite tu sérialise ton tableau pour le stocker et tu le déserialisera pour le lire (au moins ça évite de devoir évaluer ton code PHP).

Je trouve la seconde solution peu pertinente, autant partir sur la première solution.

L'avantage du XML est la réutilisation de ton tableau à partir d'autres appli sans aucun problème importation de tes données.

Tes tableaux ont certes peut être une structure complexe, mais est ce que le temps que tu mets à les créer nécessite réellement un stockage ??

Lien vers le commentaire
Partager sur d’autres sites

La première solution est effectivement a éviter. A la limite tu sérialise ton tableau pour le stocker et tu le déserialisera pour le lire (au moins ça évite

de devoir évaluer ton code PHP).

Le problème c'est qu'il est quasiment impossible de décoder manuellement un tableau sérialisé. Mais je retiens l'idée, je n'y avais pas pensé.

Je trouve la seconde solution peu pertinente, autant partir sur la première solution.[/quoteš

Oui justement, ça risque de vite devenir une usine à gaz avec de l'explode/implode/regexp et tout le tralala. C'est ce que je pensais mais tu confirmes : à barrer de la liste.

L'avantage du XML est la réutilisation de ton tableau à partir d'autres appli sans aucun problème importation de tes données.

Ca en fait je m'en fiche, je n'utilise que ces données pour mon jeu. Donc tant que je peux lire/modifier les données autant par script que manuellement dans phpmyadmin, ça me suffit.

Et pour ouvrir un XML et le lire en php, c'est pas très évident.

Tes tableaux ont certes peut être une structure complexe, mais est ce que le temps que tu mets à les créer nécessite réellement un stockage ??

Je comprends pas vraiment où tu veux en venir avec cette phrase. Peux-tu expliquer ?

Merci.

Désolé pour le double-post, impossible d'éditer mes erreurs en ce qui concerne le bbcode. Le bouton éditer ne fonctionne pas.

Lien vers le commentaire
Partager sur d’autres sites

Ma dernière question portait sur le temps d'éxécution que tu mettais pour créer ton tableau. Si c'était vraiment impossible de le recréer à chaque fois.

Le problème c'est qu'il est quasiment impossible de décoder manuellement un tableau sérialisé.

Pourquoi veux tu le faire à la main ??

	$vTableau = array('un','deux','trois');

$toto = serialize($vTableau);

echo $toto;

$toto = unserialize($toto);

echo $toto;

Un truc comme ça, cela ne te plait pas ??

Edit: Ah oui non avec ca tu pourras pas lire et décoder ton talbeau dans phpmyadmin (j'ai compris ce que tu voulais dire par manuellement).

Lien vers le commentaire
Partager sur d’autres sites

Voilà, tu as compris. J'aimerais un truc que je puisse autant modifier par script que manuellement dans un gestionnaire type phpmyadmin.

D'autres idées dans le post sur phpdebutant dont j'ai fait un copier-coller : http://www.phpdebutant.org/forum_msg249923.php

IL y est question de créer une nouvelle table. Étant donné l'utilisation que j'aimerais faire de ces tableaux, ça me complique inutilement les choses et ça mobilise le serveur SQL qui en a déjà assez à faire avec une quinzaine de requêtes par page.

Lien vers le commentaire
Partager sur d’autres sites

Comme j'aime pas faire d'évaluation de code dans les scripts (à tord peut être), tu crées deux champs, un champ avec le code de ton tableau en php et un champ avec ton tableau serialisé.

Tu ajoutes également un autre champ (un booléen) pour savoir si ton tableau a été sérialisé ou pas. L'idéal c'est que ce champ soit mis à jour à partir d'un trigger à chaque modification du champ qui contient ton tableau.

Ensuite, tu crées une moulinette qui récupère à partir de ton champ booléen les champs qui contiennent une sérialisation non actualisée et tu la mets à jour.

Bon c'est un peu tiré par les cheveux mais bon ;o)

Lien vers le commentaire
Partager sur d’autres sites

Ben il faut bien l'évaluer à un moment donné, le code, dans l'exemple que tu donnes.

Perso je n'aime pas trop eval non plus, c'est que ça peut être un gouffre en matière de sécurité.

Pour ce qui est des trigger, oublie, mon hébergeur mutualisé est encore à mysql 3.

JE sais pas si c'est une bonne idée, mais je suis parti sur une version de serialize perso, qui me donne un truc du type :

cle1=chaine1,1.0

cle2=chaine2,2.0

cle3=chaine3,3.0

JE me demande si ça chengerait beaucoup de chose si je transforme le tableau associatif en tableau normal. Il n'est pas encore trop tard pour le faire. Tant que les boucles foreach ($tableau as $cle=>$valeur) fonctionnent aussi pour les tableaux à clés numériques...

Lien vers le commentaire
Partager sur d’autres sites

Ben il faut bien l'évaluer à un moment donné, le code, dans l'exemple que tu donnes.

Sauf que tu l'evalueras dans un et un unique script qui n'aura pour job que l'evaluation et la sérialization de ton tableau.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...