Page 1 sur 2

Recuperation des données d'une base de donnée mysql

Posté : 15 mars 2006, 21:33
par edenyorke
bonjour ,

je suis en train de construire un site php permettant l'inscription à des étudiant a un Master
j'ai donc crée une page contenant un formulaire et une autre verifiant et integrant les données dans une base.

j'aimerai aussi pouvoir verifier qu'un étudiant ne s'inscrive pas deux fois.
pour cela je fais une requete qui devrai me renvoyer un nom SI le nom existe deja dans la base (d'ailleurs pas que le nom mais le nom, le prenom et l'email = cahier des charges)
voici mon code pour obtenir les t-uples :
$verifnom = "SELECT nom FROM candidats where nom = $nom";
$resultnom = mysql_db_query("candidats", $verifnom);
$verifprenom = "SELECT prenom FROM candidats where prenom = $prenom";
$resultprenom = mysql_db_query("candidats", $verifprenom);
$verifemail = "SELECT email_perso FROM candidats where email_perso = $email_perso";
$resultemail = mysql_db_query("candidats", $verifemail);


echo $resultnom , $resultprenom , $resultemail;

if ($resultnom != $nom && $resultprenom != $prenom && $resultemail != $email_perso)
{
$nom $prenom et $email_perso proviennent du formulaire (ca ca marche)

avec cette requette que doit me retourner $resultnom $resultprenom et $resultemail_perso?

car echo $resultnom , $resultprenom , $resultemail; ne me retourne rien
pourtant dans la table il existe un nom, un prenom et un email correspondant au $nom, $prenom et $email_perso

si qq'un pouvait m'eclairer ca me rendrait beaucoup service

Posté : 15 mars 2006, 21:58
par charabia
Fait quelque chose comme ça :
$rqt=mysql_query("SELECT nom,prenom,email_perso FROM candidats WHERE nom='".$_POST['nom']."' AND prenom='".$_POST['prenom']."' AND email_perso='".$_POST['email_perso']."'");
$nombreligne=mysql_num_rows($rqt);

if ($nombreligne != 0)
{
 // non ok
}
else
{
 // ok --> ton code
}

he he !!

Posté : 15 mars 2006, 22:07
par edenyorke
la logique est tres bonne !!!!
mais il doit y avoir un soucis avec la fonction : mysql_num_rows
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\projet php\verif.php on line 83

j'utilise mysql_db_query et non pas mysql_query
ca doit venir de ca car je n'appelle pas la base avant

Posté : 15 mars 2006, 22:15
par charabia
Heu..si tu n'appelles pas la base comment veux-tu que la vérification données form-données base soit possible ?

ok

Posté : 15 mars 2006, 22:19
par edenyorke
genre il faudrait faire :

$nombreligne=mysql_num_rows('candidats',$rqt);
ou

$nombreligne=mysql_db_num_rows('candidats',$rqt);

meme en appellant la base...

Posté : 15 mars 2006, 22:23
par edenyorke
meme en appellant la base ca marche pas :
$rqt=mysql_db_query('candidats',"SELECT nom,prenom,email_perso FROM candidats WHERE nom='".$_POST['nom']."' AND prenom='".$_POST['prenom']."' AND email_perso='".$_POST['email_perso']."'");
mysql_select_db("candidats");

$nombreligne=mysql_num_rows($rqt);

if ($nombreligne == 0)
{
ya surement un truc tres simple mais que je n'ai pas pigé... :roll:

Posté : 15 mars 2006, 22:24
par charabia
Montres moi le code complet de ta page

merci en tout cas

Posté : 15 mars 2006, 22:27
par edenyorke
voici le code :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head><body>
<?php

// Générateur de code 
// A mettre en fonction


for ($i = 1; $i <=8 ; $i++)
{
$a = rand(1,9);

switch ($a)
{
case 1 : $a = 1;
break;
case 2 : $a = 2;
break;
case 3 : $a = 3;
break;
case 4 : $a = 4;
break;
case 5 : $a = 5;
break;
case 6 : $a = 6;
break;
case 7 : $a = 7;
break;
case 8 : $a = 8;
break;
case 9 : $a = 9;
break;

}
$b = $b.$a;

}

// Récuperation des données après envoie du formaulaire 

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$jour_naiss = $_POST['jour_naiss'];
$mois_naiss = $_POST['mois_naiss'];
$annee_naiss = $_POST['annee_naiss'];
$numero_voie = $_POST['numero_voie'];
$code_postal = $_POST['code_postal'];
$ville = $_POST['ville'];
$pays = $_POST['pays'];
$tel_perso = $_POST['tel_perso'];
$tel_parents = $_POST['tel_parents'];
$tel_autre = $_POST['tel_autres'];
$email_perso = $_POST['email_perso'];
$email_autre = $_POST['email_autre'];
$bio_inf = $_POST['bio_inf'];
$etud_annee_prec = $_POST['etud_annee_prec'];
$etab_annee_prec = $_POST['etab_annee_prec'];
$ville_annee_prec = $_POST['ville_annee_prec'];
$login = $_POST['login'];
$mot_de_passe = $_POST['mot_de_passe'];
$mot_de_passe_bis = $_POST['mot_de_passe_bis'];


// Vérification des champs (si ils ne sont pas vides ?)
if($nom != "" && $prenom != "" && $jour_naiss != "" && $mois_naiss != "" && $annee_naiss != "" && $numero_voie != "" && $code_postal != "" && $ville != "" && $pays != "" && $tel_perso != "" && $tel_parents != "" && $email_perso != "" && $etud_annee_prec != "" && $etab_annee_prec != "" && $ville_annee_prec != "" && $login != "" && $mot_de_passe != "" && $mot_de_passe_bis != "" )
{
// verification du mot de passe
if($mot_de_passe == $mot_de_passe_bis)
{
// Connexion a Mysql 
$mysql_link = mysql_connect("localhost","root","");

// Vérification de la validité de la connexion MYSQL
if($mysql_link)
{
// Verification d'une entrée unique

$rqt=mysql_db_query('candidats',"SELECT nom,prenom,email_perso FROM candidats WHERE nom='".$_POST['nom']."' AND prenom='".$_POST['prenom']."' AND email_perso='".$_POST['email_perso']."'");
mysql_select_db('candidats');

$nombreligne=mysql_num_rows($rqt);

if ($nombreligne == 0)
{

 


// Requete d'insertion MYSQL
$requete = "INSERT INTO candidats (code, nom, prenom, jour_naiss, mois_naiss, annee_naiss, numero_voie, code_postal, ville, pays, tel_perso, tel_parents, tel_autre, bio_inf, email_perso, email_autre, etud_annee_prec, etab_annee_prec, ville_annee_prec, login, mot_de_passe) VALUES ('$b', '$nom', '$prenom', '$jour_naiss', '$mois_naiss', '$annee_naiss', '$numero_voie', '$code_postal', '$ville', '$pays', '$tel_perso', '$tel_parents', '$tel_autre', '$bio_inf', '$email_perso', '$email_autre', '$etud_annee_prec', '$etab_annee_prec', '$ville_annee_prec', '$login', '$mot_de_passe')";

// Execution de cette requete dans la base candidats
$execution = mysql_db_query("etudiant", $requete);
echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>candidats</b></font>";
}
else echo "Nom, Prenom et E-mail deja existant"; 
}


// La connexion Mysql est indisponible
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>- Soit vous n'avez pas lancé MYSQL.</font></body></html>";

}
// Les deux mots de passe ne sont pas identiques
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Les mots de passe ne sont pas identiques, veuillez vérifier</font></body></html>";
}
// Les champs ne sont pas tous remplis
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION :  Un des champs n'a pas été remplis correctement, veuillez vérifier</font></body></html>";
?>

</body>
</html>

Posté : 15 mars 2006, 22:38
par charabia
J'ai pas tout vérifier mais tu ne fais nulle part la connexion à la base :

Code : Tout sélectionner

mysql_connect($host,$user,$pass) or die("SERVEUR HS"); mysql_select_db($bdd) or die ("BDD HS");
Et c'est
if ($nombreligne != 0) 
{ ...etc
pas
if ($nombreligne == 0) 
{ ...etc

ok

Posté : 15 mars 2006, 22:45
par edenyorke
en fait ya ca :
$mysql_link = mysql_connect("localhost","root","");
et j'ai fais :
if ($nombreligne == 0)
{ ...etc
juste pour faire l'inverse CAD si ya pas de ligne alors tu continues sinon tu vas jusqu'au message d'erreur qui est : " nom prenom et mail deja existant"

et j'utilise
$resultnom = mysql_db_query("candidats", $verifnom);
qui appelle la base

Posté : 15 mars 2006, 22:50
par charabia
Une chose, indentes correctement ton code, tu verras que les accolades ne se ferment pas normalement. Il y en a une fermante en trop.

ah bon?

Posté : 15 mars 2006, 22:53
par edenyorke
t'es sur?
j'en compte 4 ouvrantes et 4 fermantes

tu vois ca ou?

Posté : 15 mars 2006, 22:55
par charabia
Houlà je suis fatigué moi, c'est parce que j'ai corrigé en supprimant un machin...autant pour moi...je revois ça

Posté : 15 mars 2006, 22:58
par edenyorke
peut etre tu veux aussi le formulaire et la base?

Posté : 15 mars 2006, 23:01
par charabia
Essaies ça (en remplacant le nom de la base) :
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
<title>Document sans titre</title> 
</head><body> 
<?php
//A MODIFIER EN AJOUTANT UN INCLUDE AVEC LES ACCES
$host="locahost";
$user="root";
$pass="";
$bdd="ta_base";
mysql_connect($host,$user,$pass) or die("SERVEUR HS");
mysql_select_db($bdd) or die ("BDD HS");
// Générateur de code 
// A mettre en fonction 


for ($i = 1; $i <=8 ; $i++) 
{ 
	$a = rand(1,9); 
	
	switch ($a) 
	{ 
	case 1 : $a = 1; 
	break; 
	case 2 : $a = 2; 
	break; 
	case 3 : $a = 3; 
	break; 
	case 4 : $a = 4; 
	break; 
	case 5 : $a = 5; 
	break; 
	case 6 : $a = 6; 
	break; 
	case 7 : $a = 7; 
	break; 
	case 8 : $a = 8; 
	break; 
	case 9 : $a = 9; 
	break; 
	}
	$b = $b.$a;
}

// Récuperation des données après envoie du formaulaire 

$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
$jour_naiss = $_POST['jour_naiss']; 
$mois_naiss = $_POST['mois_naiss']; 
$annee_naiss = $_POST['annee_naiss']; 
$numero_voie = $_POST['numero_voie']; 
$code_postal = $_POST['code_postal']; 
$ville = $_POST['ville']; 
$pays = $_POST['pays']; 
$tel_perso = $_POST['tel_perso']; 
$tel_parents = $_POST['tel_parents']; 
$tel_autre = $_POST['tel_autres']; 
$email_perso = $_POST['email_perso']; 
$email_autre = $_POST['email_autre']; 
$bio_inf = $_POST['bio_inf']; 
$etud_annee_prec = $_POST['etud_annee_prec']; 
$etab_annee_prec = $_POST['etab_annee_prec']; 
$ville_annee_prec = $_POST['ville_annee_prec']; 
$login = $_POST['login']; 
$mot_de_passe = $_POST['mot_de_passe']; 
$mot_de_passe_bis = $_POST['mot_de_passe_bis']; 


// Vérification des champs (si ils ne sont pas vides ?) 
if($nom != "" && $prenom != "" && $jour_naiss != "" && $mois_naiss != "" && $annee_naiss != "" && $numero_voie != "" && $code_postal != "" && $ville != "" && $pays != "" && $tel_perso != "" && $tel_parents != "" && $email_perso != "" && $etud_annee_prec != "" && $etab_annee_prec != "" && $ville_annee_prec != "" && $login != "" && $mot_de_passe != "" && $mot_de_passe_bis != "" ) 
{ 
	// verification du mot de passe 
	if($mot_de_passe == $mot_de_passe_bis) 
	{
		// Verification d'une entrée unique 
		$rqt=mysql_query('candidats',"SELECT nom,prenom,email_perso FROM candidats WHERE nom='".$nom."' AND prenom='".$prenom."' AND email_perso='".$email_perso."'"); 
		$nombreligne=mysql_num_rows($rqt); 

		if ($nombreligne == 0) 
		{
		// Requete d'insertion MYSQL 
		$requete = "INSERT INTO candidats (code,nom,prenom,jour_naiss,mois_naiss,annee_naiss,numero_voie,code_postal,ville,pays,tel_perso,tel_parents,tel_autre,bio_inf,email_perso,email_autre,etud_annee_prec,etab_annee_prec,ville_annee_prec,login,mot_de_passe) VALUES ('$b','$nom','$prenom','$jour_naiss','$mois_naiss','$annee_naiss','$numero_voie','$code_postal','$ville','$pays','$tel_perso','$tel_parents','$tel_autre','$bio_inf','$email_perso','$email_autre','$etud_annee_prec','$etab_annee_prec','$ville_annee_prec','$login','$mot_de_passe')"; 

		// Execution de cette requete dans la base candidats 
		$execution = mysql_db_query("etudiant", $requete); 
		echo "<font face='Verdana' size='2'>Les valeurs ont bien été enregistrées dans la table <b>candidats</b></font>"; 
		}
		else
		{
			echo "Nom, Prenom et E-mail deja existant";
		}
	}
	// La connexion Mysql est indisponible 
	else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>Vous avez du faire une erreur : Ce problème se pose soit : <br>- Parce que vous n'avez pas créer la base, ni la table MYSQL;<br>- Parce que vous n'avez pas changé le Mot de passe d'accès a MYSQL dans ce programme (Par défaut, c'est Host : 'localhost', login : 'root', MDP : '[vide]';<br>- Soit vous n'avez pas lancé MYSQL.</font></body></html>";
} 
// Les deux mots de passe ne sont pas identiques 
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION : Les mots de passe ne sont pas identiques, veuillez vérifier</font></body></html>"; 
} 
// Les champs ne sont pas tous remplis 
else echo "<HTML><HEAD><TITLE>Erreurs</TITLE></HEAD><BODY><font face='Verdana' size='2'>ATTENTION :  Un des champs n'a pas été remplis correctement, veuillez vérifier</font></body></html>"; 
?> 

</body> 
</html>