Mysql : Verifier existence entrée

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 oct. 2005, 21:57

Alors apres ces explication de Cyrano sur l'utilisation du COUNT, laisse tomber la moitié (remettre le count et ajouter la clause FROM)de la requete que je t'ai indiqué tout a l'heure, pour le setcookie il suffit de ne pas mettre de code html mais php passe tres bien, essai comme ça:
<?

mysql_connect("localhost", "*****", "****");
mysql_select_db("antoinel");
$email = $_POST['email_participant'];

$sql="SELECT COUNT(*) FROM quizz WHERE email = '". $email ."'";

$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);

$nb=0;
if(isset($_COOKIE['azertysecurity']) OR $nb > 0)
{
?>
<p style="color: #c00">Vous avez déjà participé au quizz, et vous ne pouvez jouer qu'une fois !</p>
<?php
}
else
{
	mysql_query("INSERT INTO quizz VALUES('". $_POST['nom_participant'] ."', '". $_POST['prenom_participant'] ."', '". $_POST['email_participant'] ."')");
	
	setcookie('azertysecurity', 'deja_participe', (time() + 31536000));
	?>
<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>
Merci d'avoir participé !</p>
<?php    
}
mysql_close();
?>
Question à Cyrano:
juste pour Info, est ce que COUNT(email) est plus rapide que COUNT(*) ?
si oui alors remplacer * par email dans la requete :wink:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 21 Messages

02 oct. 2005, 23:09

Avec le code ci-dessus :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/antoinel/www/Securitycenter/quizz_resultat.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/antoinel/www/Securitycenter/quizz_resultat.php:5) in /home/antoinel/www/Securitycenter/quizz_resultat.php on line 143

Toutes les informations ont été enregistrées dans notre base de donnée.
Merci d'avoir participé !
Mais je vais réflechir cette semaine à un nouveau mode de vérification, je vous remercie quand même pour l'aide que vous m'avez apporté .

Mammouth du PHP | 19672 Messages

02 oct. 2005, 23:22

Question à Cyrano:
juste pour Info, est ce que COUNT(email) est plus rapide que COUNT(*) ?
À priori je dirais oui : plus on est précis dans la recherche, plus on gagne en rapidité. J'ajouterai que dans la mesure où le champ "email" est un champ qui sert souvent pour des recherche, alors on peut encore accélérer les procédures en indexant le champ.

Enfin je dirais qu'un COUNT(email) va compter seulement les champs qui ne sont pas NULL ou vide, par conséquent, le nombre obtenu ne sera pas obligatoirement le même qu'avec un COUNT(*) qui comptera toutes les lignes de toutes façon.

Pour antoniolav, le retour d'erreur par mysql_num_rows() indique un problème à l'exécution de la requête qui retourne probablement false. Donc fais un petit retour en arrière, fais un echo($sql) pour afficher la requête à l'écran afin de la contrôler. Si elle a l'air normale, essaye-là en la copiant et en la collant directement dans une fenêtre SQL de phpMyAdmin, tu auras une réponse détaillé avec soit des résultats soit un message d'erreur plus explicite.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: