Formulaire PHP/My SQL [Résolu/Fermé]

Signaler
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
-
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
-
Bonjour,

Sur mon site se trouve un formulaire pour créer un compte sur un espace membre: il y a un champ "Pseudo", un "Mot de Passe" et enfin "Confirmer mot de passe". Le tout est relié à une bdd MySQL.
Cela marche à merveille mais j'aimerai ajouter un champ "e-mail" et une case à cocher si l'on veux recevoir la Newsletter. Comme j'ai utilisé un script tout prêt et que je débute en PHP, j'ai besoin de votre aide !!

Merci d'avance.

4 réponses

Messages postés
52
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
5 février 2012
1
Heuuu ..... ICI c'est fais pour poser des questions ... pas pour qu'on fasse le travail a votre place ! =)
Amicalement
Romi,
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
3
désolé mais en fait je voulais juste des "pistes" à explorer...
Messages postés
18503
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 janvier 2021
4 251
Ajoutes deux champs sur ta table :
    1. Un champ "email" en TINYTEXT
    2. Un champ "newsletters" en BOOLEAN

Ensuite, il te suffit d'ajouter deux champs sur ton formulaire, ce n'est rien d'autre que du XHTML :
<form method="cible.php" method="post">
<!-- ce que tu as déjà -->
  <p>
    <label for="email">Adresse email</label>
    <input type="text" name="email" id="email" />
  </p>
  <p>
    <label for="newsletters">Recevoir la newsletters</label> 
    <input type="checkbox" id="newsletters" name="newsletters" />
  </p>
<!-- la suite, avec le bouton d'envoye par ex. -->
</form>

Pour la partie PHP, il me faudrai le script.
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
3
Le php + le formulaire:
<?php
session_start();
require 'conf.php';

$erreur=0;

if(isset($_GET['action'],$_POST['passe_membre'],$_POST['confirm_mdp']) AND $_POST['passe_membre']===$_POST['confirm_mdp'])
{
	if(get_magic_quotes_gpc()===1)
	{
		$pseudo=$_POST['pseudo'];
		$passe=$_POST['passe_membre'];
	}
	else
	{
		$pseudo=addslashes($_POST['pseudo']);
		$passe=addslashes($_POST['passe_membre']);
	}

	if(!trim($pseudo) OR !trim($passe))
	{
		header('location:inscription.php');
		exit;
	}

	mysql_connect($mysql_host,$mysql_login,$mysql_passe) OR die('<p>Connexion impossible à la base de données. Réessayez plus tard.</p>');

	mysql_select_db($mysql_base) OR die('<p>sélection impossible</p>');
	$requete=mysql_query('SELECT COUNT(*) FROM membres WHERE pseudo="'.$pseudo.'"') OR die(mysql_error());

	$r=mysql_fetch_row($requete);

	if($r[0]!=='0')
	{
		mysql_close();
		$erreur=1;
	}
	else
	{
		mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'",md5("'.$passe.'"))') OR die(mysql_error());
		$_SESSION['login']=$pseudo;

		mysql_close();
		header('location:zonemembre.php');
		exit;
	}

}
	if($erreur===1)
	{
		echo '<p>Ce pseudo existe déjà. Veuillez en choisir un autre</p>';
	}
?>                  
                  <p class="DetailContainer"><span class="f">L'inscription est rapide et gratuite. Elle vous permet de bénéficier de multiples avantages.</span></p>
<hr />
<form method="post" action="inscription.php?action=ajout">
<p>
  <span class="f">
  <label for="log">Nom d'utilisateur (login) :</label>
  <input type="text" name="pseudo" size="20" id="log" />
  <br /><br />
Mot de passe :
<input type="password" name="passe_membre" size="20" id="mdp" />
  </span></p>
<p><span class="f">
  <label for="cmdp">Confirmez votre mot de passe :</label>
  <input type="password" name="confirm_mdp" size="20" id="cmdp" />
  </span><br /></p>
<p><input type="submit" class="f" value="Inscription" /></p>
</form>&nbsp;</p>
Messages postés
18503
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 janvier 2021
4 251
Remplace
	else
	{
		mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'",md5("'.$passe.'"))') OR die(mysql_error());
		$_SESSION['login']=$pseudo;

		mysql_close();
		header('location:zonemembre.php');
		exit;
	}

}
	if($erreur===1)
	{
		echo '<p>Ce pseudo existe déjà. Veuillez en choisir un autre</p>';
	}

Par
	else
	{
		if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i",$_POST['email'])) {
			if(isset($_POST['newsletters'])) { $newsletters = true; } else { $newsletters = false; }
			mysql_query('INSERT INTO membres VALUES("","'.$pseudo.'",md5("'.$passe.'"),"'.$_POST['email'].'",'.$newsletters.')') OR die(mysql_error());
			$_SESSION['login']=$pseudo;

			mysql_close();
			header('location:zonemembre.php');
			exit;
		} else {
			$erreur = 2;
		}
	}

}
	if($erreur===1)
	{
		echo '<p>Ce pseudo existe déjà. Veuillez en choisir un autre</p>';
	} elseif($erreur===2) {
		echo '<p>L\'adresse email entrée est invalide.</p>';
	}

Et n'oublie pas d'ajouter les champs à ton formulaire.
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
3
Merci beaucoup, le code marche assez bien mais quand on décoche la case "newsletters", il y a le message suivant: "
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
"
Messages postés
18503
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
27 janvier 2021
4 251
Essaye avec ça:
if(isset($_POST['newsletters'])) { $newsletters = 1; } else { $newsletters = 0; }
Si ça ne marche toujours pas, mets le champ SQL "newsletters" en TINYINT
Messages postés
49
Date d'inscription
lundi 29 juin 2009
Statut
Membre
Dernière intervention
18 décembre 2010
3
ça marche !! merci beaucoup !