Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème ajout dans base de donnée

Sujet résolu
Anonyme
    25 avril 2017 à 20:37:31

    Bonjour, 
    Suite à un projet web à réaliser pour mes études je dois réaliser un site internet.
    J'ai crée une page qui à pour but  d'envoyer des donnée dans une table mysql via un formulaire. 
    Quand j'appuie sur le bouton je n'ai pas d'erreur mais je n'ai rien nom plus dans ma table. Quelqu'un peut m'aider car je suis un peu perdu.

    Voici le code de la page:

    <?php require './config.php';; ?>
    <!DOCTYPE html>
    <html lang="fr">
       <?php include('include/head.php'); ?>
    <?php
    session_start();
    
    if(!isset($_SESSION['username'])){
    header("Location: login.php");
    }
    ?>
      <body>
    
      <section id="container" >
          <?php include('include/header.php'); ?>
          
          <?php 
    	 if($_SESSION['type'] == "admin"){
    	  include('include/aside-admn.php'); 
    	  }elseif ($_SESSION['type'] == "user"){
    	  header("Location: profile.php");
    	  }
    	  ?>
          
    	<style>
    
    .fileUpload {
    	position: relative;
    	overflow: hidden;
    	margin: 0px;
    }
    .btn-info {
    color: #fff;
    background-color: #5bc0de;
    border-color: #46b8da;
    }
    .fileUpload input.upload {
    	position: absolute;
    	top: 0;
    	right: 0;
    	margin: 0;
    	padding: 0;
    	font-size: 20px;
    	cursor: pointer;
    	opacity: 0;
    	filter: alpha(opacity=0);
    }
    				</style>
          <section id="main-content">
              <section class="wrapper site-min-height">
              	
    			
    		<div class="row">
    		<div class="col-lg-9 main-chart">
    						<div class="col-lg-6 col-md-6 col-sm-12">
    
          				<div class="showback">
    					<?php
    
    if(empty($_POST) === false){
    	include('validation.php');
    
    
    if(!$err && !$rr2){
    
    $nomentreprise = trim($_POST['nomentreprise']);
    $nomgerant = trim($_POST['nomgerant']);
    $prenomgerant = trim($_POST['prenomgerant']);
    $numerovoie = trim($_POST['numerovoie']);
    $complementnumerovoie = trim($_POST['complementnumerovoie']);
    $nomrue = trim($_POST['nomrue']);
    $codepostal = trim($_POST['codepostal']);
    $ville = trim($_POST['ville']);
    $pays = trim($_POST['pays']);
    $tel1 = trim($_POST['tel1']);
    $tel2 = trim($_POST['tel2']);
    $tel3 = trim($_POST['tel3']);
    $fax = trim($_POST['fax']);
    $email = trim($_POST['email']);
    $statut = trim($_POST['statut']);
    $dateappel = trim($_POST['dateappel']);
    $daterappel = trim($_POST['daterappel']);
    $precisionrappel = trim($_POST['precisionrappel']);
    $commentaires = trim($_POST['commentaires']);
    
    $sql = "INSERT INTO `prospect` (nomentreprise, nomgerant, prenomgerant, numerovoie, complementnumerovoie, nomrue, codepostal, ville, pays, tel1, tel2, tel3, fax, email, statut, dateappel, daterappel, precisionrappel, commentaires) VALUES (:nomentreprise, :nomgerant, :prenomgerant, :numerovoie, :complementnumerovoie, :nomrue, :codepostal, :ville, :pays, :tel1, :tel2, :tel3, :fax, :email, :statut, :dateappel, :daterappel, :precisionrappel, :commentaires)";
     try {
          $stmt = $DB->prepare($sql);
    $stmt->bindValue(':nomentreprise', $nomentreprise);
    $stmt->bindValue(':nomgerant', $nomgerant);
    $stmt->bindValue(':prenomgerant', $prenomgerant);
    $stmt->bindValue(':numerovoie', $numerovoie);
    $stmt->bindValue(':complementnumerovoie', $complementnumerovoie);
    $stmt->bindValue(':nomrue', $nomrue);
    $stmt->bindValue(':codepostal', $codepostal);
    $stmt->bindValue(':ville', $ville);
    $stmt->bindValue(':pays', $pays);
    $stmt->bindValue(':tel1', $tel1);
    $stmt->bindValue(':tel2', $tel2);
    $stmt->bindValue(':tel3', $tel3);
    $stmt->bindValue(':fax', $fax);
    $stmt->bindValue(':email', $email);
    $stmt->bindValue(':statut', $statut);
    $stmt->bindValue(':dateappel', $dateappel);
    $stmt->bindValue(':daterappel', $daterappel);
    $stmt->bindValue(':precisionrappel', $precisionrappel);
    $stmt->bindValue(':commentaires', $commentaires);
    
          $stmt->execute();
          $result = $stmt->rowCount();
          if ($result > 0) {
    
    
    	$succes = "Inscription validée";
            }else {
    
    		$alert = "bad";
    		}
    		}
    		catch (Exception $ex) {
    
         echo $ex->getMessage();
        }
    }
    }
    
    ?>
    					
          					<h4><i class="fa fa-angle-right"></i> Information du contact</h4>
    						<form action="" class="form-horizontal style-form" method="post" enctype="multipart/form-data" data-validate="parsley" id="validate-form">
    		        <div class="login-wrap">
    				<?php if($succes){ ?>
    				
    				<div class="alert alert-success"><b>Félicitation!</b> Profil ajouté  <a class="" href="users.php">
    		                    Gestion des utilisateurs
    		                </a></div>
    				<?php } ?>
    		            <input name="nomentreprise" type="text" class="form-control" placeholder="Nom de l'entreprise" required="required" autofocus>
    		            <br>
    					<input name="nomgerant" type="text" class="form-control" placeholder="Nom du gérant" autofocus>
    		            <br>
    					<?php if($err[1]){ ?>
    				
    				<div class="alert alert-danger"><b>OOOps!</b> Utilisateur déjà enregistré</div>
    				<?php } ?>
    					<input name="prenomgerant" type="text" class="form-control" placeholder="Prénom du gérant" data-type="alphanum" autofocus>
    		            <br>
    					<input name="numerovoie" type="text" class="form-control" placeholder="Numéro de voie" data-type="alphanum" autofocus>
    		            <br>
    					<input name="complementnumerovoie" type="text" class="form-control" placeholder="Complément d'adresse'" data-type="alphanum" autofocus>
    		            <br>
    
    					<input name="nomrue" type="text" class="form-control" placeholder="Nom de la rue" data-type="alphanum" autofocus>
    		            <br>
    					<input name="codepostal" type="text" class="form-control" placeholder="Code Postal" data-type="alphanum" autofocus>
    		            <br>
    					<input name="ville" type="text" class="form-control" placeholder="Ville" data-type="alphanum" autofocus>
    		            <br>
    					<input name="pays" type="text" class="form-control" placeholder="Pays" data-type="alphanum" autofocus>
    		            <br>
    					<input name="tel1" type="text" class="form-control" placeholder="Numéro de téléphone 1" data-type="alphanum" autofocus>
    		            <br>
    					<input name="tel2" type="text" class="form-control" placeholder="Numéro de téléphone 2" data-type="alphanum" autofocus>
    		            <br>
    					<input name="tel3" type="text" class="form-control" placeholder="Numéro de téléphone 3" data-type="alphanum" autofocus>
    		            <br>
    					<input name="fax" type="text" class="form-control" placeholder="Fax" data-type="alphanum" autofocus>
    		            <br>
    					<input name="email" type="email" class="form-control" placeholder="Email" data-type="alphanum" autofocus>
    		            <br>
    					<select name="statut" class="form-control" type="text" placeholder="Statut" autofocus>
    						<option></option>
      						<option>Non appelé</option>
      						<option>Appelé</option>
      						<option>A rappeler</option>
    						<option>Client</option>
    					</select>
    					</br>
    					<input name="dateappel" type="date" class="form-control" placeholder="Date du dernier appel" autofocus>
    		            <br>
    					<input name="daterappel" type="date" class="form-control" placeholder="Date du prochain rappel" autofocus>
    		            <br>
    					<input name="precisionrappel" type="textarea" class="form-control" placeholder="Précision date rappel" data-type="alphanum" autofocus>
    		            <br>
    					<input name="commentaires" type="text" class="form-control" placeholder="Commentaires" data-type="alphanum" autofocus>
    		            <br>
    <?php if($rr2){ ?>
    				
    				<div class="alert alert-danger"><b>OOOps!</b> Une erreur est survenue!</div>
    				<?php } ?>
    </div>
    <hr>
    		            
    
    		            <button class="btn btn-theme btn-block" type="submit" onclick="javascript:$('#validate-form').parsley( 'validate' );"><i class="fa"></i>Ajouter l'utilisateur</button>
    		             </div>
    					 </form>
    						
          				</div>
          			
          			</div>
    				</div>
    				
    				  </div>
    			
    		</section><! --/wrapper -->
          </section>
    
     <?php include('include/footer.php'); ?>
      </section>
      
    
     <?php include('include/foot-scripts.php'); ?>
    
    
    		
      </body>
    </html>
    
    Merci à tous :) 
    • Partager sur Facebook
    • Partager sur Twitter
      25 avril 2017 à 21:05:37

      Bonjour, 

      Tes header ligne 9 et 21 ne fonctionneront pas, à cause du DOCTYPE ligne 2

      Ligne 60, tu peu remplacer par  if(!empty($_POST)){

      Je ne vois pas la connexion à la bdd c'est peut-être pour ça que tu n'enregistre rien. 

      • Partager sur Facebook
      • Partager sur Twitter
      pensez au "+1" si ça vous a aider, ça fait toujours plaisir ;)
      Anonyme
        25 avril 2017 à 21:14:16

        Merci pour cette réponse je vais tester cela de suite.
        La connexion à la BDD est fait dans un autre fichier php qui est dans un include :)

        EDIT: J'ai essayé mais cela ne change rien et j'ai vérifié mais la connexion à la base de donnée est bien faite :)

        -
        Edité par Anonyme 25 avril 2017 à 21:27:59

        • Partager sur Facebook
        • Partager sur Twitter
          25 avril 2017 à 23:22:16

          Tu n'as pas d'erreur(PDO) il faut les activer peut être ?!
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            26 avril 2017 à 23:50:56

            Question bête mais comment on les actives? :/
            Je posterai le résultat :)
            • Partager sur Facebook
            • Partager sur Twitter
              27 avril 2017 à 0:52:55

              Bah regardes le lien que je t'ai envoyé !

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                27 avril 2017 à 14:50:02

                Oh désolé je n'avais pas vu. J'ai bien utilisé ta technique mais cela ne retourne aucune erreur.
                Je perd la tête car je suis sur que c'est une erreur toute bête :/
                • Partager sur Facebook
                • Partager sur Twitter
                  27 avril 2017 à 15:02:33

                  je suis désolé d'insister mais peux-tu nous montrer la partie connexion a la bdd ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                  pensez au "+1" si ça vous a aider, ça fait toujours plaisir ;)
                  Anonyme
                    29 avril 2017 à 16:04:51

                    D'accord voici le fichier config.php:

                    <?php
                    error_reporting( E_ALL & ~E_DEPRECATED & ~E_NOTICE );
                    ob_start();
                    session_start();
                    
                    include('conn.php');
                    
                    $dboptions = array(
                                  PDO::ATTR_PERSISTENT => FALSE, 
                                  PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 
                                  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                                  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
                                );
                    
                    try {
                      $DB = new PDO(DB_DRIVER.':host='.DB_SERVER.';dbname='.DB_DATABASE, DB_SERVER_USERNAME, DB_SERVER_PASSWORD , $dboptions);  
                    } catch (Exception $ex) {
                      echo $ex->getMessage();
                      die;
                    }
                    
                    
                    ?>


                    Et le fichier conn.php:

                    <?php
                    
                    define('DB_DRIVER', 'mysql');
                    define('DB_SERVER', 'localhost');
                    define('DB_SERVER_USERNAME', 'root');
                    define('DB_SERVER_PASSWORD', 'root');
                    define('DB_DATABASE', 'projetweb');
                    
                    
                    ?>

                    Normalement cela est bon, non ? :)

                    EDIT:

                    Je pense avoir trouvé le problème (je me suis aidé d'un script de formulaire déjà existant) et je pense que c'est le fichier validation.php qui pose problème.
                    Validation.php:

                    <?php
                    
                    
                    if(strlen($_POST['username']) < 3){
                    		$err[0] = "short username" ;
                    	}else{
                    	/*
                    	$DD = new Database;
                    $username = $_POST['username'];
                    $DD->query("SELECT * FROM members WHERE `username` = '$username'");
                    
                    $row = $DD->resultset();
                    foreach ($row as $res) {
                    $session = $res->username;
                    }
                    */
                    try {
                       $sql = "SELECT * FROM members WHERE `username` = '$username'";
                       $stmt = $DB->prepare($sql);
                       
                       $stmt->execute();
                       $results = $stmt->fetchAll();
                    } catch (Exception $ex) {
                      echo $ex->getMessage();
                    } 	  
                    	$session = $results[0]['username'];
                    	if($session == $_POST['username']){ $err[1] = "username exist" ;}
                    	}
                    		if(strlen($_POST['password']) < 3){
                    		$err[2] = 'password short.';
                    	}
                    	if($_POST['password'] != $_POST['password2']){
                    		$err[3] = 'passwords not the same.';
                    	}
                    	$email = $_POST['email'];
                    
                    if(!filter_var($email, FILTER_VALIDATE_EMAIL))
                      {
                     $err[4] = "E-mail is not valid";
                      }
                      if(strlen($_POST['firstname']) < 3){
                    					  $err[5] = "short firstname" ;
                    					  }
                     if(strlen($_POST['lastname']) < 3){
                    					  $err[6] = "short lastname" ;
                    					  }
                    
                    ?>

                    Maintenant le problème c'est de savoir comment régler cela :/
                    Si quelqu'un aurait une piste :)

                    -
                    Edité par Anonyme 29 avril 2017 à 17:25:46

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      1 mai 2017 à 14:23:38

                      Personne n'aurait une idée? :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        2 mai 2017 à 16:17:06

                        Up? Désolé je sais que cela pollue le post mais je ne trouve vraiment pas :/
                        • Partager sur Facebook
                        • Partager sur Twitter
                          2 mai 2017 à 16:34:41

                          Salut,

                          si déjà ton fichier était hiérarchisé sur les tests ce serait pas mal ^^

                          Fais tous les tests de tes entrées avant de faire un appel à la base.

                          Imbrique les tests, car si un est faux, alors pas la peine d'aller plus loin.

                          ++

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Anonyme
                            2 mai 2017 à 19:01:37

                            D'accord j'essaierai je tiendrais au courant mais d'après se que j'ai compris si une valeur est pas bonne cela bloque tout le formulaire ?
                            • Partager sur Facebook
                            • Partager sur Twitter
                              3 mai 2017 à 9:38:55

                              bah il est normal de ne pas continuer si tu as une erreur sur un des input, pas la peine de continuer si une des valeurs est foireuse. Dans un premier temps il faut tout retaper, mais tu peux aussi passer sur une session qui garde les informations.

                              ++

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Anonyme
                                3 mai 2017 à 16:14:28

                                Je dois être vraiment bête j'ai essayé de tout tester et j'arrive toujours pas à résoudre. 
                                Cela viendrait peut-être de la bdd?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  3 mai 2017 à 16:32:01

                                  mouais...

                                  <?php
                                      //1) si le form est envoyé
                                      if (!empty($_POST)) {
                                      	if(strlen($_POST['username']) >= 3){
                                      		if(strlen($_POST['password']) >= 3) {
                                      			if(strlen($_POST['password2']) >= 3) {
                                      				if ($_POST['password'] == $_POST['password2']) {
                                      					if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                      						//firstname et lastname tu ne peux pas donner de nombre min / max de lettre
                                      						try {
                                      							//recherche
                                      							$sql = "SELECT count(*) as nbUser FROM members WHERE `username` = :username";
                                      							$stmt = $DB->prepare($sql);
                                      							$stmt->bindValue('username',$_POST['username']);
                                      							if (!$stmt->execute()) {
                                      								echo 'ERREUR execute recherche';
                                      							} else {
                                      								$results = $stmt->fetchAll();
                                      								if ($results[0]['nbUser'] > 0) {
                                      									echo 'username existe';
                                      								}
                                      							}    							
                                      						} catch (Exception $ex) {
                                      							echo $ex->getMessage();
                                      						}
                                      					}  else {
                                  				    		//erreur
                                  				    		echo 'E-mail is not valid';
                                  				    	}
                                      				} else {
                                  			    		//erreur
                                  			    		echo 'password et password2 differents';
                                  			    	}
                                      			} else {
                                  		    		//erreur
                                  		    		echo 'password2 trop court (< 3 car)';
                                  		    	}
                                      		} else {
                                  	    		//erreur
                                  	    		echo 'password trop court (< 3 car)';
                                  	    	}
                                      	} else {
                                      		//erreur
                                      		echo 'username trop court (< 3 car)';
                                      	}
                                      } 
                                  ?>

                                  étudie ceci, teste le

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    3 mai 2017 à 16:53:13

                                    D'accord merci je vais essayer :)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      3 mai 2017 à 17:15:53

                                      Bonjour,

                                      Ta base de données est a revoir mais ca c'est un sujet a par de ton soucis actuel

                                      Suis la code de christouphe pour les validations mais i faudra adapter ton code et son code

                                      Ton soucis d'origine provient de cette ligne

                                      if(!$err && !$rr2){

                                      La ou il faudra adapter le code de christouphe c'est qu'il faudra remplacer les echos pour le replacer par un tableau d'erreur. Et par rapport a ton code que tu avais avant ton validation php te donné un tableau d'erreur je ne sais pas d'ou tu sort $rr2.

                                      Enfin bref voici ce que ca devrais donner

                                      <?php 
                                      if(empty($erreurs){
                                          //ton insert
                                      }else{
                                         foreach($erreurs as $key =>$erreur){
                                             echo $erreur.'<br />';
                                         }
                                      }


                                      NB : on peut trés bien garder les echos dans validation et avoir juste une variable $erreur initialisé a false et que tu passes a true si une condition du test de validation n'est pas bonne mais l'avantage du tableau c'est que tu peux afficher l'erreur juste a coté du champ input concerné

                                      NOM : <input type="text" name="nom" />
                                      <?php echo (isset($erreur['nom'])? $erreur['nom'] : ''; ?>
                                      <br />
                                      PRENOM : <input type="text" name="prenom" />
                                      <?php echo (isset($erreur['prenom'])? $erreur['prenom'] : ''; ?>
                                      etc....



                                      -
                                      Edité par kets14 3 mai 2017 à 17:19:02

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      "Il est hélas devenu évident aujourd’hui que notre technologie a dépassé notre humanité"  A.E.
                                      Anonyme
                                        4 mai 2017 à 19:54:07

                                        Merci pour cette réponse, je ne suis pas sur le pc ou il y a le serveur je regarderai dès que je le pourrai, merci beaucoup.

                                        Mais j'y pense cela ne serai pas plus simple si je ne passait pas par Validation.php? Car il me servait pour l'inscription des membres mais je pense ne pas en avoir besoin pour ce formulaire. 

                                        En tout cas merci tout le monde du coup de main :)  

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          9 mai 2017 à 20:27:52

                                          Bonne nouvelle j'ai enfin réussi c'est bien le

                                          if(!$err && !$rr2){


                                          C'était un problème avec un fichier extérieur Merci du coup de main :) 

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Problème ajout dans base de donnée

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown