Probleme avec un echo JSON

Petit nouveau ! | 1 Messages

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,
Modifié en dernier par moogli le 09 janv. 2017, 12:39, modifié 1 fois.
Raison : bb code

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

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 ;)


@+
Il en faut peu pour être heureux ......