Comparaison d'une donnée avec une donnée d'une table

monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 juin 2006 - 14 juin 2006 à 10:48
monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 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>


<tr>
    <td>Nom :</td>
    <td></td>
</tr>




<tr>
    <td>Login :</td>
    <td></td>
</tr>
 
<tr>
    <td>Password :</td>
    <td></td>
</tr>


<tr>
    <td>Age :</td> 
    <td><select name="age"><option value="-">Age</option>
          <? for($i=1;$i<100;$i++) echo "<option value='$i'>$i</option>";?>
    </select> ans
    </td>
</tr>


<tr><td>Sexe: </td><tD>
    F
    M
    </tD>
</tr>


<tr>
    <td colspan="2" align="right"></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="";


if(isset($_POST['pass']))      $pass=$_POST['pass'];
else      $pass="";


if(isset($_POST['age']))      $age=$_POST['age'];
else      $age="";


if(isset($_POST['sexe']))      $sexe=$_POST['sexe'];
else      $sexe="";


if(isset($_POST['etude']))      $etude=$_POST['etude'];
else      $etude="";


if(isset($_POST['nom']))      $nom=$_POST['nom'];
else      $nom="";


$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
}

9 réponses

cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 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
}
0
cs_Tit0x Messages postés 174 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 9 juillet 2006
14 juin 2006 à 11:04
Hello

Ne t'inquiètes pas ;) Il y a un début à tout ;)

Moi aussi je débute donc ^^ J'essaye d'aider les autres pour m'améliorer, comme ca si j'dit une connerie bah je serai corriger =D

Sinon j'ai regardé ton code et j'ai trouvé ca :

$numero=$ligne('numero');
$nom=$ligne('nom');

Moi je ne met pas comme ca (et moi ca fonctionne) donc j'pense que c'est une 'erreur'.

Voilà ce que je met moi :

$numero=$ligne[numero];
$nom=$ligne[nom];

Essayes et tient moi au courant =D

Encore une fois j'dit peut être une bétise mais bon au moins j'essaye ^^

titoxx
0
monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 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.';


    mysql_close();  // on ferme la connexion
}
}
0
cs_Tit0x Messages postés 174 Date d'inscription mardi 3 janvier 2006 Statut Membre Dernière intervention 9 juillet 2006
14 juin 2006 à 11:27
Re

$query="SELECT * FROM tbl_user_admin WHERE 'numero'=$etude AND 'nom'=$nom";

C'est pas :

$query="SELECT * FROM tbl_user_admin WHERE numero='$etude' AND nom='$nom'";

Les quotes mal placées ?

titoxx
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 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
0
monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 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.
0
monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 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);
0
cs_PoFMaN Messages postés 58 Date d'inscription dimanche 12 décembre 2004 Statut Membre Dernière intervention 21 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'";
0
monsieurmartinez Messages postés 15 Date d'inscription jeudi 1 juin 2006 Statut Membre Dernière intervention 24 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.
0
Rejoignez-nous