Formulaire en désordre

Eléphant du PHP | 52 Messages

08 févr. 2009, 22:40

Salut

J'ai créé un formulaire d'inscription pour mon espace membre, pourtant tout semble normale, mais lorsque je clique sur "envoyer", les variables ne s'écrit pas dans la base et les echo ou print ne s'affiche lors d'une case vide ou login, mot de passe déjà utilisés.

Voici mon code :

Tout porte sur une même page.
<?php
// Connexion à la base (PARTIE 1)
// A bien configurer

$host = "localhost";			// Nom du serveur
$user = "root";					// Nom de l'utilisateur
$pass = "";						// Mot de passe de l'utilisateur
$base = "piwiteam";				// Nom de la base de donnée
$tab = "tbl_user";				// Nom de la table figurant dans la base de donnée

// Connexion à la base (PARTIE 2)
// A NE PAS MODIFIER ! MODIFIER LES INFORMATIONS A LA PARTIE 1

$db = mysql_connect("$host", "$user", "$pass");
mysql_select_db("$base", $db);

// Page d'inscription
// NE PAS MODIFIER
// CODE HTML
?>
<title>- Inscription -</title>
<center>
  <p><font color="#0099FF" size="+2">- Inscription -</font><br>
    <br>
  <a href="index.php">Accueil</a> | <a href="?dictory=membre">Espace Membre</a> | <a href="?dictory=contact">Contact</a></p>
  <form name="inscription" id="inscription" method="post" action="">
    <table width="50%" border="0">
      <tr>
        <td><strong>Choisissez un pseudo</strong></td>
        <td><label>
          <input type="text" name="pseudo" id="pseudo">
        </label></td>
      </tr>
      <tr>
        <td><strong>Choisissez un login (login de connexion)</strong></td>
        <td><label>
          <input type="text" name="login" id="login">
        </label></td>
      </tr>
      <tr>
        <td><strong>Saisissez une adresse email</strong></td>
        <td><label>
          <input type="text" name="email" id="email">
        </label></td>
      </tr>
      <tr>
        <td><strong>Choisissez un mot de passe</strong></td>
        <td><label>
          <input type="password" name="pwd" id="pwd">
        </label></td>
      </tr>
      <tr>
        <td><strong>Confirmation du mot de passe</strong></td>
        <td><label>
          <input type="password" name="pwd1" id="pwd1">
        </label></td>
      </tr>
      <tr>
        <td><strong>Anti-Spam</strong></td>
        <td><img src="anti_spam.php?name=inscription&strlen=4" alt="anti-flood" /></td>
      </tr>
      <tr>
        <td><strong>Retapez le code sur l'image</strong></td>
        <td><label>
          <input type="text" name="antispam" id="antispam">
        </label></td>
      </tr>
    </table>
    <br>
    <label>
      <input type="submit" name="envoie" id="envoie" value="Envoyer">
    </label>
  </form>
  <p><br>
    Tous les champs sont obligatoire !
    <br>
  </p>
  <table width="50%" border="1" align="center">
    <tr>
      <td bgcolor="#0066FF">
<?php
// Récuparation des variables du formulaire afin de continuer l'inscription
// Les variables du formulaire
if(isset($_POST['inscription'])) {
$pseudo = $_POST['pseudo'];
$login = $_POST['login'];
$email = $_POST['email'];
$pwd = md5($_POST['pwd']);

if(isset($_POST['envoie'])) {
	if(empty($_POST['pseudo'])) {
		print("<br>Vous devez choisir un pseudo!");
	}
	$sql = "SELECT pseudo FROM $tab WHERE pseudo='".$pseudo."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($pseudo($res!=0)) {
		print("<br>Ce pseudo est libre!");
		$sql = "INSERT INTO $tab VALUES('', '$pseudo')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	}
	else {
		print("pseudo deja utiliser");
	}
	if(empty($_POST['login'])) {
		print("<br>Vous devez choisir un login!");
	}
	$sql = "SELECT login FROM $tab WHERE login='".$login."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($login($res!=0)) {
		print("<br>Ce login est déjà utilisé !");
		$sql = "INSERT INTO $tab (login) VALUES('', '$login')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		}
	else {
		print("Login utilisé!");
	}
	if(empty($_POST['email'])) {
		print("<br>Vous devez saisir une email!");
	}
	$sql = "SELECT email FROM $tab WHERE email='".$email."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($email($res!=0)) {
		print("<br>Email libre!");
		$sql = "INSERT INTO $tab (email) VALUES('', '$email')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		}
	else {
		print("adresse deja utiliser!");
	}
	if(empty($_POST['pwd'])) {
		print("<br>Vous devez saisir un mot de passe!");
	if($pwd!=$pwd1) {
		print("<br>Les deux mot de passe de correspondent pas !");
		}
	}
// Si le formulaire est saisis correctement, on valide l'inscription et écriture dans la base de donnée !
$sql = "INSERT INTO $tab VALUES('', '$pseudo', '$login', '$email', '$pwd')";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$res= mysql_num_rows($req);
mysql_close($db);
	exit("Inscription r&eacute;siit !!!<br><a href=\"?dictory=login\">cliquez ici pour l'espace membre</a>");
}
}
?>
</td>
    </tr>
  </table>
</center>
Il y a aucune erreur qui s'affiche mais aucune écriture dans la base. Si vous pouvez m'aider :roll:

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 22:47

Bonsoir,
fait un print_r($_POST) pour voir?

Eléphant du PHP | 52 Messages

08 févr. 2009, 22:53

erf non j'ai mis print_r à la place de tout les print .

Si c'est pas comme ça qu'il faut le placer, dis-le moi, surement du au mauvais placement de print_r

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 22:55

Alors juste après
if(isset($_POST['envoie'])) {
tu mets
echo '<pre>';
print_r($_POST);
echo '</pre>';
Et tu nous colle ce que ça donne içi...

Eléphant du PHP | 52 Messages

08 févr. 2009, 22:59

Aucun événement

Les print ne s'affiche pas, enfin bref.... Ta une autre idée ? :-k

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 23:04

Les formulaire et les tableaux ne font jamais bon ménage....
Essaye de virer le tableau entièrement (pour la mise en forme, un exemple au hasard: http://covertprestige.info/test/27-form ... leaux.html )...

EDIT: y a celui là aussi de tuto pour la mise en forme, qui est très bien: http://www.fredcavazza.net/files/doc/tu ... _intro.htm
(petit problème d'encodage apperement, mais c'est pas grave ;) )

Eléphant du PHP | 52 Messages

08 févr. 2009, 23:15

J'ai supprimé les tableaux et mis la meme forme de ton site qui ta m'a donné.

Mais toujours pareil, ya rien qui s'affiche. C'était pas à cause des tableaux je pense mais du code php.

Je vais voir si je peux trouver quelques infos pour réussir l'écritute dans la base et afficher les prints :ordi:

P.S: C'est mieux sans les tableaux ;)

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 23:18

Bon alors redonne nous le code actuel...

Eléphant du PHP | 52 Messages

08 févr. 2009, 23:21

Tien le voilà :
<?php
// Connexion à la base (PARTIE 1)
// A bien configurer

$host = "localhost";			// Nom du serveur
$user = "root";					// Nom de l'utilisateur
$pass = "";						// Mot de passe de l'utilisateur
$base = "piwiteam";				// Nom de la base de donnée
$tab = "tbl_user";				// Nom de la table figurant dans la base de donnée

// Connexion à la base (PARTIE 2)
// A NE PAS MODIFIER ! MODIFIER LES INFORMATIONS A LA PARTIE 1

$db = mysql_connect("$host", "$user", "$pass");
mysql_select_db("$base", $db);

// Page d'inscription
// NE PAS MODIFIER
// CODE HTML
?>
<style type="text/css">
form {
	width: 500px;
	padding: 10px 20px;
	background: lavender;
	color: midnightblue;
}
form p {
	margin: 1em 0;
}
form p.double {
	/* Empêcher le dépassement des flottants */
	overflow: hidden;
	/* Idem pour IE6 */
	width: 100%;
}
form p.double label {
	float: left;
	width: 150px;
	text-align: right;
	font-weight: bold;
	cursor: pointer;
}
form p.double label span.info {
	display: block;
	margin-top: .2em;
	font-size: .8em;
	font-weight: normal;
	cursor: default;
}
form p.double input,
form p.double textarea {
	width: 250px;
	margin-left: 12px;
	border: solid 1px midnightblue;
	padding: 2px 4px;
}
form p.double textarea {
	padding: 2px 0 0 4px;
	width: 320px;
	height: 6em;
}
form p.simple {
	margin-left: 160px;
}
</style>
<title>- Inscription -</title>
<center>
  <p><font color="#0099FF" size="+2">- Inscription -</font><br>
    <br>
  <a href="index.php">Accueil</a> | <a href="?dictory=membre">Espace Membre</a> | <a href="?dictory=contact">Contact</a></p>
  <form name="inscription" id="inscription" method="post" action="">
	<p class="double">
		<label for="pseudo">Pseudo:</label>
		<input type="text" name="pseudo" id="pseudo" />
	</p>
	<p class="double">
		<label for="login">Login:</label>
		<input type="text" name="login" id="login" />
	</p>
	<p class="double">
		<label for="email">Adresse email:
		</label>
		<input type="text" name="email" id="email" />
	</p>
	<p class="double">
		<label for="pwd">Mot de passe:</label>
		<input type="password" name="pwd" id="pwd" />
	</p>
	<p class="double">
		<label for="pwd1">Mot de passe: (confirmation)</label>
		<input type="password" name="pwd1" id="pwd1" />
	</p>
      <input type="submit" name="envoie" id="envoie" value="Envoyer">
    </label>
  </form>
  <p><br>
    Tous les champs sont obligatoire !
    <br>
  </p>
<?php
// Récuparation des variables du formulaire afin de continuer l'inscription
// Les variables du formulaire
if(isset($_POST['inscription'])) {
$pseudo = $_POST['pseudo'];
$login = $_POST['login'];
$email = $_POST['email'];
$pwd = md5($_POST['pwd']);

if(isset($_POST['envoie'])) {
	echo '<pre>'; 
	print_r($_POST); 
	echo '</pre>'; 
	if(empty($_POST['pseudo'])) {
		print("<br>Vous devez choisir un pseudo!");
	}
	$sql = "SELECT pseudo FROM $tab WHERE pseudo='".$pseudo."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($pseudo($res!=0)) {
		print("<br>Ce pseudo est libre!");
		$sql = "INSERT INTO $tab VALUES('', '$pseudo')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
	}
	else {
		print("pseudo deja utiliser");
	}
	if(empty($_POST['login'])) {
		print("<br>Vous devez choisir un login!");
	}
	$sql = "SELECT login FROM $tab WHERE login='".$login."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($login($res!=0)) {
		prin_rt("<br>Ce login est déjà utilisé !");
		$sql = "INSERT INTO $tab (login) VALUES('', '$login')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		}
	else {
		print("Login utilisé!");
	}
	if(empty($_POST['email'])) {
		print("<br>Vous devez saisir une email!");
	}
	$sql = "SELECT email FROM $tab WHERE email='".$email."'";
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	$res= mysql_num_rows($req);
	if($email($res!=0)) {
		print("<br>Email libre!");
		$sql = "INSERT INTO $tab (email) VALUES('', '$email')";
		mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		}
	else {
		print("adresse deja utiliser!");
	}
	if(empty($_POST['pwd'])) {
		print("<br>Vous devez saisir un mot de passe!");
	if($pwd!=$pwd1) {
		print("<br>Les deux mot de passe de correspondent pas !");
		}
	}
// Si le formulaire est saisis correctement, on valide l'inscription et écriture dans la base de donnée !
$sql = "INSERT INTO $tab VALUES('', '$pseudo', '$login', '$email', '$pwd')";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
mysql_close($db);
	exit("Inscription r&eacute;siit !!!<br><a href=\"?dictory=login\">cliquez ici pour l'espace membre</a>");
}
}
?>
</center>

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 23:27

