Problème doublon

Problème doublon - PHP - Programmation

Marsh Posté le 21-02-2005 à 13:09:06    

Bonjour à tous,
 
Voila, j'ai crée un formulaire en php avec une base de donnée mysql.
Les personnes remplissent mon formulaire et les données s'inscrivent dans ma base.
J'aurai voulu savoir comment faire pour empêcher une personne de répondre 2 fois au formulaire, en bloquant par exemple  les doublons nom de famille ou prénom.
Si quelqu'un peu m'aider un peu  
 
 
Merci de votre aide

Reply

Marsh Posté le 21-02-2005 à 13:09:06   

Reply

Marsh Posté le 21-02-2005 à 13:20:28    

Il y a pas 36 solutions: quand une personne s'inscrit, il faut vérifier si elle n'est pas déjà dans la base...

Reply

Marsh Posté le 21-02-2005 à 17:39:07    

oui d'accord ca je m'en doute ms comment ?
Je suis pas très doué en php.
J'utilise ce code ms il en laisse passer et je c pas pourquoi :
 
$result=mysql_query("SELECT COUNT(*) as nbRDV FROM mabase where prenom= '$prenom" );
$doublon=mysql_result($result,0,"doublon" );
 
 
$bloquage = 1;
if($doublon!= $bloquage)
{  
echo "ok":
}
else
echo "déjà inscrit";

Reply

Marsh Posté le 21-02-2005 à 17:56:05    

Par ce qu'en cas de double clic, ca peut aller trop vite pour que la premiére saisie soit déjà inséré dans la base?
Il faut faire le test juste avant d'insérer dans la base et pas au tout début du script avec pleins de truc ensuite.
 
Une méthode plus efficace, c'est d'avoir une table de vérif contenant une liste de valeur uniques de vérification. On suprime celle qui corespond au formulaire qui a été remplis et on regarde combien de ligne à été suprimé par la requête sql. Ensuite, si ca en a suprimé aucune, c'est que le post à déjà été posté.
Pour savoir la valeur à suprimer, il faut utiliser un <select> de type="hidden".
Avec cette méthode, il faut penser à surpimer les valeurs périmé pour pas se retrouver avec une table immense remplis de codes inutiles.
 
EDIT : petite corection ortographique, j'espéres pas en avoir oublier trop.


Message édité par omega2 le 21-02-2005 à 17:58:38
Reply

Marsh Posté le 21-02-2005 à 18:09:05    

je pense pas que le problème vienne de la. Quand une personne s'appelle Bernard par exemple, si une 2ème personne rentre Bernard, ca va bien la bloquer. Ms souvent, si une personne s'appelle Guigui44, il peut remplir le formulaire a volonté sans être bloqué.
Bizarre ?

Reply

Marsh Posté le 21-02-2005 à 18:26:47    

quelle est la taille de la colone? C'est sur que si le prénom est trop long, il sera jamais inscrit en entier dans la base de donnée et le test foirera.

Reply

Marsh Posté le 22-02-2005 à 13:15:43    

non, la colonne n'est pas très grande, en revanche, les données entrées comportent des chiffres et des lettres

Reply

Marsh Posté le 22-02-2005 à 14:04:57    

non ms je l'ai fait comme ca, mon code est bon c pas le problème

Reply

Marsh Posté le 22-02-2005 à 14:31:04    

[quote=988291,0,1,114205]en bloquant par exemple les doublons nom de famille ou prénom[/quote]
et en mettant une clé primaire (nom, prenom) dans ta table, ca serait pas plus simple ?
edit: et ça ferait une requete en moins


Message édité par soju le 22-02-2005 à 14:31:34
Reply

Marsh Posté le 23-02-2005 à 18:13:14    

J'ai trouvé un code qui ressemble a mon ancien mais qui à l'air de mieux fonctionner :
 
sql="SELECT mabase FROM matable where prenom='$prenom'";
$result=mysql_query($sql)
or die ("impossible d'exécuter la requête" );
$num = mysql_numrows($result);
if ($num > 0)
{
echo "déjà inscrit";
exit();
}
else
(
echo "ok";
}
 
A voir ......
et merci pour votre aide à tous!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed