[RESOLU] recuperer les valeurs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] recuperer les valeurs

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 17:14

DONE !!!!!
$sql='SELECT fieldparams FROM vl_fields WHERE id=3';
$reponse = $dbh->query($sql);
while ($donnees = $reponse->fetch())
{
$myvar=$donnees['fieldparams'];
$myvar2=json_decode($myvar, true);
foreach ($myvar2['options'] as $value) {
echo $value['value'].' '.$value['name'].'<br/>';
}

}
$reponse->closeCursor();

Merci Spols pour ton soutien et tes suggestions qui m'auront guidé jusqu'à la sortie !
A la fin de la journée, ça faire cher la ligne de code...

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 16:51

$myvar=$donnees['fieldparams'];
$myvar2=var_dump(json_decode($myvar, true));
foreach ($myvar2['options'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}
comme vu plus haut ne me donne rien...

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 16:21

ok, en passant par une bonne vieille connexion directe à base de donnees, j'utilise un non moins vieux bout de code
$sql='SELECT fieldparams FROM vl_fields WHERE id=3';
$reponse = $dbh->query($sql);
while ($donnees = $reponse->fetch())
{
$myvar=$donnees['fieldparams'];
var_dump(json_decode($myvar, true));
}
Ce qui me donne :
array(2) { ["multiple"]=> string(0) ""
["options"]=> array(4) {
["options0"]=> array(2) { ["name"]=> string(11) "Association" ["value"]=> string(1) "1" }
["options1"]=> array(2) { ["name"]=> string(11) "Commerçant" ["value"]=> string(1) "2" }
["options2"]=> array(2) { ["name"]=> string(7) "Artisan" ["value"]=> string(1) "3" }
["options3"]=> array(2) { ["name"]=> string(10) "Producteur" ["value"]=> string(1) "4" } } }
qui d'apres ce que je peux voir est beaucoup plus utilisable, maintenant, me reste à faire mon foreach... un lead?

Re: recuperer les valeurs

par Spols » 11 avr. 2019, 15:55

var_dump(json_decode($row['fieldparams'],TRUE));

le TRUE doit être dans la fonction json_decode par Var_dump

et il faut préciser quelle champs de $row tu veux utiliser.

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 15:40

Ça me gave grave !
Si je lui donne

$json = '{"multiple":"","options":{"options0":{"name":"Association","value":"1"},"options1":{"name":"Commer\u00e7ant","value":"2"},"options2":{"name":"Artisan","value":"3"},"options3":{"name":"Producteur","value":"4"}}}';
var_dump(json_decode($json));
ou json est la valeur exacte de mon parametre, il me renvoie

object(stdClass)#998 (2) { ["multiple"]=> string(0) "" ["options"]=> object(stdClass)#1032 (4) { ["options0"]=> object(stdClass)#1031 (2) { ["name"]=> string(11) "Association" ["value"]=> string(1) "1" } ["options1"]=> object(stdClass)#1033 (2) { ["name"]=> string(11) "Commerçant" ["value"]=> string(1) "2" } ["options2"]=> object(stdClass)#1034 (2) { ["name"]=> string(7) "Artisan" ["value"]=> string(1) "3" } ["options3"]=> object(stdClass)#1035 (2) { ["name"]=> string(10) "Producteur" ["value"]=> string(1) "4" } } }

avec lequel on pourrait peut-être commencer à bosser...
Malheureusement, le systeme force un loadAssoc(); qui du coup le transforme en stdObject qui lui ne se reconnait pas (NULL bool(true) ???)

Un moyen d'avoir un raw import de ce qui est dans la base sans passer par les objets???

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 15:06

var_dump(json_decode($row),TRUE);
me renvoie NULL bool(true) ???

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 14:59

ok, pas d'erreur notoire,
j'ai un
array(1) { ["fieldparams"]=> string(210) "{"multiple":"","options":{"options0":{"name":"Association","value":"1"},"options1":{"name":"Commer\u00e7ant","value":"2"},"options2":{"name":"Artisan","value":"3"},"options3":{"name":"Producteur","value":"4"}}}" }
sur mon var_dump($row)

Re: recuperer les valeurs

par Spols » 11 avr. 2019, 13:27

commence par afficher toutes tes erreurs et puis test avec var_dump() le contenu de tes variables y compris $option dans ta boucle.

Re: recuperer les valeurs

par UserB » 11 avr. 2019, 10:52

Salut Spols,
le code
foreach (json_decode($row['fieldparams'], TRUE)['option'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}
ne me renvoie rien, si je le mets tel quel, j'ai un message d'erreur dans mon éditeur que ce dernier ne me renvoie pas si je mets

$myrow=json_decode($row['fieldparams'], TRUE);
foreach ($myrow['option'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}

Qui, vous me direz ne me renvoie rien non plus...
Je vais pleurer ...

Re: recuperer les valeurs

par Spols » 11 avr. 2019, 08:01

ah oui par défaut json_decode fourni un objet

donc ajouter True comme 2eme paramètre devrait régler le problème
foreach (json_decode($row['fieldparams'], TRUE)['option'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}

Re: recuperer les valeurs

par UserB » 10 avr. 2019, 15:23

eh beh non...,
du coup, j'obtiens "Cannot use object of type stdClass as array", désolé mais cela commence a devenir vraiment obscur chez moi...

Re: recuperer les valeurs

par Spols » 10 avr. 2019, 14:38

ok je viens de comprendre tu récupère du json, pas un tableau.

utilise json_decode
https://www.php.net/manual/fr/function.json-decode.php
foreach (json_decode($row['fieldparams'])['option'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}
a vérifier avec quelque var_dump() pour la syntaxe exacte.

Re: recuperer les valeurs

par UserB » 10 avr. 2019, 14:26

Salut Spols,
merci pour ton aide, malheureusement, il ne m'affiche rien du tout!
$query = $db -> getQuery(true);
$query = 'SELECT fieldparams FROM vl_fields WHERE id=3';
$db->setQuery($query);
$row = $db->loadAssoc();
#print_r($row);
foreach ($row['fieldparams']['options'] as $option) {
echo $option['value'].' '.$option['name'].'<br/>';
}

Re: recuperer les valeurs

par Spols » 10 avr. 2019, 13:36

foreach ($row['fieldparams']['options'] as $option) {
//ici tu aura $option['name'] et $option['value']
}

Re: recuperer les valeurs

par UserB » 10 avr. 2019, 12:56

ok, j'ai changé un peu le code,
je l'ai rempalcé pour
$query = $db -> getQuery(true);
$query = 'SELECT fieldparams FROM vl_fields WHERE id=3';
$db->setQuery($query);
$row = $db->loadAssoc();
print_r($row);

du coup, j'obtiens un array
Array ( [fieldparams] => {"multiple":"","options":{"options0":{"name":"Association","value":"1"},"options1":{"name":"Commer\u00e7ant","value":"2"},"options2":{"name":"Artisan","value":"3"},"options3":{"name":"Producteur","value":"4"}}} )

Mais alors maintenant, comment je parcours mon array avec un foreach??? (ou autre d'ailleurs) pour récuperer mes options?