$sql="SELECT COUNT(*) WHERE nom = '". $nom ."' AND prenom = '". $prenom ."' AND email = '". $email ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
if($nb > 0)
{
// Internaute déjà inscrit
}
else
{
// Internaute inconnu, ok
}
TU peux éventuellement ne tester qu'un seul des champ éventuellement, le courriel par exemple (email)Code : Tout sélectionner
<?php
mysql_connect("localhost", "******", "*****");
mysql_select_db("*****");
$sql="SELECT COUNT(*) WHERE email = '". $_POST['email_participant'] ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
if(isset($_COOKIE['azerty']) OR $nb > 0)
{
echo '<font color=\'red\'>';
echo '<p>Vous avez déjà participé au quizz, et vous ne pouvez jouer qu\'une fois !';
echo '</p></font>';
}
else {
mysql_query("INSERT INTO quizz VALUES('$_POST['nom_participant']', '$_POST['prenom_participant']', '$_POST['email_participant'])");
echo '<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>Merci d\'avoir participé !';
echo '</p>';
setcookie('azerty', 'deja_participe', (time() + 31536000));
}
mysql_close();
?><?php
mysql_connect("localhost", "******", "*****");
mysql_select_db("*****");
$sql="SELECT COUNT(*) WHERE email = '". $_POST['email_participant'] ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
if(isset($_COOKIE['azerty']) OR $nb > 0)
{
echo '<font color=\'red\'>';
echo '<p>Vous avez déjà participé au quizz, et vous ne pouvez jouer qu\'une fois !';
echo '</p></font>';
}
else
{
mysql_query("INSERT INTO quizz VALUES('". $_POST['nom_participant'] ."', '". $_POST['prenom_participant'] ."', '". $_POST['email_participant'] ."')");
echo '<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>Merci d\'avoir participé !</p>';
setcookie('azerty', 'deja_participe', (time() + 31536000));
}
mysql_close();
?><?php
mysql_connect("localhost", "******", "*****");
mysql_select_db("*****");
$email = $_POST['email_participant'];
$sql="SELECT COUNT(*) WHERE email = '". $email ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
if(isset($_COOKIE['azerty']) OR $nb > 0)
{
echo '<font color=\'red\'>';
echo '<p>Vous avez déjà participé au quizz, et vous ne pouvez jouer qu\'une fois !';
echo '</p></font>';
}
else
{
mysql_query("INSERT INTO quizz VALUES('". $_POST['nom_participant'] ."', '". $_POST['prenom_participant'] ."', '". $_POST['email_participant'] ."')");
echo '<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>Merci d\'avoir participé !</p>';
setcookie('azerty', 'deja_participe', (time() + 31536000));
}
mysql_close();
?><?php
mysql_connect("localhost", "******", "*****");
mysql_select_db("*****");
$email = $_POST['email_participant'];
$sql="SELECT COUNT(*) WHERE email = '". $email ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
if(isset($_COOKIE['azerty']) 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'] ."')");
?>
<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>
Merci d'avoir participé !</p>
<?php
setcookie('azerty', 'deja_participe', (time() + 31536000));
}
mysql_close();
?>
C'est plus propre, et en séparant correctement le PHP du HTML, tu améliores les performances. Sur un petit script comme ça, ça n'aura à peu près aucune incidence, mais si tu développes plus tard des applications plus lourdes avec cette habitude, ça pourra avoir un effet notable.<?php
mysql_connect("localhost", "*****", "****");
mysql_select_db("antoinel");
$email = $_POST['email_participant'];
$sql="SELECT COUNT(*) WHERE email = '". $email ."'";
$recherche = mysql_query($sql);
$nb = mysql_num_rows($recherche);
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'] ."')");
?>
<p>Toutes les informations ont été enregistrées dans notre base de donnée.<br>
Merci d'avoir participé !</p>
<?php
setcookie('azertysecurity', 'deja_participe', (time() + 31536000));
}
mysql_close();
?>
Et le message d'erreur : Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/antoinel/www/Securitycenter/quizz_resultat.php on line 128
Toutes les informations ont été enregistrées dans notre base de donnée.
Merci d'avoir participé !
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
$sql="SELECT COUNT(*) WHERE email = '". $email ."'";
mais bon elle pose probleme parcequ'il manque la clause FROM... et le count n'est pas obligatoire (je sait pas si niveau performance c'est plus long que de choisir un element direct) on peut donc remplacer par:
$sql="SELECT email FROM ta_table WHERE email = '". $email ."'";
puisque tu fait un mysql_num_rows apres on regarde juste le nombre de lignes retournées, donc je pense que le count est de trop.
Ok merci pour l'infoAlors petite info à propos du COUNT :
Il est plus (beaucoup) rapide de faire compter à MySQL un nombre de ligne que de récupérer toutews les lignes pour les compter ensuite.
$sql="SELECT COUNT(*) WHERE email = '". $email ."'";
$sql="SELECT email FROM ta_table WHERE email = '". $email ."'";
EDIT : finalement je ne trouve pas de moyen pour placer ma création de cookie en premier : vais-je devoir changer de technique ?