Téléchargement
illégal
Posez votre question Signaler

PHP5 / Array /Json [Résolu]

ZMEX 46Messages postés 19 avril 2009Date d'inscription 27 septembre 2010Dernière intervention - Dernière réponse le 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.
Lire la suite 

PHP5 / Array /Json »

5 réponses
Réponse
+1
moins plus
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().
Defouille- 23 août 2010 à 15:58
$tab = array();
foreach($nomColonne as $champs => $valeur)
    $tab[$champs] = $valeur ;
Ajouter un commentaire
Réponse
+1
moins plus
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 :) !
Defouille- 23 août 2010 à 16:18
Niquel !
Avec plaisir :)
Ajouter un commentaire
Réponse
+0
moins plus
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 :
http://fr.php.net/manual/en/function.json-encode.php

Sinon peux-tu nous dire qu'elle est ta ligne 39 s'il te plait ?
Ajouter un commentaire
Ce document intitulé « PHP5 / Array /Json » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?