Systeme de notatation,probleme d'affichage

Répondre
Emily
le 23/01/2011 à 11:06
Emily
Bonjour,

J'ai cree un systeme de notation sur les commentaires des utilisateurs, on peut soit attirubuer un point ou le diminuer, tout va bien, sauf que, quand un utilisateur clique par exemple sur la notation du 2eme commentaire pour lui attribuer un point, ca devait se recharger et afficher un point de plus, mais le probleme c'est que l'affichage des resultats du 2eme commentaire s'affichent sur le premier, en rechargeant la page manuellement, tout revient a la norme, une image explicative ci-dessous:

[img]http://img842.imageshack.us/img842/7052/thumbs.png[/img]

code pour cliquer sur la notation:

<?php
echo '[ <a href="#" onclick="ajax(\'page.php?thumbs=up&number='.$thumbsu.'&idcom='.$idcom.'&menu='.$menu.'&idm='.$idm.'\',\'div1\')" class="Link02"><img src="'.$path2icons.'thumbs_up.png" align="absmiddle" class="Img02"></a><font color="#00FF00"><span id="div1">'.$datat[0].'</span></font> ]';
?>


page.php:

<?php
include '../../../Included_Files/Functions.php';
include '../../../Included_Files/Connect.php';

$idcom = $_GET['idcom'];
$idpseudo = $_GET['idm'];
$thumbs = $_GET['thumbs'];


$number = $_GET['number'];
//echo $number.'<br>';
$idcom = $_GET['idcom'];
//echo $idc.'<br>';
$increment = $number + 1;

$menu = $_GET['menu'];

mysql_select_db($db_general) or die ('Erreur de selection de la BD general: '.mysql_error());
//$update = 'UPDATE comments SET '.$th.' = "'.$increment.'" WHERE idc = "'.$idc.'"';

if ($thumbs == 'up')
{
$update = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "1", "0","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
}
if ($thumbs == 'down')
{
$update = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "0", "1","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
}

//echo $update.'<br>';
$query = mysql_query($update) OR DIE (mysql_error());


//$select_com = 'SELECT * from comments WHERE idcat = 4 AND id_cl = "'.$menu.'"';

$select_com = 'SELECT count(*) FROM thumbs WHERE idcom= "'.$idcom.'"';
//echo $select_com.'<br>';
$result_com = mysql_query ($select_com) or die ('Erreur de selection de commentaires: ' .mysql_error());
$datas = mysql_fetch_array($result_com);
echo $datas[0]; // c'est la ou se situe le probleme je pense
?>


JS:

<!-- Ajax function -->
<script type="text/javascript">
function ajax(page,divAMettreAJour){
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById(divAMettreAJour).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET",page,true);
xmlhttp.send();
}
</script>
LupusMic
le 12/03/2011 à 07:48
LupusMic
Je ne sais pas si tu as trouvé ton bogue, mais il est assez évident.

Lors de la création de ton span, tu génère le code HTML suivant :
<a href="#" onclick="ajax(\'page.php?thumbs=up&number=42&idcom=42&menu=ham&idm=42, 'div1')" class="Link02">

En fait, à chaque fois que tu construis l'événement, tu passe invariablement l'argument 'div1'. À la lecture de la fonction javascript ajax, on constate que tu utilises cette chaîne pour déterminer l'élément à modifier. Du coup, vu que c'est toujours le même, il modifie toujours le même nœud.

Tu peux corriger en générant l'identifiant dont tu as besoin.

Une solution plus propre consisterait à utiliser l'information dont tu dispose. Dans un attribut contenant du code javascript sont définies plusieurs variables. Celle qui nous intéresse ici est la variable this, qui dans ce contexte, défini l'élément auquel appartient l'attribut. À partir de cette élément, tu peux retrouver facilement l'élément que tu veux mettre à jour.
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours