PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 17-11-2011 02:52:06

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Affichage de commentaires en utilisant json

Bonjour,

J'ai un code des commentaires, lorsque je clique sur "afficher plus de commentaires", il affiche seulement 1, autrement dit: j'affiche seulement 2 commentaires, je clique sur "afficher plus de commentaires", il doit afficher la totalite des commentaires, par consequent il affiche seulement 1 meme si j'ai une totalite a afficher de 5.

le code index:

$('.moreComs').click(function(){
               
                var level1 = $('#IDlevel1').val();
                        var level2 = $('#IDlevel2').val();
                var level3 = $('#IDlevel3').val();
                var num = $('#IDnum').val();
               
                var dataString = 'level1=' + level1 + '&level2=' + level2 + '&level3=' + level3 + '&num=' + num;
       
        $.ajax({
        type: "POST",
                url: "Forms/displayCommentsMore.php",
        data: dataString,
        dataType: "json",
        success: function(data) {
               
                $('.loadingComs').show();
                        $('.appendComs').fadeIn().append(data.commFull);                      
                        $('.loadingComs').hide();
               
                }
                });

code displayCommentsMore:

<?php

$return_arr = array();

include '../Included_Files/Connect.php';
include '../Included_Files/paths.php';

$level1 = $_POST['level1'];
$level2 = $_POST['level2'];
$level3 = $_POST['level3'];
$num = $_POST['num'];

$maxComsPerPage = '99';
$sqlq = 'SELECT * FROM commentaires WHERE level1 = "'.$level1.'" AND level2 = "'.$level2.'" AND level3 = "'.$level3.'" AND num = "'.$num.'" ORDER BY idcom DESC';

echo $sqlq;

$req = $connexion->query($sqlq);
$result = $req->fetchAll();
$total_com = count($result);
echo $total_com;

foreach($result as $kArr=>$vArr)
{
                $idcom = strip_tags($vArr['idcom']);
                $id_pseudo = strip_tags($vArr['id_pseudo']);
                $date_posted = strip_tags($vArr['date_posted']);
                $commentaire = strip_tags($vArr['commentaire'], '<a>');
               
        $commFull = '<div style="background-color:#a5a5f0; overflow:hidden; width:500px;">';
                $commFull .= '<div style="float:left; width:450px; background-color:#7171e7;">';
                $commFull .= $commentaire;
                $commFull .= '</div>';
                $commFull .= '<div style="float:left; width:50px; background-color:#3838db;">';
                $commFull .= '<img src="'.$path2imgs.'noProfile.png" width="50" height="50" />';
                $commFull .= '</div>';
                $commFull .= '</div>';

                $commFull .= '<hr style="width: 500px; color: green;">';
               
}
               
        $return_arr["commFull"] = $commFull;
       
  echo json_encode($return_arr);              
       

?>

resultat sur firebug, j'ai pas mis d'affichage, j'ai mis des echos pour voir le resultat de la requete ainsi que le total:

requete => SELECT * FROM commentaires WHERE level1 = "6" AND level2 = "43" AND level3 = "7" AND num = "89" ORDER BY idcom DESC
total => 7

merci a vous smile

Hors ligne

#2 17-11-2011 09:07:19

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Affichage de commentaires en utilisant json

Salut,
Est ce que la requête retourne bien les enregistrements escomptés ?

a++

Hors ligne

#3 17-11-2011 16:12:43

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

Pierrot a écrit :

Salut,
Est ce que la requête retourne bien les enregistrements escomptés ?

a++

j'ai fait un:

echo $commFull;

et ca me retourne tous les enregistrements sur firebug

Hors ligne

#4 17-11-2011 16:21:30

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Affichage de commentaires en utilisant json

Saluton,
SELECT * déjà, c'est très moyen.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 17-11-2011 16:32:24

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Affichage de commentaires en utilisant json

montre un peu le html stp.
a++

Hors ligne

#6 17-11-2011 17:26:48

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

Bonjour,

Je ne suis pas un expert en JQUERY, mais il me semble que ton dataType: "json" n'est pas bon car sauf erreur de ma part, tu passes à ton callback une chaine de caractères qui n'est pas au format json, et concernant ton retour callback il n'est visiblement pas au format json non plus car tu l'affiches direct sur ton navigateur...

++

Dernière modification par Jc (17-11-2011 17:28:02)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#7 17-11-2011 17:57:41

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Affichage de commentaires en utilisant json

JC->

il fait bien un json encode en php
mais il fait d'autres echo avant

donc c'est sur que le json est sacrément foireu big_smile:D

et a la réception il faudrait qu'il fasse JSON.parse(data) pour utiliser son data.commFull

a++

Hors ligne

#8 17-11-2011 18:24:45

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

@Pierrot,

Je suis bien d'accord avec toi, mais je me suis arrêté de lire à la ligne relevée... donc le contenu de son fichier php ...


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#9 18-11-2011 03:44:43

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

voila le code HTML, il y a 2 commentaires (commentaire 1 et commentaire 2) sont affiches par defaut parce que je fais LIMIT2, alors quand je clique sur "see more comments", je dois avoir tous les commentaire dans la table, qui sont 13, je recois seulement un qui est "nouveau commentaire":

<div style="background-color: rgb(165, 165, 240); width: 500px;">
<div align="center">Total comments :13    <a style="cursor: pointer;" class="moreComs">see more comments</a>
<span style="display: none;" class="loadingComs">
<img src="Images/Icons/ajax-loader.gif"> Loading</span>
<div style="background-color: rgb(165, 165, 240); overflow: hidden; width: 500px;">
<div style="float: left; width: 450px; background-color: rgb(113, 113, 231);">
Pseudo1 on time time<br>commentaire 1
</div>
<div style="float: left; width: 50px; background-color: rgb(56, 56, 219);">
<img src="Images/noProfile.png" height="50" width="50">
</div>
</div>

<hr style="width: 500px; color: green;">

<div style="background-color: rgb(165, 165, 240); overflow: hidden; width: 500px;">
<div style="float: left; width: 450px; background-color: rgb(113, 113, 231);">
Pseudo2 on time time<br>commentaire 2
</div>
<div style="float: left; width: 50px; background-color: rgb(56, 56, 219);">
<img src="Images/noProfile.png" height="50" width="50">
</div>
</div>
<hr style="width: 500px; color: green;">
</div>
<span style="" class="appendComs">
<div style="background-color: rgb(165, 165, 240); overflow: hidden; width: 500px;">
<div style="float: left; width: 450px; background-color: rgb(113, 113, 231);">
nouveau commentaire
</div>
<div style="float: left; width: 50px; background-color: rgb(56, 56, 219);">
<img src="Images/noProfile.png" height="50" width="50">
</div>
</div>
<hr style="width: 500px; color: green;">
</span>
<span class="displayNewCom"></span>
<span class="comErrors"></span>
<form name="formName" method="POST" action="" autocomplete="on" id="formComments">
<fieldset name="FieldSetName" id="rien" style="width: 480px; border: 0pt none red; margin-right: auto; margin-left: auto;">
<img src="Images/Icons/aya_r.gif" align="absmiddle" height="20">
<font color="green"><b>Formulaire</b></font>
<img src="Images/Icons/aya_l.gif" align="absmiddle" height="20">Les champs
<ul>
<li>
<img src="Images/noProfile.png" height="50" width="50">
<textarea name="commentaire" spellcheck="true" cols="50" rows="2" placeholder="okoko" class="commentaire">
</textarea>
</li>
</ul>
<input name="username" value="1" id="idUsername" type="hidden">
<input name="level1" value="6" id="IDlevel1" type="hidden">
<input name="level2" value="43" id="IDlevel2" type="hidden">
<input name="level3" value="7" id="IDlevel3" type="hidden">
<input name="num" value="89" id="IDnum" type="hidden">
<input name="Send" value="Envoyer" class="SubCom" style="float: right; display: none;" type="submit">
</fieldset>
</form>
<span class="loading"><img src="Images/Icons/ajax-loader.gif"> Loading</span>

</div>
</div>

Hors ligne

#10 18-11-2011 09:15:08

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Affichage de commentaires en utilisant json

regarde aussi les remarques que j'ai fait au dessus wink

a++

Hors ligne

#11 20-11-2011 02:51:18

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

Pierrot a écrit :

regarde aussi les remarques que j'ai fait au dessus wink

a++

je n'ai aucun echo et j'ai ajoute:

JSON.parse(data);

ca me donne cette erreur:

JSON.parse: unexpected character
[Break On This Error] JSON.parse(data);

Hors ligne

#12 20-11-2011 11:04:52

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

Bonjour,

Oui rimie c'est normal.. Le problème c'est que tu n'as aucune notion visiblement de ce qu'est JSON. Je te conseille vivement de combler cette lacune, car Pierrot ne dira pas le contraire, JSON est quasi indispensable lorsque l'on fait du javascript pour avoir du code propre, facile à maintenir et concis.
Donc voici de la lecture pour commencer

++

Dernière modification par Jc (20-11-2011 11:05:42)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#13 20-11-2011 11:38:31

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Affichage de commentaires en utilisant json

salut,
>>je n'ai aucun echo et j'ai ajoute:
j'en doute roll
à moins que que la procédure json_encode de php déconne.

dans le doute, essaye :

json_encode($return_arr, JSON_FORCE_OBJECT)


et fait un alert(data) avant le JSON.Parse et donne moi le contenu de ton json.


a++

Hors ligne

#14 20-11-2011 12:03:21

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

ca reviens en une erreur:

<b>Warning</b>:  json_encode() expects exactly 1 parameter, 2 given in <b>displayCommentsMore.php</b> on line <b>51</b><br />

j'ai mis le code:

foreach() {
      $return_arr["commFull"] = $commFull;
  echo json_encode($return_arr);
}

il me retourne rien dans la page, par contre au niveau firebug, il affiche tous les resultats, en mettant:

foreach() {
      $return_arr["commFull"] = $commFull;
}
  echo json_encode($return_arr);

il affiche un seul resultat comme auparavant

Hors ligne

#15 20-11-2011 14:36:05

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

Bonjour,

Sauf erreur de ma part, soit tu fais un tableau à index numérique en faisant $return_arr[]=$commFull, soit si tu désires nommer tes indexs de tableau, tu es obligé pour l'encoder en JSON de passer par un tableau associatif du style $return_arr=array('commFull'=>$commFull);
Et en faisant comme cela tu n'auras plus d'erreur.... enfin presque

En effet tu ne sais pas visiblement comment fonctionnent les tableaux et les boucles for...each. Avec ton code, c'est tout à fait normal que ton tableau te retournes qu'une seule valeur.
Dans ta boucle for_each utilise $return_arr[]=$commFull, place ton json_encode à l'extérieur de ta boucle, et regarde ce que cela donne, tu comprendras mieux wink

++

Dernière modification par Jc (20-11-2011 14:41:42)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 22-11-2011 13:00:22

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

j'ai elimine le json, et j'ai travaille avec jQuery seul, ca marche sans json

Hors ligne

#17 22-11-2011 13:52:26

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

Bonjour,

Ca marche aussi sans JQuery big_smile


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#18 23-11-2011 01:55:25

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

Jc a écrit :

Bonjour,

Ca marche aussi sans JQuery big_smile

et comment faire sans recharher la page?

Hors ligne

#19 23-11-2011 02:05:55

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

1) C'était de l'humour.
2) Pour la forme, tu peux faire de l'Ajax en javascript sans Jquery^^.

