[MySQL] Vérifier qu'un élément existe dans une table

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 : [MySQL] Vérifier qu'un élément existe dans une table

par Ryle » 08 mars 2007, 16:52

$reponse_codeclub=mysql_query("SELECT count(*) FROM clubs WHERE 'codeclub' = '".$_POST['codeclub']."'")
Si tu mets le nom du champ entre apostrophes, il est alors considéré comme une chaine. Du coup ta condition sera toujours fausse (sauf si $_POST['codeclub'] contient la chaine 'codeclub', mais je doute un peu) :)

[MySQL] Vérifier qu'un élément existe dans une table

par dekovince » 08 mars 2007, 16:24

bonjour a tous !!

alors voila je suis débutant et j'ai un probleme :

j'ai deux tables :

Code : Tout sélectionner

CREATE TABLE `clubs` ( `id_clubs` smallint(9) NOT NULL auto_increment, `ip_clubs` char(25) collate latin1_bin NOT NULL, `session` text collate latin1_bin NOT NULL, `pseudo` text collate latin1_bin NOT NULL, `passe` text collate latin1_bin NOT NULL, `email` text collate latin1_bin NOT NULL, `typesport` text collate latin1_bin NOT NULL, PRIMARY KEY (`id_clubs`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin COMMENT='Liste des clubs' AUTO_INCREMENT=1 ;
et :

Code : Tout sélectionner

CREATE TABLE `membres` ( `id_membres` smallint(9) NOT NULL auto_increment, `ip-membres` char(25) collate latin1_bin NOT NULL, `session` text collate latin1_bin, `pseudo` text collate latin1_bin, `passe` text collate latin1_bin, `codeclub` smallint(9) NOT NULL, `email` text collate latin1_bin, `typesport` text collate latin1_bin, PRIMARY KEY (`id_membres`,`codeclub`), KEY `codeclub` (`codeclub`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COLLATE=latin1_bin COMMENT='Liste des membres' AUTO_INCREMENT=1 ;
mon fichier de vérification.php :
<?php

session_start();
require_once('config_membres.php');
$titre_page='Inscriptions Membres';
include_once('haut.php');
$pseudo=formulaires($_POST['pseudo']);
$mdp=formulaires($_POST['mdp']);
$mdp2=formulaires($_POST['mdp2']);
$codeclub=formulaires($_POST['codeclub']);
$email=formulaires($_POST['email']);
$typesport=formulaires ($_POST['typesport']);

//// VERIFICATION SI FORMULAIRES BIEN REMPLI //// 

if(!$mdp || !$mdp2 || strlen($mdp) < 7)
	{
	echo'<font color="#ff0000">Votre mot de passe ou sa confirmation est inexisant ou votre mot de passe fait moins de 7 carractères </font><br />
	<a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	includ_once('bas.php');
	return FALSE;
	}
if($mdp!=$mdp2)
	{
	echo'<font color="#ff0000"><blink>Votre mot de passe n\'est pas le meme que sa confirmation</blink></font><br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
	return FALSE;
	}
if(!$pseudo || strlen($pseudo) > 15)
	{
	echo'<font color="#ff0000"><blink>Votre pseudo est inexisant ou fait plus de 15 carractères</blink><br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
	return FALSE;
	}
if(!$email)
   	{
	echo'<font color="#ff0000"><blink>Votre e-mail est innexistant.</blink></font><br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
	return FALSE;
   	}
if(!ereg("\.",$_POST['email']) || !ereg("@",$_POST['email']))//on vérifie avec un regex, il y'a d'autre possibilité, mais nous verrons cela dans un cours sur les expressions régulières
	{
	echo '<font color="#ff0000"><blink>Adresse email non valide , le point ( <b>.</b> ) ou l\'arobase ( <b>@</b> ) ou les 2 ne sont pas dans le champ email</blink></font> <br /><br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>'; //le . ou @ ou les 2 ne sont pas dans le champ $email
	include_once('bas.php');
	return FALSE;
   	}
if(!$typesport)
   	{
	echo'<font color="#ff0000"><blink>Votre type de sport est innexistant.</blink><br /><a href="inscriptions_membres.phps" onClick="history.back()">Retour</a>';
	include_once('bas.php');
	return FALSE;
   	}
if(!$codeclub)
   	{
	echo'<font color="#ff0000"><blink>Votre code club est innexistant</blink></font>.<br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
	return FALSE;
   	}
	
//// VERIFICATIONS PARAMETRES FORMULAIRES ////

$reponse_mail=mysql_query("SELECT email FROM membres WHERE email='".mysql_escape_string($email)."'") or die ('Erreur : '.mysql_error());	//verification si e-mail existe déjà
$count_mail=mysql_fetch_array($reponse_mail);
if($count_mail == 1)
	{
	echo'<font color="#ff0000"><blink>Cet e-mail existe déjà !</blink></font><br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
	
$reponse_pseudo=mysql_query("SELECT pseudo FROM membres WHERE pseudo='".mysql_escape_string($pseudo)."'") or die ('Erreur : '.mysql_error());	//verification si pseudo existe déjà
$count_pseudo=mysql_fetch_array($reponse_pseudo);
if($count_pseudo == 1)
	{
	echo '<font color="#ff0000"><blink>Ce pseudo existe déjà !</blink></font>.<br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
	
	

$reponse_codeclub=mysql_query("SELECT count(*) FROM clubs WHERE 'codeclub' = '".$_POST['codeclub']."'" )or die ('Erreur : '.mysql_error());
$count_codeclub=mysql_fetch_array($reponse_codeclub);
if($count_codeclub[0] == 0)
	{
	echo '<font color="#ff0000"><blink>Ce code ne correspond à aucun club !</blink></font>.<br /><a href="inscriptions_membres.php" onClick="history.back()">Retour</a>';
	include_once('bas.php');
return FALSE;
	}
	
	 

	
$reponse_typesport=array('football','rugby','basketball','volleyball');
	{
	if (in_array($_GET['typesport'],$reponse_typesport)==false)
		$erreur .= " Le champ sport n'est pas correct !</font><br/>";
	}
	
	for ($ligne=0;$ligne<30;$ligne++)		//Création d'un identifiant aléatoire
		{
		@$session.=substr('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN',(rand()%(strlen('0123456789AZERTYUIOPMLKJHGFDSQWXCVBN'))),1);
		}

		$mdp=md5($mdp);		//Codage du mot de passe
		mysql_query("INSERT INTO membres (session, pseudo, passe, email, typesport, codeclub) VALUES ('$session', '$pseudo', '$mdp', '$email', '$typesport', '$codeclub')") or die ('Erreur : '.mysql_error());	//insertion dans la bdd
echo'Merci de vous vous etre inscrit à '.$nom_du_site.'<br /><a href="index_membres.php">Identifiez vous !</a>';
include_once('bas.php');
?>
mon probleme est le suivant :

je veux vérifier si le codeclub saisi existe dans la table des clubs, et sinon, je rembarres l'utilisateur !

et donc avec ce script,
l'inscription se fait mais il ne vérifie pas l'existance du "codeclub"

voila merci a tous par avance !!!!