Affichage du résultat de requètes SQL

Résolu/Fermé
Mouch89 Messages postés 109 Date d'inscription mercredi 6 janvier 2010 Statut Membre Dernière intervention 11 avril 2013 - Modifié par Mouch89 le 3/08/2011 à 09:48
Mouch89 Messages postés 109 Date d'inscription mercredi 6 janvier 2010 Statut Membre Dernière intervention 11 avril 2013 - 3 août 2011 à 17:16
Bonjour,

J'ai mis en ligne un site internet depuis hier. Mais, il y a un petit problème (qui n'apparaissait pas en local) au niveau de l'affichage du résultat de certaines requètes SQL.

En fait, j'ai par exemple sur ce site une partie "livre d'or". Quand on va dessus, certains témoignages apparaissent, d'autres pas. C'est aussi le cas pour les commentaires des articles du blog attaché au site, certains n'apparaissent pas (et pourtant, on voit l'entête "Posté par xxx à xxhxx", mais il n'y a rien après). C'est pareil pour les articles du blog, aucun ne s'affiche... il y a juste quelque fois le titre qui apparaît.

Bref, je trouve cela très étrange. Je n'arrive pas à trouver de liens entre ces affichages défectueux (au niveau de la taille par ex). Ce sont pourtant toujours les mêmes qui n'apparaissent pas à chaque rechargement de la page !

Je reviens sur l'affichage des commentaires.

Voilà la requête qui appelle les ressources en BDD :
$req = $bdd->query('SELECT auteur, contenu, YEAR(date) AS annee, MONTH(date) AS mois, DAY(date) AS jour, MINUTE(date) AS minutes, HOUR(date) AS heures FROM commentaires WHERE article = '.$_GET['article'].'');


J'affiche ensuite ce qu'il faut :
      while ($donnees = $req->fetch())  
      {  
       echo  '<div class="b_commentaire">  
          <div class="entete_message">Par <strong>'.$donnees['auteur'].'</strong>, le '.$donnees['jour'].'/'.$donnees['mois'].'/'.$donnees['annee'].' à '.$donnees['heures'].'h'.$donnees['minutes'].' :</div>  
          <div class="contenu_commentaire">  
           '.htmlspecialchars($donnees['contenu']).'  
          </div>  
         </div>';  
      }  
      $req->closeCursor();

(je sais, l'affichage des pseudos n'est pas protégé, je change ça de suite :p)

Et c'est là que ça devient intriguant... parce que, dans une même requête, il a pu trouver le pseudo de l'auteur, l'heure à laquelle le message a été posté mais il ne peut pas afficher le message !

Je finis par préciser que la base de donnée est hébergée chez 1and1.

J'espère que vous trouverez une solution à mon problème.
Merci beaucoup.

4 réponses

BlackDrag00n Messages postés 34 Date d'inscription jeudi 21 août 2008 Statut Membre Dernière intervention 5 août 2011 8
3 août 2011 à 12:00
Bonjour,

Cela m'est déjà arriver avec plusieurs de mes sites Web, sa PEUT etre du au faite que vous utiliser une version d'apache et mysql différente de celle ou est héberger votre site.

Sinon c'est aussi PEUT ETRE du a la configuration de votre apache en local, car il y a une option qui permet de désactiver les erreurs web.

Quoi qu'il en soit il va falloir modifier votre codage a droite et a gauche pour qu'il s'adapte a la version de votre serveur web ou est héberger votre site.

0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
3 août 2011 à 13:08
ca viendrait pas de caracteres speciaux comme ' ou " qui ferme les echo php ?
0
Fallentree Messages postés 2309 Date d'inscription mercredi 25 février 2009 Statut Membre Dernière intervention 22 juillet 2019 208
3 août 2011 à 13:10
essai de mettre
htmlspecialchars($donnees)
0
Mouch89 Messages postés 109 Date d'inscription mercredi 6 janvier 2010 Statut Membre Dernière intervention 11 avril 2013 7
3 août 2011 à 17:16
Bonsoir,

J'ai pu avoir une réponse sur developpez.com

Le problème vient de htmlspecialchars.
Étrangement, dès qu'un message contenait un ou plusieurs accents, il n'était pas affiché.

La solution est de remplacer htmlspecialchars par d'autres fonctions qui ont le même rôle (ou presque). On peut prendre htmlentities, ou nl2br ou encore print_r.

A bientot.
0