lol

PS: Sans justification aucune, c'était une autre façon de te faire remarquer que tu pouvais très bien te passer de JQuery au même titre que tu te passes de JSON pour résoudre tes problèmes^^ big_smile

Dernière modification par Jc (23-11-2011 02:08:23)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#20 23-11-2011 11:49:21

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

et c'est quoi la solution JSON?

Hors ligne

#21 23-11-2011 13:42:00

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Affichage de commentaires en utilisant json

En résumé, au lieu de passer 100 paramètres dans tes callbacks, tu n'en passes qu'un à chaque fois : Un objet JSON, dont tes paramètres en deviennent ses propriétés. C'est géré en Javascript d'une manière native, ( pour le système de notation, ca devrait être simple pour toi car tu l'utilises en permanence avec JQuery), et du coté PHP c'est représenté sous la forme d'un StdObjetClass.
Te reste ensuite à établir des conventions de structure de tes objets JSON de manière à pouvoir les traiter de manière transparente autant du côté Javascript que du côté PHP.
Une fois que t'as le pied dedans, tu ne pourras plus t'en passer.;)

Bonne continuation avec ton nouvel outil wink

Dernière modification par Jc (23-11-2011 13:42:10)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#22 23-11-2011 14:01:53

rimie
Membre
Inscription : 17-11-2011
Messages : 50

Re : Affichage de commentaires en utilisant json

c'est dur big_smile

Hors ligne

Pied de page des forums