Mysql => JSON

Résolu/Fermé
Stéphanie - 21 juin 2014 à 14:13
 zola - 17 mars 2016 à 13:19
Bonjour,
J'essaie de récupérer des données d'un table d'une base Mysql, et de passer ce résultat en json.
Cependant je rencontre quelques difficultés.

Le code que j'utilise est le suivant :


<?php

// Create connection
$con=mysqli_connect("localhost","user_test","#5teSt_pw=bdd","ios_bdd");

// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// This SQL statement selects ALL from the table
$sql = "SELECT * FROM tab_posts";

// Check if there are results
if ($result = mysqli_query($con, $sql))
{
// If so, then create a results array and a temporary one
// to hold the data
$resultArray = array();
$tempArray = array();

// Loop through each row in the result set
while($row = $result->fetch_object())
{
// Add each row into our results array
$tempArray = $row;
array_push($resultArray, $tempArray);
}

// Finally, encode the array to JSON and output the results
echo json_encode($resultArray);
var_dump($resultArray);
}

// Close connections
mysqli_close($result);
mysqli_close($con);
?>

Ce qu il se passe, c est que rien ne s'affiche.

Et le var_dump m'affiche :

array(2) { [0]=> object(stdClass)#3 (4) { ["id"]=> string(1) "1" ["titre"]=> string(18) "Mon premier post !" ["corps"]=> string(98) "Bonjour à tous! Ceci est mon premier post que je tente de récupérer dans une base mysql, en local." ["date"]=> string(10) "2014-06-21" } [1]=> object(stdClass)#4 (4) { ["id"]=> string(1) "2" ["titre"]=> string(14) "Remplissage =)" ["corps"]=> string(93) "Le remlplissage de la base de donnée avec des valeurs test, avant de les récuperer sur l'ios." ["date"]=> string(10) "2014-06-21" } }

Si qqun pouvait m'aider à comprendre ce qui ne va pas je lui en serait tres reconnaissante.

Merci


10 réponses

Utilisateur anonyme
21 juin 2014 à 16:16
Bonjour

Tes données sont-elles encodées en utf-8 ? C'est indispensable pour JSON.
1
Et bien non il ne me semble pas. Je vais aller voir ca dans la base de suite.
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
21 juin 2014 à 16:46
Essayez ce code:

<?php
 
// Create connection
$con=mysqli_connect("localhost","user_test","#5teSt_pw=bdd","ios_bdd");
 
// Check connection
if (mysqli_connect_errno())
{
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
 
// This SQL statement selects ALL from the table
$sql = "SELECT * FROM tab_posts";
 
// Check if there are results
if ($result = mysqli_query($con, $sql))
{
    // If so, then create a results array and a temporary one
    // to hold the data
    $resultArray = array();
    $tempArray = array();
 
    // Loop through each row in the result set
    while($row = $result->fetch_object())
    {
        // Add each row into our results array
        $tempArray = $row;
        array_push($resultArray, $tempArray);
    }
 
    // Finally, encode the array to JSON and output the results
    $json = json_encode($resultArray);
    $error = json_last_error();
    var_dump($json);
    echo '<br>erreur : ' . $error;
}
 
// Close connections
mysqli_close($result);
mysqli_close($con);
?>
1
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
21 juin 2014 à 14:54
remplacez $row = $result->fetch_object() par:
$row = $result->fetch_assoc()
0
Merci de répondre aussi vite zermat.
Cependant, j'ai essayé avec un fetch_assoc() et j'ai le même soucis.
0

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

Posez votre question
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
Modifié par zermat le 21/06/2014 à 15:41
Que donne :

echo 'json encode :<br>' . json_encode($resultArray);
echo '<br>var dump:<br>';
var_dump($resultArray);
echo '<br>var export:<br>';
var_export($resultArray);
0
Sur un autre forum on me dit que le code marche chez d'autre.
mais je n'ai rien non plus dans le code source de la page que je suis censé afficher en json.
Si c code fonctionne ailleurs cela pourrai venir de ma configuration apache, php mysql ?
0
json encode :

var dump:
array(2) { [0]=> array(4) { ["id"]=> string(1) "1" ["titre"]=> string(18) "Mon premier post !" ["corps"]=> string(98) "Bonjour à tous! Ceci est mon premier post que je tente de récupérer dans une base mysql, en local." ["date"]=> string(10) "2014-06-21" } [1]=> array(4) { ["id"]=> string(1) "2" ["titre"]=> string(14) "Remplissage =)" ["corps"]=> string(93) "Le remlplissage de la base de donnée avec des valeurs test, avant de les récuperer sur l'ios." ["date"]=> string(10) "2014-06-21" } }
var export:
array ( 0 => array ( 'id' => '1', 'titre' => 'Mon premier post !', 'corps' => 'Bonjour à tous! Ceci est mon premier post que je tente de récupérer dans une base mysql, en local.', 'date' => '2014-06-21', ), 1 => array ( 'id' => '2', 'titre' => 'Remplissage =)', 'corps' => 'Le remlplissage de la base de donnée avec des valeurs test, avant de les récuperer sur l\'ios.', 'date' => '2014-06-21', ), )
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
Modifié par zermat le 21/06/2014 à 16:24
faite une page test.php avec ce code

<?php
phpinfo();
?>


et vérifier que json support est enabled

Notez aussi la version de php si la version de php < 5.2 ce que votre version de php ne supporte pas JSON
0
json support enabled
json version 1.2.1

et php 5.5.10
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
21 juin 2014 à 16:35
changer le contenu de test.php comme ça:

<?php
$arr = array ( 0 => array ( 'id' => '1', 'titre' => 'Mon premier post !', 'corps' => 'Bonjour à tous! Ceci est mon premier post que je tente de récupérer dans une base mysql, en local.', 'date' => '2014-06-21', ), 1 => array ( 'id' => '2', 'titre' => 'Remplissage =)', 'corps' => 'Le remlplissage de la base de donnée avec des valeurs test, avant de les récuperer sur l\'ios.', 'date' => '2014-06-21', ), );
echo json_encode($arr);
?>


que donne ce code ?
0
ca donne :
[{"id":"1","titre":"Mon premier post !","corps":"Bonjour \u00e0 tous! Ceci est mon premier post que je tente de r\u00e9cup\u00e9rer dans une base mysql, en local.","date":"2014-06-21"},{"id":"2","titre":"Remplissage =)","corps":"Le remlplissage de la base de donn\u00e9e avec des valeurs test, avant de les r\u00e9cuperer sur l'ios.","date":"2014-06-21"}]
0
j'ai donc ajouter :

$con->set_charset("utf8");
et ca fonctionne.

Je vous remercie pr votre aide.

Une petite chose encore. Voici le rendu bien présenté que ca devrai avoir :

http://codewithchris.wpengine.netdna-cdn.com/img/json_results_from_php_service.jpg

et moi, ca s affiche sur 2 lignes comme ceux-ci:

[{"id":"1","titre":"Mon premier post","corps":"Contenu de mon premier post\u00a7\r\nEn base de donn\u00e9e mysql.","date":"2014-06-21"},{"id":"2","titre":"Remplissage","corps":"Deuxieme post. Remplissage pr recuperation json et recup vers ios.","date":"2014-06-21"}]

Est il possible de travailler la form ?
0
salut Stéphanie, cela va faire 3 jour que je cherche à récupérer mes données sur une base de donnée que j'ai crée via phpmyadmin, j'arrive à me connecte sans soucis j'arrive à récupérer les infos mais j'arrive pas à les mettre en format Json. j'ai lu l'ensemble de ce post au dessus, j'ai tous essayer.

json version 1.2.1 => ma version de Json et elle est bien en enable
php 5.6.10=> ma version de php

$con->set_charset("utf8");=> je ne sais pas comment il faut poser cette parce j'ai fais un copier-coller(bien sûre j'ai changé $con par $link qui est ma variable de connexion mais rien ne s'affiche.

ma question est comment tu mets $con->set_charset ("utf8"); dans la page index pour obtenir qqch?
0
zermat Messages postés 160 Date d'inscription jeudi 19 juin 2014 Statut Membre Dernière intervention 3 juin 2016 16
21 juin 2014 à 18:10
C'est grace à une extension de google chrome que ce rendu est possible.
Cette extension s'appelle JSONView
vous pouvez la télécharger ici:
https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc

une extension JSONView existe aussi pour firefox.
0