Si valeur existe (2)

Fermé
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 28 mars 2014 à 15:42
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 - 29 mars 2014 à 12:15
Bonjour à tous !

Pouvez-vous m'aider à corriger ce bout de code svp ?

<?php
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS); mysql_select_db(MYSQL_BASE,$db);
$req = mysql_query("SELECT COUNT(IPs) AS dejaexistant FROM tb_jeux_pakinou WHERE IPs = '".$_SERVER['REMOTE_ADDR']."'");

$res = mysql_fetch_array($req);

if($res['dejaexistant'] == 0) {echo "<script>location.href = 'index.php';</script>";}
if($res['dejaexistant'] != 0) {

$NumId = $_GET["NumId"];
if(isset($_POST['Vote'])) $Vote = mysql_real_escape_string($_POST["Vote"]); else $Vote ="";
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "UPDATE tb_jeux_pakinou SET IPs=CONCAT(IPs, ', ".$ip."'), Vote = Vote + 1 WHERE NumId='".$NumId."'";
mysql_query($sql) or die('Erreur SQL !'.$sql."<br />".mysql_error());
echo "<script>location.href = 'index.php';</script>";

} ?>

Merci d'avance

9 réponses

le_joker_fou Messages postés 765 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
28 mars 2014 à 15:48
Bonjour,

Peux-tu nous fournir plus de détails : qu'elle erreur as-tu? A Qu'elle ligne, etc...
1
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
28 mars 2014 à 15:53
En fait, je voudrais que si jamais par exemple, un utilisateur met le lien de validation :
http://monsite.com/jeux/vote.php?NumId=7
pour tricher un vote, la page n'enregistre pas et le renvois à l'index. Si l'IP de l'utilisateur n'existe pas dans ma table (voir sujet https://forums.commentcamarche.net/forum/affich-29958238-si-valeur-existe#p29958681) alors il enregistre.

Malheureusement je ne maitrise pas PHP, je bidule :s
0
le_joker_fou Messages postés 765 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
28 mars 2014 à 16:09
Dans ce cas, plutôt que :
echo "<script>location.href = 'index.php';</script>";

utilise
header("location:index.php");


Ensuite, pourquoi tu ouvre deux fois ta connexion SQL (une au début et de ton script et une dans ton
if($res['dejaexistant'] != 0)

La deuxième connexion est inutile, et vue que je suis de bon humeur aujourd'hui, voilà une idée de code que tu pourrais utiliser.

<?php
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS);
mysql_select_db(MYSQL_BASE,$db);

//LIKE %....% te permet de rechercher une sous-chaine dans une chaine de caractère, peut importe sa position
$req = mysql_query("SELECT COUNT(IPs) AS dejaexistant FROM tb_jeux_pakinou WHERE IPs LIKE %".$_SERVER['REMOTE_ADDR']."%;"); 
$res = mysql_fetch_array($req);
if($res['dejaexistant'] == 0) {
	header("location:index.php");
} else {
	$NumId = mysql_real_escape_string($_GET["NumId"]);
	
	if(isset($_POST['Vote'])) $Vote = mysql_real_escape_string($_POST["Vote"]);
	else $Vote ="";
	
	$ip = $_SERVER['REMOTE_ADDR'];
	
	$sql = "UPDATE tb_jeux_pakinou SET IPs=CONCAT(IPs, ', ".$ip."'), Vote = Vote + 1 WHERE NumId='".$NumId."' LIMI 1;";
	mysql_query($sql) or die('Erreur SQL !'.$sql."<br />".mysql_error());
	
	header("location:index.php");
}
?>


Attention, je n'ai pas testé le code, il se peut que tu es à l'adapté en fonction de tes besoins.
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
28 mars 2014 à 16:20
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /homez.724/xyz/www/jeux/pakinou2014/vote.php on line 60

Warning: Cannot modify header information - headers already sent by (output started at /homez.724/xyz/www/inclusion/header.php:15) in /homez.724/xyz/www/jeux/pakinou2014/vote.php on line 62
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
le_joker_fou Messages postés 765 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
28 mars 2014 à 16:31
Rajoute
 or die(mysql_error());

à la fin de ta ligne 6, et vois l'erreur.
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
Modifié par Sinistrus le 28/03/2014 à 16:46
Voilà ce qu'il me donne :s
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /homez.724/xyz/www/jeux/pakinou2014/vote.php on line 80
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%00.00.00.01%' at line 1

$res = mysql_fetch_array($req) or die(mysql_error());
0
le_joker_fou Messages postés 765 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 239
28 mars 2014 à 16:49
Corrige le WHERE avec ce code.
LIKE '%".$_SERVER['REMOTE_ADDR']."%'
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
28 mars 2014 à 16:55
Merci joker, il me renvois encore une erreur sur la limite :
Erreur SQL !UPDATE tb_jeux_pakinou SET IPs=CONCAT(IPs, ', 00.00.00.01'), Vote = Vote + 1 WHERE NumId='6' LIMI 1;
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMI 1' at line 1
0
Sinistrus Messages postés 1010 Date d'inscription mercredi 12 décembre 2007 Statut Membre Dernière intervention 6 juin 2023 17
Modifié par Sinistrus le 29/03/2014 à 12:15
J'ai un peux fouillé, mais je me retrouve avec toujours un ajout dans ma table même si l'IP existe :
<?php
$db = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die('Erreur de connexion '.mysql_error());
mysql_select_db(MYSQL_BASE,$db) or die('Erreur de selection '.mysql_error());
$req = mysql_query("SELECT COUNT(IPs) AS ExisteDeja FROM tb_jeux_pakinou WHERE IPs LIKE '%".$_SERVER['REMOTE_ADDR']."%' ;"); 
$res = mysql_fetch_array($req) or die(mysql_error());
if($res['ExisteDeja'] == 0) {
echo "Existant";}

else {$NumId = $_GET["NumId"];
if(isset($_POST['Vote'])) $Vote = mysql_real_escape_string($_POST["Vote"]); else $Vote ="";
$ip = $_SERVER['REMOTE_ADDR'];
$sql = "UPDATE tb_jeux_pakinou SET IPs=CONCAT(IPs, ', ".$ip."'), Vote = Vote + 1 WHERE NumId='".$NumId."' LIMIT 1";
mysql_query($sql) or die('Erreur SQL !'.$sql."<br />".mysql_error());
echo "Validé";}

?>


Il saute la condition du LIKE je penses :s
0

Discussions similaires