Bonjour à tous

mon formulaire ne fonctionne pas comme prévu
en effet en cliquant sur le bouton envoyer "submit" Smiley lol les données s'enregistre sans que les champs soient remplies j'ai beau chercher mais je ne trouve pas d'ou peut venir le problème.

<?php

//--------------------------------------------------------//
  //Connection a la base de donnée 
  define('DB_HOST', 'localhost'); 
  define('DB_NAME', 'le_sheiny'); 
  define('DB_USER','root'); 
  define('DB_PASSWORD',''); 
  $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); 
  $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); 

//inserting Record to the database 

  $civilite = $_POST['civilite'];
  $name = $_POST['name'];
  $prename = $_POST['prename'];
  $email = $_POST['email'];
  $adresse = $_POST['adresse'];
  $cp = $_POST['cp'];
  $ville = $_POST['ville'];
  $tele = $_POST['tele'];
  $message = $_POST['message'];
//--------------------------------------------------------//

  mysql_query("INSERT INTO form_inscription(id, civilite, nom, prenom, email, adresse, cp, ville, tel, message)
      VALUES('','$civilite','$name','$prename','$email','$adresse','$cp','$ville','$tele','$message')") or die(mysql_error()); 
 

    //---------------------------------------------------------//


// Adresse de réception des messages
$to = 'mon adresse';
//=====Création de la boundary
$boundary = "-----=".md5(rand());
// Sujet du message
$entetedate  = date("D, j M Y H:i:s -0600"); // Offset horaire
// Sujet du message
$subject = 'Formulaire de contact';
// Message Titre lors d'une erreur de saisie
$errormessage = 'Merci de renseigner les informations suivantes';
// Message lors d'un envoi réussi
$thanks = "Merci pour votre message<br />Une réponse dans les meilleurs délais vous sera apportée.";
// Message lors d'un message frauduleux (piège à Bot)
$honeypot = "Message frauduleux.";
// Messages lors de champs vides
$emptycivilite =  'Votre Civilité';
$emptyname =  'Votre Nom';
$emptyprename =  'Votre Prénom';
$emptyemail = 'Votre adresse E-mail';
$emptytele = 'Votre numero de téléphone';
$emptymessage = 'Votre message';
$emptyadresse = 'Votre adresse';
$emptycp = 'Votre code postal';
$emptyville = 'Votre ville';
// Messages lors d'une erreur de saisie
$alertcivilite =  'Merci de bien renseigner votre civilité';
$alertname =  'Merci de bien renseigner votre Nom avec des caractères standard';
$alertprename =  'Merci de bien renseigner votre Prénom avec des caractères standard';
$alertemail = 'Merci de renseigner votre adresse E-mail dans ce format: <i>nom@exemple.com</i>';
$alerttele = 'Merci de bien renseigner votre Numero de telephone dans ce format: <i>01 23 45 67 89</i>';
$alertmessage = "Votre message semble comporter des caracteres speciaux, qui sont courant dans les adresses Web, merci de verifier.";
$alertadresse =  'Merci de bien renseigner votre adresse';
$alertcp =  'Merci de bien renseigner votre code postal';
$alertville =  'Merci de bien renseigner votre ville';


// Variable contenant les messages d'alertes
$alert = '';
// Variable vérifiant si une erreur se produit lors de la vérification avant l'envoi du message
// Elle passe a 1 si une erreur se produit
$pass = 0;

// Fonction qui vérifie si le numéro comporte bien 10 chiffres
function validerNumero($tel) {
    //Retourne true s'il est valide, sinon false.
    return preg_match('`^0[1-68]([-. ]?[0-9]{2}){4}$`', $tel) ? true : false;
}

// Fonction qui vérifie si le CP comporte bien 5 chiffres
function validercp($cp) {
    //Retourne true s'il est valide, sinon false.
    return preg_match('#^[0-9]{5}$#', $cp) ? true : false;
}

// Fonction de nettoyage des variables pour des raisons de sécurités
function clean_var($variable) {
    $variable = strip_tags(stripslashes(trim(rtrim($variable))));
    return $variable;
}

// Piège à Bot
if ( empty($_POST['last']) ) {

    // Vérification des variables
	
	// Civilité
    if ( empty($civilite) ) {
      $pass = 1;
      $alert .= "<li>" . $emptymessage . "</li>";
    }
    // Le Nom
    if ( empty($name) ) {
      $pass = 1;
      $alert .= "<li>" . $emptyname . "</li>";
    } elseif ( preg_match( "/[][{}()*+?.\\^$|]/", $name ) ) {
      $pass = 1;
      $alert .= "<li>" . $alertname . "</li>";
    }
    // Le Prénom
    if ( empty($prename) ) {
      $pass = 1;
      $alert .= "<li>" . $emptyprename . "</li>";
    } elseif ( preg_match( "/[][{}()*+?.\\^$|]/", $prename ) ) {
      $pass = 1;
      $alert .= "<li>" . $alertprename . "</li>";
    }
    // Le mail
    if ( empty($mail) ) {
      $pass = 1;
      $alert .= "<li>" . $emptyemail . "</li>";
    } elseif ( !filter_var($email, FILTER_VALIDATE_EMAIL) ) {
      $pass = 1;
      $alert .= "<li>" . $alertemail . "</li>";
    }
    // L' adresse
    if ( empty($adresse) ) {
      $pass = 1;
      $alert .= "<li>" . $emptyadresse . "</li>";
    } elseif ( preg_match( "/[][{}()*+?.\\^$|]/", $adresse ) ) {
      $pass = 1;
      $alert .= "<li>" . $alertadresse . "</li>";
    }
    // Le code postal
    if ( empty($cp) ) {
      $pass = 1;
      $alert .= "<li>" . $emptycp . "</li>";
    } elseif (!validercp($cp) ) {
      $pass = 1;
      $alert .= "<li>" . $alertcp . "</li>";
    }
    // La ville
    if ( empty($ville) ) {
      $pass = 1;
      $alert .= "<li>" . $emptyville . "</li>";
    } elseif ( preg_match( "/[][{}()*+?.\\^$|]/", $ville ) ) {
      $pass = 1;
      $alert .= "<li>" . $alertville . "</li>";
    }
    // Le téléphone
    if ( empty($tele) ) {
      $pass = 1;
      $alert .= "<li>" . $emptytele . "</li>";
    } elseif (!validerNumero($tele) ) {
      $pass = 1;
      $alert .= "<li>" . $alerttele . "</li>";
    }
    // Le message
    if ( empty($message) ) {
      $pass = 1;
      $alert .= "<li>" . $emptymessage . "</li>";
    }

      // Si une erreur d'est produit, on affiche les messages adéquat
      if ( $pass==1 ) {
    echo "<script>$(\".message\").hide(\"slow\").show(\"slow\"); </script>";
    echo "<h1>" . $errormessage . "</h1><br />";
    echo "<ul>";
    echo $alert;
    echo "</ul>";

	
      // Si aucune erreur ne se produit ($pass = 0), on envoi le message
      } else {
    $message = "De: " . clean_var($name) . "\n";
    $message .= "Email: " . clean_var($email) . "\n";
    $message .= "Telephone: " . clean_var($tele) . "\n";
    $message .= "Message: \n\n" . clean_var($message);
    $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n"; 
    $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
    $header = 'From: "Le sheiny"<contact@lesheiny.com>'."\n";
    $header .= "Reply-to: ". clean_var($email)."\n";
    $header .= "MIME-Version: 1.0"."\n";
    $header .= "Content-Type: multipart/alternative;"."\n"." boundary=\"$boundary\""."\n";
    $header .= "Date: $entetedate \n";



    // Code d'envoi du mail
    mail($to, $subject, $message, $header);
    // javascript
    echo "<script>$(\".message\").hide(\"slow\").show(\"slow\").animate({opacity: 1.0}, 4000).hide(\"slow\"); $(':input').clearForm() </script>";
    echo "<b>" .$thanks. "</b>";
    die();

      }

// Ici on affiche le message d'erreur du piège a bot
} else {
    echo "<script>$(\".message\").hide(\"slow\").show(\"slow\"); </script>";
    echo $honeypot;
}


?>


biensur Smiley decu ce sont des tuto que j'ai suivi et modifier selon mes besoins..
Bonjour Viddah,
j'avoue que ça fait un bon moment que j'ai pas fait de PHP , mais je crois bien pouvoir t'aider. EN voyant ces lignes de codes:

  mysql_query("INSERT INTO form_inscription(id, civilite, nom, prenom, email, adresse, cp, ville, tel, message)
      VALUES('','$civilite','$name','$prename','$email','$adresse','$cp','$ville','$tele','$message')") or die(mysql_error()); 



Je remarque la valeur pour l'id est vide, as-tu, en créant ta base de données fait qu'il soit auto-incrémenté?
Bjr El professor

effectivement Elprofessor le champ id est vide car il est auto-incrémenté dans ma base de donnée
merci de vous penchez sur mon problème Smiley cligne
Mon gros hic c'est que la vérification des champs de mon formulaire pour inclure les donnée dans ma base ne fonctionne pas.
Au niveau des messages tout est OK
les données s'enregistre sans que les champs soient remplies j'ai beau chercher mais je ne trouve pas d'ou peut venir le problème. [...] la vérification des champs de mon formulaire pour inclure les donnée dans ma base ne fonctionne pas.

Pourrais-tu être plus explicite ? Le code HTML de ton formulaire ne serait pas de refus, et la structure de ta table en base de données non plus ...

Comme ça je ne vois rien de particulier hormis que tes variables ne sont pas très bien nommées, ce qui n'empêche pas le formulaire de fonctionner ...
Bonjour MoOwgly

Merci
En cliquant sur Valider sans remplir les champs de mon formulaire
cela rajoute une ligne dans ma base de donnée.

Si un utilisateur clique sur valider sans rentrer ses coordonnées normalement ma base de donnée ne doit pas être renseignée.

<!-- FORM -->
			<div id="wrap">	

	<div class="message"><div id="alert"></div></div>

	<div>
	    <div class="contact">
		<form action="traitement.php" method="post" id="contactForm">
		<ul>
			<li>
			<label for="civilite">Votre sexe:</label>
			    <select name="civilite">
			        <option value="monsieur">Monsieur</option>
			        <option value="madame">Madame</option>
			        <option value="mademoiselle">Mademoiselle</option>
    			</select>
		    </li>
		    <li>
			<label for="name">Nom: <span class="required">*</span></label>
			<input type="text" name="name" value="" id="name" />
		    </li>
		    <li>
			<label for="prename">Prénom: <span class="required">*</span></label>
			<input type="text" name="prename" value="" id="prename" />
		    </li>
		    <li>
			<label for="email">Mail: <span class="required">*</span></label>
			<input type="text" name="email" value="" id="email" />
		    </li>
		    <li>
			<label for="adresse">adresse: <span class="required">*</span></label>
			<input type="text" name="adresse" value="" id="adresse" />
		    </li>
		    <li>
			<label for="cp">code Postal: <span class="required">*</span></label>
			<input type="text" name="cp" value="" id="cp" />
		    </li>
		    <li>
			<label for="ville">ville: <span class="required">*</span></label>
			<input type="text" name="ville" value="" id="ville" />
		    </li>
		    <li>
			<label for="tele">Téléphone: <span class="required">*</span></label>
			<input type="text" name="tele" value="" id="tele" />
		    </li>
		    <li class="special">
			<label for="last">test honeypot</label>
			<input type="text" name="last" value="" id="last" />
		    </li>
		    <li>
			<label for="message">Message: <span class="required">*</span></label>
			<textarea rows="6" name="message"></textarea>
		    </li>
			
			<li class="cap">
			<label for="captcha"> Veuillez saisir le code demandé <img src="acaptcha.php"/></label>
			<input type="text" name="captcha" id="captcha"/><br /><br /> 
			</li>
			
		    <span id="valid">
			<input class="bouton" type="submit" value="" />
		    </span>
		</ul>
		</form>
	    </div>
	</div>
	
	</div>

			<!-- FIN FORM -->


Ci dessous Ma table
upload/54361-tab.GIF
Bonjour,

Ok, en fait c'est tout à fait normal. Il n'y a aucune condition (if ... else) sur cette instruction. Donc, dans tous les cas, un enregistrement vide sera effectué puisque tu ne formates tes données qu'après.

Ecris ta requête à l'intérieur de ceci :

/
/ Si une erreur d'est produit, on affiche les messages adéquat
 if ( $pass==1 ) {
  
} else 
{
 // ici ton code d'insertion, juste avant la fermeture de l'accolade
 mysql_query("INSERT INTO form_inscription(id, civilite, nom, prenom, email, adresse, cp, ville, tel, message)
      VALUES('','$civilite','$name','$prename','$email','$adresse','$cp','$ville','$tele','$message')") or die(mysql_error()); 
}


Au passage il faudrait remettre de l'ordre dans ton code, en l'état tu effectues certaines choses sans être certain qu'elles auront bien lieu, donc parfois pour rien. Recopier du code c'est pratique, comprendre ce qu'on écrit c'est mieux Smiley cligne
Autre remarque, pour adresser MySQL, les fonctions mysql_xxx sont largement dépassées et aujourd'hui remplacées par PDO.
laurentsc a écrit :
Autre remarque, pour adresser MySQL, les fonctions mysql_xxx sont largement dépassées et aujourd'hui remplacées par PDO.

ou par mysqli Smiley rolleyes
Merci Smiley biggrin de m'avoir aidé et surtout boosté je vais refaire le formulaire et surtout apprendre à bien coder
Modifié par viddah972 (19 Apr 2014 - 18:57)