2013-05-21 5 views
0

lecteur temps long premier questionneur temps ...Extraction de données spécifiques à partir d'une grande quantité de données en une seule « cellule » d'une base de données MySQL

Je tente d'utiliser Drupal pour créer un ensemble de variables, non le problème, tout est en place pour les définir et simple pour le futur opérateur à éditer. Je dois ensuite saisir ces valeurs en php, toujours sur le site mais en dehors de Drupal dans une certaine mesure. Encore une fois, même si je suis un peu léger sur PHP, je peux obtenir ce dont j'ai besoin. Cependant drupal stocke les données dans une seule "cellule" (excuses, j'ai cherché ce que je suis après mais je pense que mon vocabulaire manque pour obtenir le bon résultat!). Voici un exemple de la façon dont il est stocké:

a: 3: {i: 0; a: 3: {s: 5: "valeur"; s: 2: "38"; s: 5: » label "; s: 11:" Coût Per M2 "; s: 6:" poids "; s: 1:" 0 ";} i: 1; a: 3: {s: 5:" valeur "; s: 1: "7"; s: 5: "label"; s: 13: "Arch Dessus Coût"; s: 6: "poids"; s: 1: "1";} i: 2; a: 3 : {s: 5: "value"; s: 1: "5"; s: 5: "label"; s: 13: "Appartement Coût supérieur"; s: 6: "poids"; s: 1: " 2 ";}}

Je peux donc retourner tout le contenu comme ci-dessus, mais je n'ai pas le moindre moyen de l'affiner jusqu'à une référence spécifique. Je peux travailler sur les données sont contenues entre certains ensembles de crochets ainsi, un ref est:

{s:5:"value";s:2:"38";s:5:"label";s:11:"Cost Per M2";s:6:"weight";s:1:"0";} 

Ce que je vraiment besoin est le « 38 » dans l'exemple, car cela est un coût qu'un 2ème système utilise un nombre de pour calculer un coût final.

J'espère que cela a du sens?

Répondre

1

La valeur est sérialisé (voir http://php.net/manual/en/function.serialize.php). Ce que vous voulez faire est de le désérialiser (voir http://www.php.net/manual/en/function.unserialize.php). Il serait donc:

$deserializedValues = unserialize($values). 

Après que vous pouvez appeler les variables en faisant:

$deserializedValues['value'] (if an array) 

$deserializedValues->value (if an object) 
+0

Parfait merci, c'était plus d'un problème de vocabulaire, je ne savais pas qu'il a été décrit comme sérialisé.Je pense que je peux le comprendre maintenant Merci beaucoup! –

0

Drupal renvoie JSON. La propre façon de gérer cela serait d'utiliser la fonction json_decode() de PHP: http://php.net/manual/en/function.json-decode.php

+0

J'ai fait la même erreur ... mate ce n'est pas JSON après les valeurs PHP sérialisés de all..it .. notez le S: 5: "value" ... http://www.php.net/manual/en/function.unserialize.php :( –

+0

Vous avez raison, mon erreur, les valeurs sont sérialisées - sérialiser/désérialiser est ce que vous aurez besoin ici, comme mentionné ci-dessus –

Questions connexes