PHP5 / Array /Json

Résolu/Fermé
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 - Modifié par ZMEX le 23/08/2010 à 13:46
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 - 23 août 2010 à 16:18
Bonjour,

J'ai un petit souci.
Je veux en PHP5 récupérer un contenu d'une requete en json.
Mon code est :
<?php

include ("bd/ConnectBD.inc.php");
$idcom = connex_objet("ecoconsobd","ConnectBD");
//Création et envoi de la requête SQL
$requeteSQL="SELECT NOM,PRENOM FROM client";
$result = $idcom->query($requeteSQL);

      if (!$result){
            echo $idcom->errno;
            echo $idcom->error;
            echo "erreur : $idcom->error";
            echo "lecture imposible";
      }
      else {
         //init des variables
         $debut = true;
         $nbColonnes= $result ->field_count;
         $nblig = $result -> num_rows;
         $nomColonne = $result -> fetch_field();

            echo "{\"clients\":[";//début de l'objet client et du tableau des résultats
         //test si il y a des résultats
         if ($nblig){
         //boucle sur les différentes lignes de résultats
               while ($row = $result ->fetch_row()) {
                   //gestion de l'accolade du début
                   if ($debut){
                       echo "{";
                       $debut = false;
                   } else {
                       echo ",{";
                   }
                   for($j=0;$j<$nbColonnes;$j++){
                   //foreach ($nomColonne as $j){
                       //$nomColonne=mysql_field_name($result,$j);
                      //$colonne = $result -> fetch_object();

                       echo "\"".$nomColonne->name."\":\"". utf8_encode($row[$nomColonne])."\"";
                       if ($j != $nbColonnes-1)	echo ",";	//conditionne la virgule la dernière colonne
                       }//fin du for


                   echo "}";
                   }//fin du while
         }//fin du if
         //-------
         echo "]}";//cloture le tableau et l'objet
      }
?>



tout cela pour construire un résultat en json de la sorte :
{"clients":[
{"nom":"hanks","prenom":"tom"},
{"nom":"jolie","prenom":"angelina"}
]}




Quand je la teste, j'ai cette erreur :

{"clients":[{
Warning: Illegal offset type in C:\wamp\www\ecotarif\test_req_json.php on line 39
"NOM":"",
Warning: Illegal offset type in C:\wamp\www\ecotarif\test_req_json.php on line 39
"NOM":""},{
Warning: Illegal offset type in C:\wamp\www\ecotarif\test_req_json.php on line 39
"NOM":"",
Warning: Illegal offset type in C:\wamp\www\ecotarif\test_req_json.php on line 39
"NOM":""}]}



s'il vous plait, je n'arrive pas à trouver comment le faire.
merci d'avance.

3 réponses

ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
23 août 2010 à 15:53
merci pour votre réponse !
je suis en train de regarder cette voie.

mais, je n'arrive pas à stocker le résultat de la requete dans un array().

si vous pouvez m'aider à faire la boucle pour construire l'array(). je vous remercie.
comme ça je n'aurais qu'à faire un json_encode de mon array().
2
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
23 août 2010 à 15:58
$tab = array();
foreach($nomColonne as $champs => $valeur)
    $tab[$champs] = $valeur ;
0
ZMEX Messages postés 47 Date d'inscription dimanche 19 avril 2009 Statut Membre Dernière intervention 27 septembre 2010 16
23 août 2010 à 16:15
j'ai fait ce test et cela marche ! merci.

<?php
echo "<hr>";
   $tablo = array();
   $sql="SELECT * FROM client";
   $res = $idcom->query($sql);
   while($lig = $res -> fetch_row())
{
   $tablo[] = $lig;
}

print_r($tablo);
echo "<br>";
echo json_encode($tablo);
?>


resultat :
[["1","toto","titi","rue sans rue","92000","paris"],["2","hero","fifi","23 rue delarue","92000","paris"]]


merci :) !
1
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
23 août 2010 à 16:18
Niquel !
Avec plaisir :)
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
23 août 2010 à 14:17
Bonjour,

tu veux écrire une requete en JSON j'ai l'impression, tu peux regarder du côté de la fonction json_encode, peut être que cela sera plus facile que ta procédure :
https://www.php.net/manual/en/function.json-encode.php

Sinon peux-tu nous dire qu'elle est ta ligne 39 s'il te plait ?
0