Page 1 sur 1

fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 15:18
par Raphael
bonjours a vous, donc voila mon probleme je fait une page d'inscription pour enregistrer des clients sur un site pour un projet de cours, et le truc c'est que quand je clic su rle bouton , mon message de confirmation de fonctionne pas et rien n'es envoyer la BD.
voici le code
<?php
      $pdo = new PDO('mysql:dbname=b_carchan;host=localhost', 'root', '');
?>
<?php           
            
                if(!empty($_POST)){
                    $errors = array();  
            
                    //VERIFICATION nom
                    if(empty($_POST['nom']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['nom'])){
                        $errors['nom'] = "Votre nom n'est pas valide (alphanumérique)";
                    }
                    else{
                        $req = $pdo->prepare('SELECT * FROM t_client WHERE nom = ?');
                        $req->execute([$_POST['nom']]);
                        $user = $req->fetch();
                    
                        if($user){
                            $errors['nom'] = 'Ce nom est déjà pris';
                        }
                    }   
                    
                    //VERIFICATION email
                    if(empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
                        $errors['email'] = "Votre email n'est psa valide";
                    }
                    else{
                        $req = $pdo->prepare('SELECT * FROM t_client WHERE email = ?');
                        $req->execute([$_POST['email']]);
                        $user = $req->fetch();
                        
                        if($user){
                            $errors['email'] = 'Cet email est déjà utilisé pour un autre compte';
                        }
                    }
                    
                    //VERIFIACTION MOT DE PASSE
                    if(empty($_POST['mdp']) || $_POST['mdp'] != $_POST['password_confirm']){
                        $errors['mdp'] = "Vous devez rentrer un mot de passe valide";
                    }   

                        // VERIFICATION TEL
                   if(empty($_POST['tel']) || !preg_match('/^[0-9]+$/', $_POST['tel'])){
                        $errors['tel'] = "Votre tel n'est pas valide (alphanumérique)";
                    }
                    else{
                        $req = $pdo->prepare('SELECT * FROM t_client WHERE tel = ?');
                        $req->execute([$_POST['tel']]);
                        $user = $req->fetch();
                    
                        if($user){
                            $errors['tel'] = 'Ce tel est déjà pris';
                        }
                    }
                    
                    if(empty($errors)){                 
                    $req = $pdo->prepare("INSERT INTO t_client SET  civilite = ?, nom_cli = ?, prenom_cli = ?, telephone = ?, email = ?, mdp = ?, type_cb = ?, num_cb = ?, date_expire = ?, crypto = ?");
                    $password = password_hash($_POST['mdp'], PASSWORD_BCRYPT);                 
                    $req->execute([$_POST['civilite'], $_POST['nom_cli'], $_POST['prenom_cli'], $_POST['telephone'],$_POST['email'],$password,$_POST['type_cb'],$_POST['num_cb'],$_POST['date_expire'],$_POST['crypto'] ]);
                    die ("Le compte a bien été crée");
                    }
                    
                    
                }                       


?>
<html>
  
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"
    rel="stylesheet" type="text/css">
    <link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css"
    rel="stylesheet" type="text/css">
    <link href="https://bootswatch.com/yeti/bootstrap.min.css" rel="stylesheet"
    type="text/css">
  </head>
  
  <body>
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <form class="form-horizontal" role="form">
              <div >
                <div class="col-sm-2">
                  <label for="inputEmail3" class="control-label">Civilité</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" id="inputEmail3" placeholder="Civilité" name="civilite">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label for="inputPassword3" class="control-label">Nom</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" id="inputPassword3" placeholder="Nom" name="nom_cli">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Prénom</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Prénom" name="prenom_cli">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Tél</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Tél" name="telephone">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Email</label>
                </div>
                <div class="col-sm-10">
                  <input type="email" class="form-control" placeholder="[email protected]" name="email">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Mot de passe</label>
                </div>
                <div class="col-sm-10">
                  <input type="password" class="form-control" placeholder="Mot de passe" name="mdp">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Confirmation</label>
                </div>
                <div class="col-sm-10">
                  <input type="password" class="form-control" placeholder="Confirmation mot de passe" name="password_confirm">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Identification bancaire</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Visa / Master / American Express" name="type_cb">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Numéros de carte</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="1234567891234567" name="num_cb">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Date d'expiraion</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="05-1996" name="date_expire">
                </div>
              </div>
              <div >
                <div class="col-sm-2">
                  <label class="control-label">Cryptograme</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="012345" name="crypto">
                </div>
              </div>
              <button type="submit" class="btn btn-primary">Valdier</button>
            </form>
          </div>
        </div>
      </div>
    </div>
  </body>

</html>

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 15:33
par Ryle
Bonjour,

Si tu ne précises pas la méthode d'envoi des données de ton formulaire (attribut method=""), celles-ci sont envoyées en GET par défaut, tu ne récupéreras donc rien dans $_POST ;)

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 15:54
par Raphael
la modification a été effectue mais je n'ais toujours rien qui viens dans la bd :/

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 16:15
par Ryle
Il faut avancer pas à pas... tu n'as rien en base, mais as-tu le message "Le compte a bien été crée" a l'écran ? si oui le problème vient de la requête, sinon c'est que php n'arrive pas jusqu'à cette portion de code.