Ah, ça vient de là à priori:
if(isset($_POST['inscription'])) { 
essaye de mettre le bout de code (print_r etc...) au dessus de cette ligne...
(au premier affichage tu auras une erreur car $_POST n'est pas défini, mais après avoir validé le formulaire, tu verras ton erreur... ;)

Eléphant du PHP | 52 Messages

08 févr. 2009, 23:29

Ok j'ai mis :
	echo '<pre>'; 
	print_r($_POST); 
	echo '</pre>'; 
au dessus de la ligne :
if(isset($_POST['inscription'])) {
et j'obtien ceci :
Array
(
    [pseudo] => 
    [login] => 
    [email] => 
    [pwd] => 
    [pwd1] => 
    [envoie] => Envoyer
)

ViPHP
ViPHP | 3607 Messages

08 févr. 2009, 23:33

Et tu en déduis quoi?
Ton test sur $_POST['inscription'] il te parait pas à côté de la plaque? ;)

Eléphant du PHP | 52 Messages

08 févr. 2009, 23:39

Lool ouais ^^ Mais tu va voir pourquoi j'ai mis un if avant les variables.

A la place de :
if(isset($_POST['inscription'])) { 
$pseudo = $_POST['pseudo']; 
$login = $_POST['login']; 
$email = $_POST['email']; 
$pwd = md5($_POST['pwd']);  
j'ai mis ceci :
$pseudo = $_POST['pseudo']; 
$login = $_POST['login']; 
$email = $_POST['email']; 
$pwd = md5($_POST['pwd']); 
La balise if je l'ais enlevé mais j'ai ce message d'erreur :

Code : Tout sélectionner

Notice: Undefined index: pseudo in C:\wamp\www\inscription.php on line 106 Notice: Undefined index: login in C:\wamp\www\inscription.php on line 107 Notice: Undefined index: email in C:\wamp\www\inscription.php on line 108 Notice: Undefined index: pwd in C:\wamp\www\inscription.php on line 109
Et quand je saisis juste le pseudo ou autre j'obtien ceci comme erreur :
Fatal error: Call to undefined function dark() in C:\wamp\www\inscription.php on line 118
La ligne 118 :
if($pseudo($res!=0)) {
Donc voilà ;)

Eléphant du PHP | 52 Messages

09 févr. 2009, 13:46

(désolé pour se up avant 24H)

Je m'exprime, j'ai réussis à faire fonctionner les prints et il y a écriture dans la base mais les prints s'affiche au mauvais moment et quand je me connecte pour l'espace membre, je suis obligé de taper le mot de passe coder en md5 que je trouve dans la table avec phpmyadmin.

C'est un peu bizard, il doit avoir un conflit.

[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]