Probleme avec un echo 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 : Probleme avec un echo JSON

Re: Probleme avec un echo JSON

par moogli » 09 janv. 2017, 12:47

salut,

tu n'as pas besoin du while tu peux utiliser un fetchAll : http://php.net/manual/en/mysqli-result.fetch-all.php

sinon essai ceci
<?php
$data = new stdClass();
$data->id = '8' ;
$data->titre ='Le grand bleu';
$data->annee = '1988';
$data->inititule = 'Comédie';
$data->nom ='France';



$data2 = new stdClass();
$data2->id = '10';
$data2->titre ='Le grand blond';
$data2->annee = '1980';
$data2->inititule = 'Comédie';
$data2->nom ='France';

$d =[$data,$data2];
// xdebug_var_dump($d);
echo json_encode($d);
est ce que tu as bien le json ?

qu'elle version de php as tu ?

perso j'ai eu ton problème corrigé en changeant l'encodage du fichier mais je ne suis pas persuadé que cela soit la solution ;)


@+

Probleme avec un echo JSON

par ricos » 09 janv. 2017, 11:19

Hello,

J'ai rencontré un problème un peu particulier en PHP / JSON
Ci dessous le code et le résultat,
<?php

$mysqli = new mysqli("localhost", "root", "", "streaming");

//$recherche = $_GET["titre"];
//$genre_id = $_GET["genre_id"];
//$pays_id = $_GET["pays_id"];

$recherche = "grand";
$genre_id = 3 ;
$pays_id = 1;

$result = $mysqli->query("SELECT film.id, film.titre, film.annee, genre.inititule, pays.nom FROM `film`
INNER JOIN genre
ON genre.id=film.genre_id 
INNER JOIN pays 
ON pays.id=film.pays_id
WHERE film.titre LIKE '%$recherche%' 
AND genre.id = '$genre_id' 
AND pays.id='$pays_id'");

echo "SELECT film.id, film.titre, film.annee, genre.inititule, pays.nom FROM `film`
INNER JOIN genre
ON genre.id=film.genre_id 
INNER JOIN pays 
ON pays.id=film.pays_id
WHERE film.titre LIKE '%$recherche%' 
AND genre.id = '$genre_id' 
AND pays.id='$pays_id'";

$search=array();
while ($row = $result->fetch_object()) {
    $search[] = $row;
}

var_dump($search);


echo json_encode($search);

Le résultat donne :

Code : Tout sélectionner

SELECT film.id, film.titre, film.annee, genre.inititule, pays.nom FROM `film` INNER JOIN genre ON genre.id=film.genre_id INNER JOIN pays ON pays.id=film.pays_id WHERE film.titre LIKE '%grand%' AND genre.id = '3' AND pays.id='1' array (size=2) 0 => object(stdClass)[3] public 'id' => string '8' (length=1) public 'titre' => string 'Le grand bleu' (length=13) public 'annee' => string '1988' (length=4) public 'inititule' => string 'Comédie' (length=7) public 'nom' => string 'France' (length=6) 1 => object(stdClass)[4] public 'id' => string '10' (length=2) public 'titre' => string 'Le grand blond' (length=14) public 'annee' => string '1980' (length=4) public 'inititule' => string 'Comédie' (length=7) public 'nom' => string 'France' (length=6)
Comme vous pouvez le voir ma requete est fonctionnelle, ma variable search de type array a bien un résultat ..... par contre je n'ai rien quand je fais un echo du JSON encode de ce meme tableau.

Merci pour votre aide,