Mysql => JSON

Résolu
Stéphanie -  
 zola -
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

  1. Utilisateur anonyme
     
    Bonjour

    Tes données sont-elles encodées en utf-8 ? C'est indispensable pour JSON.
    1
    1. Stéphanie
       
      Et bien non il ne me semble pas. Je vais aller voir ca dans la base de suite.
      0
  2. zermat Messages postés 160 Statut Membre 16
     
    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
  3. zermat Messages postés 160 Statut Membre 16
     
    remplacez $row = $result->fetch_object() par:
    $row = $result->fetch_assoc()
    0
  4. Stéphanie
     
    Merci de répondre aussi vite zermat.
    Cependant, j'ai essayé avec un fetch_assoc() et j'ai le même soucis.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. zermat Messages postés 160 Statut Membre 16
     
    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
    1. Stéphanie
       
      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
  7. Stéphanie
     
    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
  8. zermat Messages postés 160 Statut Membre 16
     
    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
    1. Stéphanie
       
      json support enabled
      json version 1.2.1

      et php 5.5.10
      0
  9. zermat Messages postés 160 Statut Membre 16
     
    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
    1. Stéphanie
       
      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
  10. Stéphanie
     
    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
    1. zola
       
      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