Mysql => JSON

Résolu
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. 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 ?
    1. 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?
  2. 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. 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 ?
      1. 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"}]
    2. 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
      1. json support enabled
        json version 1.2.1

        et php 5.5.10
    3. 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.
    4. 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', ), )
      1. 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);
        1. 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 ?
      2. Merci de répondre aussi vite zermat.
        Cependant, j'ai essayé avec un fetch_assoc() et j'ai le même soucis.
        1. remplacez $row = $result->fetch_object() par:
          $row = $result->fetch_assoc()