[RESOLU] Transformer un array PHP en Json

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] Transformer un array PHP en Json

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 12:52

Un tout grand merci à toi ! Effectivement ça fonctionne, je vais pouvoir avancer :-)

Re: Transformer un array PHP en Json

par Saian » 29 avr. 2015, 12:45

Si le var_dump après le fetchAll retourne bien ce que tu as affiché dans le premier post, je peux t'assurer qu'un echo $data['text'] (juste après le $data['text'] = ...) va bien afficher :
600000 spectateurs à la Parade
$sqlReq->setFetchMode(PDO::FETCH_ASSOC);
$sqlReq->execute();
$link = $sqlReq->fetchAll();
var_dump($link);
/*
array(1) {
  [0]=>
  array(3) {
    ["event_tks_type"]=>
    string(6) "Parade"
    ["metrics_tks_number"]=>
    string(6) "600000"
    ["metrics_tks_name"]=>
    string(11) "spectateurs"
  }
}
*/
$data['text'] = $link[0]['metrics_tks_number'].' '.$link[0]['metrics_tks_name'].' à la '.$link[0]['event_tks_type'];
echo $data['text'];// 600000 spectateurs à la Parade

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 12:41

Parce que mon application ne lit que "à la" et aucune des données alors que le print_r me renvoie un tableau bien rempli

Re: Transformer un array PHP en Json

par Saian » 29 avr. 2015, 12:32

Pourquoi ne pas faire simplement ça ?
$data['text'] = $link[0]['metrics_tks_number'].' '.$link[0]['metrics_tks_name'].' à la '.$link[0]['event_tks_type'];
$ret = $buffer->post('updates/create', $data);
EDIT
Au lieu de faire un fetchAll tu peux faire un fetch, ça te retournera un tableau avec directement les 3 colonnes au lieu d'avoir un niveau de plus.
Et si tu utilises PDO::FETCH_NUM au lieu de PDO::FETCH_ASSOC tu obtiendras un tableau sans les labels metrics_tks_number etc et lors de la conversion json tu devrais obtenir un tableau contenant uniquement les valeurs.

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 12:07

Le fecthAll me retourne l'array de mon premier message :/

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 12:07

Que veux tu dire par directement ?

Si je procède ainsi c'est parce que l'application à qui j'envoie les données de mon tableau doit être en json.

En gros, l'application Buffer doit pouvoir me montrer une phrase du style : "6000 spectateurs à la parade".

Mais pour qu'il me montre cette phrase, je dois pouvoir récupérer les valeurs "parade", "6000" et "spectateurs" puis les mettre dans une phrase.

Re: Transformer un array PHP en Json

par Saian » 29 avr. 2015, 11:11

Un print_r de $link après le fetchAll retourne quoi ?
Pourquoi chercher à convertir le tableau en json si tu veux écrire une chaine de caractère avec les données du tableau ? Pourquoi ne pas le faire directement ?

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 11:01

Je n'arrive pas a prendre les valeurs de mon tableau associatif pour l'envoyer en json a mon api.

Du coup, mon application me montre ceci : {"event_tks_type":"Parade","metrics_tks_number":"600000","metrics_tks_name":"spectateurs"}
au lieu d'avoir juste "Parade", "60000" et "spectateurs" et pourquoi pas une jolie phrase avec ces valeurs. Je ne sais pas si je suis claire :/

Re: Transformer un array PHP en Json

par Saian » 29 avr. 2015, 10:30

Bonjour, quel est le problème que tu rencontres avec ce code ?

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 09:54

Voilà les étapes de mon code :

Mon api (Buffer) reçoit les données en Json

1. J'utilise le PDO pour me connecter à ma base de données MySql
2. Je fais un select de 3 données
3. Les données sélectionnées sont mis dans un fetch_assoc donc dans un tableau associatif.
4. J'utilise json_encode pour tranformer mon array PHP en Json
5. J'envoie cette transformation via une methode pour l'envoyer à mon application Buffer

Si ma logique est bonne, alors j'ai un problème de syntaxe :
$sqlReq = $db->prepare("SELECT event_tks_type, metrics_tks_number, metrics_tks_name
FROM `vtiger_event` 
JOIN vtiger_metrics ON metrics_tks_event = eventid
JOIN vtiger_crmentity ON crmid = metricsid
WHERE deleted =0
AND metrics_tks_number = ( 
SELECT metrics_tks_number
FROM vtiger_metrics
JOIN vtiger_crmentity ON crmid = metricsid
WHERE deleted =0
ORDER BY CAST( metrics_tks_number AS SIGNED ) DESC 
LIMIT 1 )");

$sqlReq->setFetchMode(PDO::FETCH_ASSOC);
$sqlReq->execute();

$link = $sqlReq->fetchAll();

// Envoi des données vers le queue du compte Buffer

$data['text'] = json_encode($link);

// var_dump($link);

$ret = $buffer->post('updates/create', $data, json_encode($link));

// var_dump($ret);

Re: Transformer un array PHP en Json

par LylouBeta » 29 avr. 2015, 09:46

Merci Saian pour ta réponse rapide :-)
J'ai utilisé le json_encode et malgré tout je n'ai pas le resultat voulu.

Re: Transformer un array PHP en Json

par Saian » 28 avr. 2015, 17:06

Salut qu'entends tu par "les parser en Json" ?
S'il s'agit de les convertir en json fait simplement un json_encode de ton tableau.

Transformer un array PHP en Json

par LylouBeta » 28 avr. 2015, 17:03

Bonjour à tous,

Dans mon projet, je dois récupérer des données dans MySql via un Select puis prendre les valeurs des champs pour les parser en Json. J'ignore comment procéder ...

Voici mon array PHP
array(1) {
  [0]=>
  array(3) {
    ["event_tks_type"]=>
    string(6) "Parade"
    ["metrics_tks_number"]=>
    string(6) "600000"
    ["metrics_tks_name"]=>
    string(11) "spectateurs"
  }
}