Comparaison d'une donnée avec une donnée d'une table
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006
-
14 juin 2006 à 10:48
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006
-
14 juin 2006 à 11:51
Bonjour je crée actuellement un site internet pour une faculté roumaine.
Je suis actuellement en train de créer un formulaire d'inscription pour les élèves.
J'ai auparavant crée une table tbl_user_admin où le webmaster peut ajouter le nom et le numéro de carte étudiant d'un élève.
De ce fait je voudrais que lorsqu'un élève se crée un compte en utilisant un nom ou un numéro de carte étudiant faux, un message d'erreur lui dise qu'il n'est pas répertorié comme étant étudiant.
Les codes que j'ai déjà tapé sont ci-dessous.Ceux-ci acceptent tous les étudiants même s'ils ne sont pas répertoriés dans la table tbl_user_admin.
Si quelqu'un voit d'où vient l'erreur merci de m'en informer.
C'est peut -être une erreur toute bête mais excsez moi d'avance je débute en php.
Page formulaire.php (enfin la partie qui nous intéresse plus précisément !!):
<form action= "inscription.php" method='post'>
<table align="center" border="0">
<tr>
<td>Numéro de
carte étudiant : </td>
<td></td>
</tr>
page inscription.php :
<?php
$bdd="université";
$host="localhost";
$user="root";
$pass="";
mysql_connect($host,$user,$pass) or die ("Impossible de se connecter à la base de données");
mysql_select_db($bdd);
// On commence par récupérer les champs
if(isset($_POST['login'])) $login=$_POST['login'];
else $login="";
$query="SELECT numero,nom FROM tbl_user_admin WHERE 'numero'=$etude AND 'nom'=$nom";
if($result=mysql_query($query))
{
while($ligne=mysql_fetch_array($result))
{
$numero=$ligne('numero');
$nom=$ligne('nom');
}
if(($numero[0]=="") or ($nom[0]==""))
{
echo "Vous n'êtes pas répertorié comme étant un étudiant de l'université de Pitesti";
}
}
if(empty($login) OR empty($pass) OR empty($etude) OR empty($sexe) OR empty($nom))
{
echo 'Attention, seul le champs age peut rester vide !';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('université',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO tbl_user(nom, id_user, login, pass,age, sexe,etude) VALUES('nom','','$login','$pass','$age','$sexe','$etude')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
mysql_close(); // on ferme la connexion
}
A voir également:
Comparaison d'une donnée avec une donnée d'une table
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 14 juin 2006 à 11:03
Salut,
Le problème c'est que si ton if :
if($result=mysql_query($query))
échoue ca veut dire qu'il n'y a pas d'etudiant corresondant aux info ds la table tbl_user_admin
et après ce if tu insère le mec dans la table tbl_user du coup quelque soit le résutat de la requete select et bien tu l'insère
en fait toute ta partie insertion dans la table tbl_user devrai être dans ce if
Au passage pour vérifier si un étudiant est dans la table tbl_user_admin tu devrai plutot faire un
"select count(*) where 'numero'=$etude AND 'nom'=$nom"
Il me semble que c'est plus optimisé, par contre ça change ton if faudra tester la valeur renvoyée donc ca donnerai un truc comme ca:
$result=mysql_query($query);
$tabResult=mysql_fetch_array($result);
if($tabResult['count(*)'])
{
//autres tests et insertion
}
else
{
//et ben non tu peu pas t'es pas étudiant
}
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006 14 juin 2006 à 11:24
Merci à vous deux pour vos réponses rapides mais j'ai toujours un problème.
Titox j'ai essaé ce que tu as mis mais ca n'a rien changé.Merci quand même.
j'ai modifié et j'ai tout inséré dans le if mais maintenant ca ne m'affiche rien du tout, enfin pas la phrase comme quoi il n'est pas répertorié dans la table tbl_user.
Le code est devenu :
$query= "SELECT * FROM tbl_user_admin WHERE 'numero'=$etude AND 'nom'=$nom";
if($result=mysql_query($query))
{
while($ligne=mysql_fetch_array($result))
{
$numero=$ligne('numero');
$nom=$ligne('nom');
}
if(($numero[0]="") or ($nom[0]=""))
{
echo "Vous n'êtes pas répertorié comme étant un étudiant de l'université de Pitesti";
}
if(empty($login) OR empty($pass) OR empty($etude) OR empty($sexe) OR empty($nom))
{
echo 'Attention, seul le champs age peut rester vide !';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('université',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO tbl_user(nom, id_user, login, pass,age, sexe,etude) VALUES('nom','','$login','$pass','$age','$sexe','$etude')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 14 juin 2006 à 11:33
Bon, j'ai pas du être clair en fait je te suggerai de faire ca:
$query= "SELECT count(*) FROM tbl_user_admin WHERE 'numero'=$etude AND 'nom'=$nom";
$result=mysql_query($query);
$tabResult=mysql_fetch_array($result);
if($tabResult['count(*)'])
{
if(empty($login) OR empty($pass) OR empty($etude) OR empty($sexe) OR empty($nom))
{
echo 'Attention, seul le champs age peut rester vide !';
}
// Aucun champ n'est vide, on peut enregistrer dans la table
else
{
// connexion à la base
$db = mysql_connect('localhost', 'root', '') or die('Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('université',$db) or die('Erreur de selection '.mysql_error());
// on écrit la requête sql
$sql = "INSERT INTO tbl_user(nom, id_user, login, pass,age, sexe,etude) VALUES('nom','','$login','$pass','$age','$sexe','$etude')";
// on insère les informations du formulaire dans la table
mysql_query($sql) or die('Erreur SQL !'.$sql.'
'.mysql_error());
// on affiche le résultat pour le visiteur
echo 'Vos infos on été ajoutées.';
mysql_close(); // on ferme la connexion
}
}
else
{
echo "Vous n'êtes pas répertorié comme étant un étudiant de l'université de Pitesti";
}
Au passage ton test pour savoir si les bon champ ont été remplis tu devrai le faire au début (avant de faire des requetes SQL qui seront pas necessaires si le test échoue), ou même en javascript, ou les deux si tu veux être sur
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006 14 juin 2006 à 11:33
ouais c'était faux je m'en suis rendu compte quand tu me l'as dit mais maintenant ca enregistre tout le monde meme si il n'est pas dans la table_user_admin.
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006 14 juin 2006 à 11:40
j'ai fait un copeir coller de ce que tu m'as envoyé et maintenant ca me met une erreur :
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp1-8\www\monsite\kit51\inscription.php on line 114 Vous n'êtes pas répertorié comme étant un étudiant de l'université de Pitesti
la ligne 114 est celle la : $tabResult=mysql_fetch_array($result);
cs_PoFMaN
Messages postés58Date d'inscriptiondimanche 12 décembre 2004StatutMembreDernière intervention21 juin 2006 14 juin 2006 à 11:47
Chez moi ca marche avec une table différente et une condition différente.
Juste je vien de me rendre compte que j'avai recopier ton erreur des ' que titox t'as signalé, ca doit venir de là
$query="SELECT count(*) FROM tbl_user_admin WHERE 'numero'=$etude AND 'nom'=$nom";
devient
$query="SELECT count(*) FROM tbl_user_admin WHERE numero='$etude' AND nom='$nom'";
monsieurmartinez
Messages postés15Date d'inscriptionjeudi 1 juin 2006StatutMembreDernière intervention24 juin 2006 14 juin 2006 à 11:51
Ok merci ça marche nickel maintenant.
Merci à vous deux car ca fesait depuis ce matin 9h que je planchait la-dessus alors qu'il me semblait que ce n'était pas si dur que ça.
Merci beaucoup.