Recuperer le resultat de cette requete dans un tableau

Résolu/Fermé
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 6 mai 2019 à 02:04
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 - 15 mai 2019 à 18:28
Salut , je veux savoir comment récuperer les resultat de cette requete qui contient plusieurs lignes

<php

$item=array();
$q = mysqli_query($con," SELECT * FROM reclamation WHERE cin_cit = '$postjson[cin]' ");

while( $r=mysqli_fetch_array($q) )
{

$item[] = array (
'rec_id' => $q['rec_id'],
'type_rec' => $q['type_rec'],
'description' => $q['sujet'],
'adresse' => $q['adresse'],
'laptitude' => $q['laptitude'],
'longitude' => $q['longitude'],
'etat_rec' => $q['etat_reclamation'],
'datetime' => $q['datetime'],
'gouvernorat' => $q['nom_gouv'],
'commune' => $q['nom_com'],
'cin_admin' => $q['cin_admin'],
'postal' => $q['postal'],
'fichiers' => $q['justification']
);

}

$result = json_encode(array('items'=>$item));
echo$result;

?>
A voir également:

11 réponses

Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 6 mai 2019 à 09:30
Bonjour,

En avant-propos, juste un mot pour signaler que les fonctions mysqli... ne devraient plus être utilisées pour gérer les requêtes. Penche-toi du côté de PDO.

Sinon, essaie tout simplement de remplacer tout le corps de ta boucle while par :
$item[] = $r;


Certains noms changent, mais est-ce un problème ?

Xavier
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 mai 2019 à 10:55
Attention dans ton code, tu mets des $q là où tu devrais mettre des $r
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 mai 2019 à 10:30
Bonjour,

Ta façon de faire est la bonne.
mais tu as une erreur dans ton code....
$q = mysqli_query($con," SELECT * FROM reclamation WHERE cin_cit = '$postjson[cin]' ");

A remplacer par
$q = mysqli_query($con," SELECT * FROM reclamation WHERE cin_cit = '" . $postjson['cin'] . "'");


PS: A l'avenir, merci de spécifier le LANGAGE dans les balises de code afin d'avoir la coloration syntaxique
Explications sur l'utilisation des balises de code disponible ici ( à lire COMPLETEMENT )
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code


NB: @reivax, pourquoi ne plus utiliser mysqli ? C'est l'extension mysql qui est obsolète, pas la mysqli. (même si perso je préfère le PDO... l'extension mysqli est toujours d'actualité )



0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
6 mai 2019 à 10:55
Au temps pour moi, je pensais que tout ce qui n'était pas PDO était déprécié. J'ai parlé trop vite :)
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
6 mai 2019 à 14:59
Merci mais vos solution n'as pas marché , le array se renvoie vide


même j'ai essayer tous vos solutions


<php

$item=array();
$q = mysqli_fetch_assoc(mysqli_query($con," SELECT * FROM reclamation WHERE cin_cit = '$postjson[cin]' "));

while( $q )
{
$item[] = $q;
}

$result = json_encode(array('items'=>$item));
echo $result;

?>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
6 mai 2019 à 15:09
Tu n'as toujours pas lu le lien que je t'ai donné ????
Qu'as tu fais de ma demande concernant l'utilisation "correcte" des balises de code afin d'avoir la coloration syntaxique ???!!

De plus.. je ne vois pas, dans ta ligne de code, la correction que j'avais faite.....

Je t'invite fortement à afficher les erreurs PHP dans ton code afin que tu puises t'en rendre compte
Donc applique TOUT ce qui est indiqué dans le lien suivant https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
puis reviens nous voir avec le code modifié....
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 7 mai 2019 à 00:23
Dsl
          $item=array();
          $q =  mysqli_fetch_array(mysqli_query($con, " SELECT * FROM reclamation WHERE cin_cit = '" . $postjson['cin'] . "'   "));

          $item[] = array (
            'rec_id' => $q['rec_id'],
            'type_rec' => $q['type_rec'],
            'description' => $q['sujet'],
            'adresse' => $q['adresse'],
            'laptitude' => $q['laptitude'],
            'longitude' => $q['longitude'],
            'etat_rec' => $q['etat_reclamation'],
            'datetime' => $q['datetime'],
            'gouvernorat' => $q['nom_gouv'],
            'commune' => $q['nom_com'],
            'cin_admin' => $q['cin_admin'],
            'postal' => $q['postal'],
            'fichiers' => $q['justification']
          );

          $result = json_encode(array('items'=>$item));
          echo $result;
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
7 mai 2019 à 08:29
Bonjour,

Essaie comme ça :
    $item=array();
    $q =  mysqli_query($con, " SELECT * FROM reclamation WHERE cin_cit = '" . $postjson['cin'] . "'   ");

    while( $r = mysqli_fetch_array($q) )
        $item[] = array (
            'rec_id' => $r['rec_id'],
            'type_rec' => $r['type_rec'],
            'description' => $r['sujet'],
            'adresse' => $r['adresse'],
            'laptitude' => $r['laptitude'],
            'longitude' => $r['longitude'],
            'etat_rec' => $r['etat_reclamation'],
            'datetime' => $r['datetime'],
            'gouvernorat' => $r['nom_gouv'],
            'commune' => $r['nom_com'],
            'cin_admin' => $r['cin_admin'],
            'postal' => $r['postal'],
            'fichiers' => $r['justification']
        );

    $result = json_encode(array('items'=>$item));
    echo $result;

Vérifie également que tous les champs sont bons dans ta base, par exemple 'laptitude' qui ne veut rien dire en français... Un faute de frappe peut-être ? Le champ est bien écrit comme ça en base ?

Alternativement, tu peux faire faire le travail de mapping par SQL, et récupérer la ligne plus directement en Php :
    $item=array();
    $q =  mysqli_query($con, " SELECT rec_id, type_rec, sujet as description, adresse, laptitude, longitude, etat_reclamation as etat_rec, datetime, nom_gouv as gouvernorat, nom_com as commune, cin_admin, postal, justification as fichiers FROM reclamation WHERE cin_cit = '" . $postjson['cin'] . "'   ");

    while( $r = mysqli_fetch_array($q) )
        $item[] = $r;

    $result = json_encode(array('items'=>$item));
    echo $result;


Xavier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
7 mai 2019 à 09:27
Bonjour,

Et avec une petite gestion d'erreur au cas où.. c'est encore mieux
$cin = !empty($postjson['cin']) ? $postjson['cin'] : NULL;

if($cin){
  $sql = "SELECT rec_id
                , type_rec
                , sujet as description
                , adresse
                , laptitude
                , longitude
                , etat_reclamation as etat_rec
                , datetime
                , nom_gouv as gouvernorat
                , nom_com as commune
                , cin_admin
                , postal
                , justification as fichiers
                FROM reclamation 
          WHERE cin_cit = '" . $cin . "'";

  $q =  mysqli_query($con, $sql );

  if(!$q){
    echo "<br><b>ERREUR : </b>".mysqli_error($con);
    echo "<br><b>Requête : </b>".$sql;
  }else{
    $item=array();
    while( $r = mysqli_fetch_array($q))) {
      $item[] = array (
              'rec_id' => $r['rec_id'],
              'type_rec' => $r['type_rec'],
              'description' => $r['sujet'],
              'adresse' => $r['adresse'],
              'laptitude' => $r['laptitude'],
              'longitude' => $r['longitude'],
              'etat_rec' => $r['etat_reclamation'],
              'datetime' => $r['datetime'],
              'gouvernorat' => $r['nom_gouv'],
              'commune' => $r['nom_com'],
              'cin_admin' => $r['cin_admin'],
              'postal' => $r['postal'],
              'fichiers' => $r['justification']
          );
    }
    $result = json_encode(array('items'=>$item));
    echo $result;
  }
}else{
  echo " Aucun CIN envoyé...";
}
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 05:32
Bonjour , le console affiche ça ,


Je pense que le array est encodée en json vide
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 10:19
Tu pourrais nous montrer le code complet de ton fichier php ?
Il manque la connexion à la bdd, la récupération des variables post (ou get) etc...

De plus, active la gestion des erreurs php
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 16:17
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
Modifié le 9 mai 2019 à 16:01
Bonjour , j'utilise php comme un web service pour mon application ionic 3
fichier suivre.php
code php:
<?php
header ("Access-Control-Allow-Origin: *");
header ("Access-Control-Allow-Credentials: true ");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header ("Access-Control-Allow-Headers: X-Custom-Header, Origin, Content-Type , Authorisation , X-Requested-With");
header ("Content-Type: application/json; charset=UTF-8 ");

