Systeme de notatation,probleme d'affichage

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Systeme de notatation,probleme d'affichage

Re: Systeme de notatation,probleme d'affichage

par Fredy07 » 30 janv. 2011, 18:54

Comment faire afin que l'utilisateur clique sur Oui, une fois vote, il ne peut pas voter autre fois ni sur oui ni sur non, il faut les desactiver tous les 2:

comment.php
<head>
<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>
 
</head>
 
<body>
echo '<input type="button" id="LikeId" value="Oui" onclick="ajax(\'page.php?thumbs=up&idcom='.$idcom.'&menu='.$menu.'&idm='.$idm.'\',\'up'.$idcom.'\')"/><span id="up'.$idcom.'"> '.$datau[0].' </span>';
			echo '&nbsp;&nbsp;';
			 
			echo '<input type="button" id="DisLikeId" value="Non" onclick="ajax(\'page.php?thumbs=down&idcom='.$idcom.'&menu='.$menu.'&idm='.$idm.'\',\'down'.$idcom.'\')"><span id="down'.$idcom.'"> '.$datad[0].' </span>';
</body>
 
page.php:
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script>
$(document).ready(function(){
    $(".VotingButtomClass").click(function()
    {
        var This_id = $(this).attr("id");
        $(this).attr("disabled",true);
    });
});
</script>
</head>
 
<body>
<?php
 
mysql_select_db($db_general) or die ('Erreur de selection de la BD general: '.mysql_error());
if ($thumbs == 'up')
{
	$updateu = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "1", "0","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
	//echo $updateu.'<br>';
$queryu = mysql_query($updateu) OR DIE (mysql_error());
 
$selects = 'SELECT count(thumbsu) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsu !="0"';
}
 
 
if ($thumbs == 'down')
{
	$updated = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "0", "1","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
	//echo $updated.'<br>';
	$queryd = mysql_query($updated) OR DIE (mysql_error());
	
	$selects = 'SELECT count(thumbsd) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsd !="0"';
	
}
 
echo '<span id="displayhere"></span>';
 
$results = mysql_query ($selects) or die ('Erreur de thumbsdown: ' .mysql_error());
$datas = mysql_fetch_array($results);
//echo $datas[0];
 
echo '<input type="button" id="LikeId" class="VotingButtomClass" value="Oui"/><span id="up'.$idcom.'"> '.$datas[0].' </span>';
			echo '&nbsp;&nbsp;';
			 
			echo '<input type="button" id="DisLikeId" class="VotingButtomClass" value="Non"><span id="down'.$idcom.'"> '.$datas[0].' </span>';
 
?>
 
voila le resultat que j'ai trouve:
Image

merci

Re: Systeme de notatation,probleme d'affichage

par Fredy07 » 26 janv. 2011, 11:21

Et la page HTML générée (avec les liens), elle donne quoi ?

A vue de nez, je dirais que tu as plusieurs <span id="div1"></div>...
Je l'ai mis en variable, <span id="div'.$id.'"></div>, ca marche pour le moment, je suis entrain de la developper afin que chaque utilisateur puisse voter seulement une fois pour chaque commentaire:

page des commentaires:
<?php
		// on doit verifier si une ip a deja vote pour un commentaire
		mysql_select_db($db_general) or die ('Erreur de selection de la BD Statistics: '.mysql_error());
		$selectip = 'SELECT COUNT(ip) FROM thumbs WHERE ip = "'.$ip_visiteur.'" AND idcom = "'.$idcom.'"';
		$queryip = mysql_query($selectip) OR DIE ('Unable to select comment IPs '.mysql_error());
		$totalip = mysql_fetch_array($queryip);
		
		// requete de calcul du total des thumbs up
		$sqlu = 'SELECT count(thumbsu) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsu !="0"';
    	//echo $sqlu;  
    	$requ = mysql_query($sqlu) or die('Erreur SQL !<br />'.mysql_error());  
    	$datau = mysql_fetch_array($requ);
		
		// requete de calcul du total des thumbs down
		$sqld = 'SELECT count(thumbsd) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsd !="0"';
    	//echo $sqlt;  
    	$reqd = mysql_query($sqld) or die('Erreur SQL !<br />'.mysql_error());  
    	$datad = mysql_fetch_array($reqd);
    	
		if ($totalip[0] > 0) // si il a deja vote pour un commentaire soit up ou down, on affiche pas le curseur pour revoter et on retire onclick
		{
			echo '[ <img src="'.$path2icons.'thumbs_up.png" align="absmiddle" class="Img02"><font color="#00FF00"><span id="up'.$idcom.'"> '.$datau[0].' </span></font> ]';
			echo '&nbsp;&nbsp;';
			echo '[ <img src="'.$path2icons.'thumbs_down.png" align="absmiddle" class="Img02"><font color="#FF0000"><span id="down'.$idcom.'"> '.$datad[0].' </span></font> ]';
		}
		else // sinon on lui permet de voter
		{
			echo '<span id="up'.$idcom.'">[ <img src="'.$path2icons.'thumbs_up.png" style="cursor:pointer" align="absmiddle" onclick="ajax(\'page.php?thumbs=up&idcom='.$idcom.'&menu='.$menu.'&idm='.$idm.'\',\'up'.$idcom.'\')" class="Img02"><font color="#00FF00"> '.$datau[0].' </font> ]</span>';
			echo '&nbsp;&nbsp;';
			echo '[ <img src="'.$path2icons.'thumbs_down.png" style="cursor:pointer" align="absmiddle" onclick="ajax(\'page.php?thumbs=down&idcom='.$idcom.'&menu='.$menu.'&idm='.$idm.'\',\'down'.$idcom.'\')" class="Img02"><font color="#FF0000"><span id="down'.$idcom.'"> '.$datad[0].' </span></font> ]';	
			
		}

?>
code de page.php:
<?php
$idcom = $_GET['idcom'];
$idpseudo = $_GET['idm'];
$thumbs = $_GET['thumbs'];
$idcom = $_GET['idcom'];
$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')
{
	$updateu = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "1", "0","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
	//echo $updateu.'<br>';
$queryu = mysql_query($updateu) OR DIE (mysql_error());

$selects = 'SELECT count(thumbsu) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsu !="0"';
}

if ($thumbs == 'down')
{
	$updated = 'INSERT INTO thumbs VALUES ("", "'.$idcom.'", "'.$idpseudo.'", "0", "1","'.$ip_visiteur.'", "'.$MakkaDateTime.'")';
	//echo $updated.'<br>';
	$queryd = mysql_query($updated) OR DIE (mysql_error());
	
	$selects = 'SELECT count(thumbsd) FROM thumbs WHERE idcom= "'.$idcom.'" AND thumbsd !="0"';
}
$results = mysql_query ($selects) or die ('Erreur de thumbsdown: ' .mysql_error());
$datas = mysql_fetch_array($results);
echo $datas[0];
?>
si l'utilisateur clique une seule fois sur "up" ou bien "down", la page.php se rafraichissait et ne pas lui permettre de revoter, seulement des images sans pouvoir cliquer.

Merci

Re: Systeme de notatation,probleme d'affichage

par macgawel » 25 janv. 2011, 15:37

Et la page HTML générée (avec les liens), elle donne quoi ?

A vue de nez, je dirais que tu as plusieurs <span id="div1"></div>...

Systeme de notatation,probleme d'affichage

par Fredy07 » 23 janv. 2011, 02:15

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:

Image

code pour cliquer sur la notation:

Code : Tout sélectionner

<?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> ]'; ?>
code page.php:

Code : Tout sélectionner

<?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 ?>
code JS:

Code : Tout sélectionner

<!-- 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>
Merci pour votre aide