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

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 21:33

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 21:58

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
}

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:07

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 22:15

Heu..si tu n'appelles pas la base comment veux-tu que la vérification données form-données base soit possible ?

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:19

genre il faudrait faire :

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

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

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:23

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:

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 22:24

Montres moi le code complet de ta page

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:27

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>

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 22:38

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

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:45

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

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 22:50

Une chose, indentes correctement ton code, tu verras que les accolades ne se ferment pas normalement. Il y en a une fermante en trop.

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:53

t'es sur?
j'en compte 4 ouvrantes et 4 fermantes

tu vois ca ou?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 22:55

Houlà je suis fatigué moi, c'est parce que j'ai corrigé en supprimant un machin...autant pour moi...je revois ça

edenyorke
Invité n'ayant pas de compte PHPfrance

15 mars 2006, 22:58

peut etre tu veux aussi le formulaire et la base?

Avatar du membre
ViPHP
ViPHP | 3008 Messages

15 mars 2006, 23:01

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>