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

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

Messages postés
58
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
21 juin 2006

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
}
Messages postés
174
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
9 juillet 2006

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

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
}
}
Messages postés
174
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
9 juillet 2006

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
Messages postés
58
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
21 juin 2006

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

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

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);
Messages postés
58
Date d'inscription
dimanche 12 décembre 2004
Statut
Membre
Dernière intervention
21 juin 2006

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

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.