include "config.php";

$postjson = file_get_contents('php://input', true);
$postjson = json_decode($postjson, true);



$item  = array ();
$qv =  mysqli_query($con, " SELECT * WHERE cin_cit = '" . $postjson['cin'] . "'   ");

while( $r = mysqli_fetch_array($qv) )
  $item[] = $r;

$result = json_encode(array('item'=>$item));

echo $result;



?>


fichier configuration.php

<?php
  define('DB_HOST', 'localhost');
  define('DB_USER', 'root');
  define('DB_PASSWORD', '');
  define('DB_NAME','database');
  $con = mysqli_connect( DB_HOST, DB_USER, DB_PASSWORD, DB_NAME)  or die(mysqli_error());
?>

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 mai 2019 à 16:27
Et où est la gestion d'erreur que je t'ai donné ?

De plus, active l'affichage des erreurs PHP et récupère correctement les variables AVANT de les utiliser ... tel qu'expliqué dans le lien que je t'avais donné dans ma précédente réponse.


En faisant cela... tu aurais vu une belle erreur dans ta requête..... il manque le "FROM "....
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 16:48
je ne comprends pas comment utiliser la gestion d'erreur avec php dsl , j'aiessayé mais c'est difficile pour moi
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 16:53
Je ne peux pas t'expliquer mieux que le lien que je t'ai donné ainsi que le code que je t'ai posté.......
Si tu ne comprends pas... à part reprendre des cours de lecture je ne vois pas trop ce que je pourrais faire de plus.... désolé...

Je te remet le lien qui explique comment écrire ton code et surtout.. comment activer l'affichage des erreurs php : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Et pour ce qui est de vérifier que tes instructions mysqli ne retournent pas d'erreur... et bien :
https://www.w3schools.com/php/func_mysqli_error.asp
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 16:57
Merci dans tous les cas
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
9 mai 2019 à 20:16
Salut j'ai essayé un autre code avec une autre table et il a marché , la seule différance est qu'il ne contient pas $postjson[cin]

je pense que cette erreure est relié seulement a cette variable

le code php de l'autre table qui marche correctement
       $item=array();
           $q =  mysqli_query($con, "SELECT * FROM reclamation ");
         while ($row =  mysqli_fetch_array($q))
         {
           $item[]=$row;

         }

          $result = json_encode(array('items'=>$item));
          echo $result;

        }



tous les enregistrements apparaissent mais sans la condition WHERE
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 mai 2019 à 23:27
Peux tu tester un truc du genre :
<?php
header ("Access-Control-Allow-Origin: *");
header ("Access-Control-Allow-Credentials: true ");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');
header ("Access-Control-Allow-Headers: X-Custom-Header, Origin, Content-Type , Authorisation , X-Requested-With");


//activation de l'affichage des erreurs php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

//fonction pour formatter le retour en json
function returnJson($datas,$status_code=200,$status_message='ok'){
  // headers for not caching the results
  header('Cache-Control: no-cache, must-revalidate');
  header('Expires: Mon, 26 Jul 2057 05:00:00 GMT');
  header('HTTP/1.1 '.$status_code.' ' .$status_message);
  // headers to tell that result is JSON
  header ("Content-Type: application/json; charset=UTF-8 ");
  // send the result now
  echo json_encode($datas);
  exit();
}