Vérifies le retour de l'exécution de la requête... en cas d'erreur, affiche le message ... (perso j'ai plus l'habitude d'utiliser la syntaxe "INSERT INTO .. VALUES" que "INSERT INTO ... SET ...". Normalement MySQL accepte cette syntaxe, mais le problème peut également venir de là)

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 16:28
par Raphael
je pense que vous avez raisons , ma requête ne doit pas être bonne, du tout. je viens de faire quelque teste et j'utilise pdo avec mysql, j'ai plusieurs petit bug, auriez vous une portion de code dont je pourrez m'inspirer ? je débute vraiment en php et je ne trouve pas de tuto myslq php pour les formulaire comme je fait . merci encore

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 16:40
par Maitrepylos
@Ryle à raison il y a une erreur dans le requête cela devrais être ceci :

Code : Tout sélectionner

$req = $pdo->prepare("INSERT INTO t_client (civilite, nom_cli , prenom_cli, telephone, email , mdp , type_cb , num_cb , date_expire , crypto ) VALUES (?,?,?,?,?,?,?,?,?,?)");

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 17:12
par Raphael
bon voila j'ai fait des changement pour faire plus claire et avec mysql mais quand je clic sur le bouton valider le formualire ce vide et ça me dit que les champ sont vide
voila le nouveau code
<?php

    $connect=mysql_connect("localhost","root","") or die("erreur de connexion");
    mysql_select_db("b_carchan",$connect);
    mysql_set_charset('utf8',$connect);
?>
<?php 
// On commence par récupérer les champs 
 
if(isset($_POST['civilite']))      $civilite=$_POST['civilite'];
else      $civilite="";


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

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

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

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


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

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

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

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

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

// On vérifie si les champs sont vides 
if(empty($civilite) OR empty($nom_cli) OR empty($prenom_cli) OR empty($email) OR empty($telephone) OR empty($mdp) OR empty($type_cb) OR empty($num_cb) OR empty($date_expire) OR empty($crypto)  ) 
   { 
    echo '<font color="red">Attention, les chanmp sont vide'; 
    } 

// Aucun champ n'est vide, on peut enregistrer dans la table 
else      
    { 
       // connexion à la base
$connect=mysql_connect("localhost","root","") or die("erreur de connexion");
// sélection de la base  

    mysql_select_db("b_carchan",$connect);
     
    // on écrit la requête sql 
    $sql = "INSERT INTO t_client ( civilite , nom_cli , prenom_cli , telephone , email , mdp , type_cb , num_cb , date_expire , crypto )                
                    VALUES('$civilite', '$nom_cli', '$prenom_cli', '$telephone','$email','$mdp','$type_cb','$num_cb','$date_expire','$crypto' )"; 
     
    // on insère les informations du formulaire dans la table 
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 

    // on affiche le résultat pour le visiteur 
    echo 'Vos infos on été ajoutées.'; 

    mysql_close();  // on ferme la connexion 
    }  
?>
<html>
  
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
    <script type="text/javascript" src="http://netdna.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <link href="http://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.min.css"
    rel="stylesheet" type="text/css">
    <link href="http://pingendo.github.io/pingendo-bootstrap/themes/default/bootstrap.css"
    rel="stylesheet" type="text/css">
    <link href="https://bootswatch.com/yeti/bootstrap.min.css" rel="stylesheet"
    type="text/css">
  </head>
  
  <body>
    <div class="section">
      <div class="container">
        <div class="row">
          <div class="col-md-12">
            <form class="form-horizontal" role="form">
              <div class="form-group">
                <div class="col-sm-2">
                  <label for="inputEmail3" class="control-label">Civilité</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" id="inputEmail3" placeholder="Civilité" name="civilite">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label for="inputPassword3" class="control-label">Nom</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" id="inputPassword3" placeholder="Nom" name="nom_cli">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Prénom</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Prénom" name="prenom_cli">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Tél</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Tél" name="telephone">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Email</label>
                </div>
                <div class="col-sm-10">
                  <input type="email" class="form-control" placeholder="[email protected]" name="email">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Mot de passe</label>
                </div>
                <div class="col-sm-10">
                  <input type="password" class="form-control" placeholder="Mot de passe" name="mdp">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Confirmation</label>
                </div>
                <div class="col-sm-10">
                  <input type="password" class="form-control" placeholder="Confirmation mot de passe" name="password_confirm">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Identification bancaire</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="Visa / Master / American Express" name="type_cb">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Numéros de carte</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="1234567891234567" name="num_cb">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Date d'expiraion</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="05-1996" name="date_expire">
                </div>
              </div>
              <div class="form-group">
                <div class="col-sm-2">
                  <label class="control-label">Cryptograme</label>
                </div>
                <div class="col-sm-10">
                  <input type="text" class="form-control" placeholder="012345" name="crypto">
                </div>
              </div>
              <button type="submit" class="btn btn-primary">Valdier</button>
            </form>
          </div>
        </div>
      </div>
    </div>
  </body>

</html>

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 17:33
par Maitrepylos
Bon alors, ton premier code est mieux que celui que tu nous présente ici, surtout que tu utilise des fonctions mysql_ qui sont déprécié et supprimé en PHP7.

Par contre en regardant ton dernier code, tu ne tiens pas compte des remarques de @Ryle, qui me semble à été clair :

Code : Tout sélectionner

<form class="form-horizontal" role="form">
Cette ligne est imcomplète, il manque l'action et la méthode, cela doit ressembler à ceci :

Code : Tout sélectionner

<form action="MonFichier.php" method="post">

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 17:49
par Raphael
haaa voila , tout a été envoyer , il me manquer juste method="POST", ça fonctionne enfin , il ne me faut juste que modifier certaine ligne pour avoir une confirmation de password

merci a vous !

Re: fiche inscription n'envois rien a la bd ???

Posté : 17 mars 2016, 17:51
par Maitrepylos
Oui et je conseille de reprendre le code avec le PDO