Prob verif donné

Résolu
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007 - 17 mars 2005 à 22:39
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007 - 20 mars 2005 à 10:04
Bonsoir, désolé de vous déranger encore une fois.

J'ai encore un problème, j'ai créer un espace membre, ainsi qu'un formulaire d'inscription (vraiment tout simple).
Le prob c'est quand il doit vérifier les champs, il me met que certain champs sont vides hors ils sont tous remplis.

Voici les codes :

Fichier config.php :

<?php
$sql_serveur= "localhost";
$sql_user="root";
$sql_passwd="";
$sql_bdd="sub";
$limite_temps=120; //2 minutes


$max="20";



$champsrequis = "Des champs n'ont pas été remplis.
";
$Pseudomaxcar = "20 caractères maximum pour le pseudo.
";
$Pseudomincar = "3 caractères minimum pour le pseudo.
";
$Pseudocar = "Le pseudo doit contenir des lettres.
";
$Pseudospc = "Le pseudo ne doit pas comporter d'espace";
$mdpmaxcar = "10 caractères maximum pour le password.
";
$mdpmincar = "5 caractères minimum pour le password.
";
$mdpspc = "Le password ne doit pas comporter d'espace
";
$wrongident = "Mauvais identifiants.
";
$Pseudonamepris = "Ce pseudo est déjà utilisé, merci d'en choisir un autre.
";
$emailpris = "Cette adresse email est déjà utilisée, merci d'en choisir une autre.
";


function connect()
{
global $sql_serveur,$sql_user,$sql_passwd,$sql_bdd;
$connect_db = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
mysql_select_db($sql_bdd,$connect_db);
return $connect_db;
}


function close()
{
global $connect_db;
mysql_close($connect_db);
}


?>


Fichier inscription :

<link rel="stylesheet" type="text/css" href="style.css">


<?php
include("./config.php");
?>
<center> Formulaire d'inscription : </center>
<form action ="verif_inscrip.php" method= "post">
Pseudo*:, ,
----
Mot de passe*:, ,
----
Adresse e-mail*:, ,
----
Sexe*:, F
M,
----
,
----
* champs obligatoires

</form>

Et bien sur le fichier de vérification d'inscription (je me suis servi d'un fichier trouver sur le site) :

<?php
include('./config.php');


//vérification des données
if (empty($Pseudo) OR empty($mdp) OR empty($email) OR ($sexe))
{
echo" $champsrequis ";
exit;
}


if (strlen($Pseudo) > 20) {
echo"$Pseudomaxcar";
exit;
}


if (strlen($Pseudo) < 3){
echo"$Pseudomincar";
exit;
}


if (strspn($Pseudo,"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") == 0) {
echo" $Pseudocar ";
exit;
}


if (strrpos($Pseudoname,' ') > 0){
echo"$Pseudospc";
exit;
}

if (strlen($mdp) > 10) {
echo"$mdpmaxcar";
exit;
}


if (strlen($mdpword) < 5){
echo"$mdpmincar";
exit;
}


if (strrpos($mdpword,' ') > 0){
echo"$mdpspc";
exit;
}

if(!ereg('^[-!#$%&\'*+\\./0-9 =?A-Z^_`a-z{|}~]+'.
[mailto:'@' '@'].
'[-!#$%&\'*+\\/0-9= ?A-Z^_`a-z{|}~]+\.'.
'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$',
$email))
{
echo "Email non valide...
";
exit;
}



//connexion à la base de donées
$connect_db = connect();

//requete
$requete=mysql_db_query($sql_bdd,"select * from membres where Pseudo='$Pseudo'",$db) or die(mysql_error());
$num=mysql_num_rows($requete);


if($num!=0)
{
echo" $Pseudonameprisretour ";
}

$requetem =mysql_db_query($sql_bdd,"select * from membres where email= '$email'",$db) or die(mysql_error());
$numm=mysql_num_rows($requetem);


if($numm!=0)
{
echo" $emailprisretour ";
exit;
}


else
{
$date = time();
$taille = 20;
$lettres = "abcdefghijklmnopqrstuvwxyz0123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
$smartid.=substr($lettres,(rand()%(strlen($lettres))),1);
}
$sql = "INSERT INTO membres (id, Pseudo, mdp, email, sexe, date_reg) VALUES
('$smartid',
'$Pseudo',
'$mdp',
'$email',
'$sexe',
'$date_reg')
";
mysql_query ($sql);



$expire = 365*24*3600;
setcookie("Pseudo","$Pseudo",time()+$expire,"/","");
setcookie("smartid","$smartid",time()+$expire,"/","");

session_start();
session_register('Pseudo');
session_register('smartid');
header("Location: home.php");



}
?>

Voici ma table :

CREATE TABLE `membres` (
`id_membres` int(11) NOT NULL auto_increment,
`smartid` int(11) NOT NULL default '0',
`Pseudo` varchar(20) NOT NULL default '',
`mdp` varchar(10) NOT NULL default '',
`email` varchar(100) NOT NULL default '',
`sexe` varchar(10) NOT NULL default '',
`date_reg` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id_membres`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

Dois garder le champ id_membres et smartid ou juste un ?

Voila tout est la, ah oui j'oublié comment faire pour vérifier si des boutons radio sont cocher (ici le choix entre F ou M, juste un doit etre cocher).

Merci par avance de votre aide.

20 réponses

morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 10:18
oui scuse moi
if (empty($Pseudo) OR empty($mdp) OR empty($email) OR !($sexe))

la il ira mieux sorry


<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
3
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 12:27
$requete=mysql_db_query($sql_bdd,"select * from membres where Pseudo='$Pseudo'",$connect_db) or die(mysql_error());


<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
3
cs_lotr Messages postés 128 Date d'inscription mardi 11 mai 2004 Statut Membre Dernière intervention 12 août 2005
17 mars 2005 à 23:16
Bonsoir,



franchement, j'ai pas tout lu mais je pense que la réponse à ton
problème de champs vides se trouve là :
http://www.phpdebutant.org/article113.php
0
davwart Messages postés 855 Date d'inscription mardi 19 novembre 2002 Statut Membre Dernière intervention 28 juillet 2009 1
18 mars 2005 à 09:03
dans ton fichier de verif,

- fait un print_r($_POST) pour voir la liste de tes variables passées depuis ton formulaire.

- accede à tes variables avec $_POST["nom_de_ta_variable"];




-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
0

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

Posez votre question
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 09:17
salut,

if (empty($Pseudo) OR empty($mdp) OR empty($email) OR ($sexe))
ton pb vien de la tu regarde si tes champs sont vide et si tu as cocher quielque chose dans sexe, or il faut que rien ne soit coché
if (empty($Pseudo) OR empty($mdp) OR empty($email) OR (!$sexe))

<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 10:11
Salut morpheus262
en utilisant ta solution il me met :

Parse error: parse error, unexpected '!', expecting T_VARIABLE or '$' in c:\program files\easyphp1-7\www\lieupeche\chris\nouveau dossier\verif_inscrip.php on line 5

if (empty($Pseudo) OR empty($mdp) OR empty($email) OR (!$sexe))

davwart :

Que signifie "print_r($_POST)",

J'avais oublié de rajouter ça au début de mon fichier vérif, comme tu le dis davwart faire :

$_POST["nom_de_ta_variable"];

J'ai donc rajouter :

// On commence par repéré les champs
if(isset($_POST['Pseudo'])) $Pseudo= $_POST['Pseudo'];
else $Pseudo="";


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


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


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

Bon, maintenant tout marche sauf que j'ai un nouveau problème qui vient d'apparaitre (toujours quelque chose qui cloche) :

Warning : mysql_db_query(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-7\www\nouveau dossier\verif_inscrip.php on line 74

ce qui correspond à :

$requete =mysql_db_query($sql_bdd,"select * from membres where Pseudo='$Pseudo'",$db) or die(mysql_error());

et je suppose que je vais avoir le meme probleme sur cette requete:

$requetem=mysql_db_query($sql_bdd,"select * from membres where email='$email'",$db) or die(mysql_error());

je ne vois pas le problème.

Merci encore pour votre aide.
@+.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 10:36
merci morpheus262
je vais essayer de suite.
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 11:17
Alors ca donne quoi ? Ca marche ?


<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 12:08
oui apparement le ! marche car il ne me dis plus que j'ai des champs vides. Toutes les autres fonction marche correctement.

Nouveau problème :

Notice: Undefined variable: db in c:\program files\easyphp1-7\www\nouveau dossier\verif_inscrip.php on line 74

Warning: mysql_db_query(): supplied argument is not a valid MySQL-Link resource in c:\program files\easyphp1-7\www\nouveau dossier\verif_inscrip.php on line 74

sur cette ligne :

$requete=mysql_db_query($sql_bdd,"select * from membres where Pseudo='$Pseudo'",$db) or die(mysql_error());

voir 3 messages plus haut.

Je ne vois pas ce qui plante.

Merci encore pour votre aide.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 14:18
ça marche, ça enregistre les données, mais prend pas en compte la date, ni le sexe.
Je vais modifier l'option pour sexe avec une liste déroulante, plus simple à vérifier.

Ah oui, pour la smartid, que dois enlever pour la supprimer ?

{
$smartid.=substr($lettres,(rand()%(strlen($lettres))),1);
}

setcookie("smartid","$smartid",time()+$expire,"/","");

Et quoi d'autre ?
J'aimerai juste enregistrer la date d'inscription, je pense faire comme ça :

$date = date("d-m-Y");

Si tu pouvais m'aider encore une fois, en espérant que je finisse enfin par y arriver.

@+.
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 14:25
oul pour ta "smartid" g pas compris,

pour l date oui j aurasi fait ca mais dans l autre sens par rapport a ta base
$date=date("Y-m-d");

date_reg` date NOT NULL default '0000-00-00',
<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 14:43
encore moi,
Bon, je pense avoir réussi à faire ce que je veux, j'avais homis 2-3 tit truc pour enregistrer les sexe. Pour la date j'ai fais comme j'ai dit au dessus et ça marche aussi.
Voici la fin de mon code :

//Aucun champ n'est vide, on peut enregistrer dans la table
else
{

//on récupère la date
$date_enreg = date("d-m-Y");


// on lit la requête sql
$sql = "INSERT INTO membres (Pseudo, mdp, email, sexe, date_enreg) VALUES ('$Pseudo','$mdp','$email','$sexe','$date_enreg')";


// 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 'Bravo vous venez de vous inscrire sur le site.
Vous pouvez dès maintenant vous connecter et enregistrer un bon coin de pêche.';


// on ferme la connexion
close();


}
?>

Bon, encore une question qui va vous parraitre bete, pour le design, comment dois je faire ?
J'ai une idée qui est ok sur la page index de mon site, sur cet index pour la partie connexion, j'ai fais un "include" de mon fichier connexion avec le design également.
Je voulais savoir si je dois appliquer ce design à toutes les pages ou si il y avais une solution pour ce contenter d'écrire le code dans des fichiers .php et de faire des includes basiques (juste appeler et aucun design dans fichier)

exemple pour l'inscription :
Donc on part de l'index, puis on clique sur inscription, ça nous envoie vers la page avec juste le formulaire, dois mettre en forme cette page ou est il possible d'afficher le formulaire sur la page index en cliquant sur un lien et de recharger la page index avec le formulaire ? (sans frame, ni iframe).

Merci et @+.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 14:50
ça change quoi l'ordre pour la date ?entre $date_enreg date("y-m-d"); et $date_enreg date("d-m-y");

ca change juste l'ordre non ? ça me fais passer la date de 2005-03-18 à 18-03-2005 ? ça pourrais m'arranger.

Merci.
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 14:53
ben je te dirai comme ca non mais sans en etre sur, mois j utilise le systeme de top.php et bas.php et j aurasi donc fait une page formulaire avec top.php, ta connexion puis bas.php, comme ca c une page different bien sur mais l illusion fait que tu te croi sur l index


<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
18 mars 2005 à 15:11
dc je dois pouvoir faire de meme avec plusieur parties, top, gauche et partie milieu droite avec formulaire non ?

En fait sur ma page il y a 4 grandes parties, un bandeau avec pub et une partie menu (accueil, contact, etc....), une partie connexion (actuellement un include), une partie lien vers pages du site (lien vers formulaire d'enregistrement de données, recherce, etc...) et la partie central ou tout devrais s'afficher.
Toutes mes parties sont des div.
Donc faudrai que je fasse comment ?

Merci et a plus.
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
18 mars 2005 à 15:15
oui voila tu fait un fichier php par partie qui ne change pas et tu inclue le tout dans l ordre avec des requires ou des includes selon les cas

<HR>
PS: Besoin d aide pour developper, besoin d un collaborateur pour faire votre site, consulter le post:j'aide a developper ou contacter moi par mail.

Sans maitrise la puissance n'est rien. et je maitrise
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
18 mars 2005 à 17:22
Salut,



la syntaxe mysql_db_query est dépréciée depuis longtemps, remplace-là par ça :



$requete=mysql_query("SELECT * FROM membres WHERE Pseudo='$Pseudo'") or die(mysql_error());


Ensuite si t'as juste besoin de cette requête pour compter si un login existe, remplace-là par ça :



$requete=mysql_query("SELECT COUNT(*) FROM membres WHERE Pseudo='$Pseudo'") or die(mysql_error());



$nb=mysql_fetch_row($requete);

if($nb[0]==0)

{

//le pseudo n'est pas présent dans la base

}




a +
<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
19 mars 2005 à 10:09
Merci morpheus262, je vais essayer et je te tiendrai au courant.

Anthomicro :

Dc je remplace

$requete= mysql_db_query($sql_bdd,"select * from membres where Pseudo='$Pseudo'",$connect_db) or die(mysql_error());
$num=mysql_num_rows($requete);


if($num!=0)
{
echo" $Pseudonameprisretour ";
}

par

$requete =mysql_query("SELECT COUNT(*) FROM membres WHERE Pseudo='$Pseudo'") or die(mysql_error());

$nb=mysql_fetch_row($requete);
if($nb[0]==0)
{
//le pseudo n'est pas présent dans la base
}

donc, si le pseudo est présent, que va t il m'afficher ?
a la place de //le pseudo..... je peux remettre echo"$Pseudonamepris.......

Merci.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
19 mars 2005 à 10:32
j'ai fait comme ça, et ça marche, mais est ce bon ?

$requete=mysql_query("SELECT COUNT(*) FROM membres WHERE Pseudo='$Pseudo'") or die(mysql_error());

$nb=mysql_fetch_row($requete);
if($nb[0]==0)
{
//le pseudo n'est pas présent dans la base
}
if($nb[0]==1)
{
echo"$Pseudonameprisretour";
exit;
}

est ce que je peux faire de cette façon pour vérifier si l'email est présent ? je pense que oui.

Merci.
@+.
0
cobrachris Messages postés 85 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 mars 2007
20 mars 2005 à 10:04
j'ai adapté pour l'email, et ça marche bien.

Merci à vous de m'avoir donné un coup de main.

@+.
0
Rejoignez-nous