//connexion à la bdd
require_once "config.php";
//on teste la connexion à la bdd
if (mysqli_connect_errno())  {
  returnJson(array('error'=>"Failed to connect to MySQL: " . mysqli_connect_error(),500,'error');
}

//Methode d'interogation du webservice GET, PUT, POST, DELETE
$methode = $_SERVER['REQUEST_METHOD'];

//Action à réaliser en fonction de la méthode...
switch ($methode) {
  case 'PUT':
    returnJson(array('error'=>'Methode '.$methode.' non prise en charge'),400,'Bad Request');
    break;
  case 'POST':
    $postjson =  json_decode(file_get_contents('php://input'), true);
    $cin = !empty($postjson['cin']) ? $postjson['cin'] : NULL;
    if($cin){
      $sql =  "SELECT * WHERE cin_cit = '" . $cin . "'";
      $qv =  mysqli_query($con,$sql);
      if(!$qv){
         returnJson(array('error'=>"Query Error : " . mysqli_error($con),'sql'=>$sql),400,'Bad Request');
        );
      }
      $item  = array ();
      while( $r = mysqli_fetch_array($qv)){
        $item[] = $r;
      }
      returnJson(array('item'=>$item),200,'ok');   
    }else{
      returnJson(array('error'=>'CIN manquant ','POSTJSON'=>$postjson),404,'Not Found');
    }
    break;
  case 'GET':
    returnJson(array('error'=>'Methode '.$methode.' non prise en charge'),400,'Bad Request');
    break;
  case 'DELETE':
    returnJson(array('error'=>'Methode '.$methode.' non prise en charge'),400,'Bad Request');
    break;
  default:
    returnJson(array('error'=>'Methode '.$methode.' non prise en charge'),400,'Bad Request');
    break;
}
?>

et nous donner le résultat de l'appel dans la console...
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 00:58
le résultat est presque le même ,
l'application affiche tous les enregistrements de tous les cin
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 01:07
le resultat de la partie client
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 01:08
je pense que le probleme et de mettre une condition dans la requete select , sans l'instruction where tous va bien mais avec elle le array serai vide
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 01:32
Ce n'est pas possible tu n'as pas utiliser le code que je t'ai donné le résultat devrait être totalement différent...
Peux tu nous montrer in dump de ta bdd

Et audsi modifier la ligne 55 par
returnJson(array('item'=>$item, 'sql'=>$sql, 'cin'=>$cin),200,'ok');   
 


Et nous montrer le résultat dans la console
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 01:33
Dans le code que je t'ai donné il y a déjà le where donc si ça te retourne plusieurs résultat c'est que la requête est bonne la as-tu tester la requête directement dans phpmyadmin pour vérifier
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 02:34
dans ton code il y'a phrase souligné en rouge , je ne sais pas pourquoi
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
10 mai 2019 à 02:38
Et aussi j'ai oublié dans la requête que tu as créer tu n'as pas saisi l'instruction FROM reclamation
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
10 mai 2019 à 09:56
C'est bien ce que je disais...... les captures écran que tu nous as montré ne sont pas celles du code que je t'ai donné !
Pour le from.... oui j'ai copié collé ton code sans penser à corriger.... mais tu l'a vu... tu peux donc le corriger.

Pour la ligne en rouge... si tu regardes les autres lignes du même genre... tu verras qu'il manque une parenthèse.

Une fois ces modifications faites, merci de poster les captures ecran de la console.
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
15 mai 2019 à 16:20
Bonjour Jordane ,
le problème est résolu ,
j'ai une question pour toi si tu est disponible .
je travaille sur envoyer une image capturée par la caméra et l'envoyer au serveur.
de coté client tout marche bien , l'image est bien capturée mais dans la coté serveur l'image n'est pas transferée ni crée

voici le code php

//requete
   
          $data= array();
          $datenow= date('y-m-d');
          $entry = base64_decode($postjson['myphoto']);
          $img = imagecreatefromstring($entry);
          $directory = "images".$datenow.".jpg";
          imagejpeg($img,$directory);
          imagedestroy($img);

          mysqli_query ($con, " INSERT INTO reclamation  ( type_rec , adresse , sujet , cin_cit, cin_admin , nom_com , photo, laptitude , longitude)  VALUES
          (
            '$postjson[type_rec]' ,
            '$postjson[adresse]' ,
            '$postjson[description]' ,
            '$postjson[cin]',
            '88888888' ,
            'Bardo' ,
            '$directory' ,
            '$postjson[laptitude]' ,
            '$postjson[longitude]'
          )
          ");


          $result=json_encode (array('success' => true));
          echo $result;

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
15 mai 2019 à 16:43
Je t'invite plutôt à mettre cette discussion en RESOLUE puis à ouvrir un nouveau sujet pour ce "nouveau" problème.
0
LearnDeep Messages postés 67 Date d'inscription lundi 10 décembre 2018 Statut Membre Dernière intervention 21 août 2021
Modifié le 15 mai 2019 à 18:28
Merci Jordane , je veux te remercier beaucoup pour ton support et ton aide , tu m'as aidé beaucoup
0