PHP5 / Array /Json

Résolu
ZMEX Messages postés 51 Statut Membre -  
Defouille Messages postés 404 Statut Membre -
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

  1. ZMEX Messages postés 51 Statut Membre 16
     
    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
    1. Defouille Messages postés 404 Statut Membre 54
       
      $tab = array();
      foreach($nomColonne as $champs => $valeur)
          $tab[$champs] = $valeur ;
      0
  2. ZMEX Messages postés 51 Statut Membre 16
     
    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
    1. Defouille Messages postés 404 Statut Membre 54
       
      Niquel !
      Avec plaisir :)
      0
  3. Defouille Messages postés 404 Statut Membre 54
     
    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