Formulaire PHP/My SQL

Résolu
94uaehd Messages postés 51 Statut Membre -  
94uaehd Messages postés 51 Statut Membre -
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.
Configuration: Windows XP
Safari 530.19.1

4 réponses

  1. romi36 Messages postés 57 Statut Membre 2
     
    Heuuu ..... ICI c'est fais pour poser des questions ... pas pour qu'on fasse le travail a votre place ! =)
    Amicalement
    Romi,
    0
    1. 94uaehd Messages postés 51 Statut Membre 3
       
      désolé mais en fait je voulais juste des "pistes" à explorer...
      0
  2. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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.
    0
    1. 94uaehd Messages postés 51 Statut Membre 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>
      0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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.
    0
    1. 94uaehd Messages postés 51 Statut Membre 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
      "
      0
  4. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    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
    0
    1. 94uaehd Messages postés 51 Statut Membre 3
       
      ça marche !! merci beaucoup !
      0