IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Affichage vide si tableau à plusieurs lignes reçu [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Affichage vide si tableau à plusieurs lignes reçu
    Bonjour,

    je viens chercher un oeil extérieur, j'ai beau relire mon code qui me semble assez simplet ... mais impossible de comprendre le soucis ...
    j'ai une page php qui requête une base de donnée, si celle ci me retourne un tableau d'une seule ligne : ce code fonctionne
    à partir du moment où j'ajoute une entrée dans la bdd, depuis l'interface de la bdd (donc le retour devient un tableau à 2 lignes), ce code php ne fonctionne plus et me renvoie une page vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
      mysql_connect("localhost","login","pass");
      mysql_select_db("database");
      $sql = mysql_query("SELECT actu.timestamp date, msg.titre, msg.commentaire\n"
                       . " FROM actualites actu\n"
                       . " INNER JOIN messages msg ON actu.timestamp_msg = msg.timestamp\n"
                       . " ORDER BY actu.timestamp desc");
      while($row = mysql_fetch_assoc($sql))
        $output[] = $row;
      print(json_encode($output));
      mysql_close();
    ?>
    Amicalement

  2. #2
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ( $row = mysql_fetch_assoc($sql) )
         {
         $output[] = $row;
         print(json_encode($output));
         }
     mysql_close() ;
    Par ailleurs : C'est quoi ces "\n" dans votre SELECT ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $requete  = "SELECT * FROM actualites actu INNER JOIN messages msg " ;
    $requete .= "ON actu.timestamp_msg = msg.timestamp " ;
    $requete .= "ORDER BY actu.timestamp desc" ;
     
    $sql = mysql_query($requete) ;
    C'est pas plus clair ?... (sans même comprendre ce que vous faites)

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai trouvé

    mon problème venait :
    - du $row qui est également un tableau (de String) chez moi !
    - du print / echo qui était placé à l'extérieur de la boucle et que j'ai intégré dans la boucle
    - et ma base de donnée n'était pas au format utf8, préféré par json_encode.
    au passage j'ai également modifié mon code pour m'adapter aux dernières évolutions vers mysqli,
    pour les intéressés, voici la solution que j'ai trouvée et qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
      $mysqli = new mysqli("localhost", "login", "pass", "database");
      if ($mysqli->connect_errno) {
        echo "Echec lors de la connexion à MySQL : (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
      }
     
      $resultat = $mysqli->query("SELECT actu.timestamp date, msg.titre, msg.commentaire\n"
                       . " FROM actualites actu\n"
                       . " INNER JOIN messages msg ON actu.timestamp_msg = msg.timestamp\n"
                       . " ORDER BY actu.timestamp desc");
     
      $resultat->data_seek(0);
      while ($ligne = $resultat->fetch_assoc()) { $tableau[] = array_map("utf8_encode", $ligne); }
      echo json_encode($tableau);
     
      mysql_close();
    ?>
    Pour ceux qui ont une base de donnée en utf8 je pense qu'il suffit de remplacer le array_map("utf8_encode... par un simple $ligne

    Citation Envoyé par iakou
    Par ailleurs : C'est quoi ces "\n" dans votre SELECT ???
    C'est tout simplement parce que je suis parti d'une requête faite via PhpMyAdmin que j'ai exporté via le petit lien "Créer source php" qui le met en forme, pour n'avoir plus qu'à faire un simple copié/collé :p
    de ce fait il ajoute des \n pour conserver les retours à la ligne que j'avais saisie dans PhpMyAdmin

  4. #4
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Points : 479
    Points
    479
    Par défaut
    Rassurez moi !
    Il manquait bien les accolades "{" et "}" dans votre code initial ?...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    oui
    et réctification, j'ai finalement laissé l'echo à l'extérieur de la boucle ^^ le problème venait surtout du json_encode avec des résultats non utf8

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/03/2014, 07h02
  2. [AJAX] Récupérer un tableau à plusieurs dimension reçu avec ajax (json)
    Par krizentherm dans le forum jQuery
    Réponses: 4
    Dernier message: 29/07/2013, 18h15
  3. Affichage de variable sur plusieurs ligne
    Par Nayas dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2010, 04h31
  4. [SQL] Remplir une base SQL à partir d'un tableau à plusieurs lignes et colonnes
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/08/2007, 09h56
  5. Empecher l'affichage d'un tableau sur plusieurs lignes ??
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 03/02/2006, 09h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo