8791 sujets

Développement web côté serveur, CMS

Bonsoir à tous voici mon problème
j'ai crée une formulaire de réservation avec mes différent champs à remplir par l'utilisateur. une fois que l'utilisateur clic sur envoyer sa fonctionne je reçois bien le mail hors je souhaite aussi que les informations saisis s'inscrivent dans la base de donnée hors je suis un peux perdu dans le mysql je m'y aventure pour la 2éme fois seulement.

Pour info: j'ai créer ma base de donnée ainsi que ma tables et ses colonnes.

Voici mon code:
<?php include "../inc/header.inc.php";?>	<!-include du header->
		
<?php include "../inc/nav.inc.php";?>	<!-include de la nav->

<?php
//connexion à la base de donnée
//$bdd = new PDO('mysql:host=localhost;dbname=phplreservation', 'root', '');
?>

<?php

$connect=mysql_connect('localhost','root','');
mysql_select_db("db_reservation");

mysql_query("INSERT INTO 'reservation'(name,date_a,date_r,nombre,formule,mail)");
mysql_close();

$nom=$_POST['name'];
$prenom=$_POST['prenom'];
$mail=$_POST['mail'];
$formule=$_POST['formule'];
$date_a=$_POST['date_a'];
$date_r=$_POST['date_r'];


	$erreur ="";
	$ok ="";
	
	
if(!empty($_POST)){
	extract($_POST);
	$valid=true;
		if(empty($name)){
			$valid=false;
			$erreurnom="Vous n'avez pas rempli le champ nom";	
		}else{$valid=true;}
		
	//condition pour verifier si le champs mail correspond bien à un e-mail
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail)){
	$valid=false;
	$erreurmail ="votre email n'est pas valide";
}
if(empty($mail)){
	$valid=false;
		$erreurmail="Vous n'avez pas rempli votre adresse E-mail";	
	}

if(empty($prenom)){
	$valid=false;
		$erreurprenom="Vous n'avez pas rempli le champ prenom";	
	}

if(empty($nom)){
	$valid=false;
		$erreurnom="Vous n'avez pas rempli le champ nom";	
	}

if(empty($nombre)){
	$valid=true;
		$erreurnombre="Vous n'avez séléctrionné un nombre";	
	}
	
if(empty($date_a)){
	$valid=false;
		$erreurdate="Vous n'avez pas rempli le champ date";	
	}
	
if(empty($formule)){
	$valid=false;
		$erreurformule="Vous n'avez pas rempli le champ fromule";	
	}
	

if($valid==true){
		$to      = 'adrienkouyate@hotmail.fr';
		$subject = $name ;
		$message = $formule;
		$headers = 'From: ' . $name . ' ' . $prenom . ' <' . $mail . '>' . "\n";
		$ok="Votre message a bien était envoyer";
				
     mail($to, $subject, $message, $headers);
			}
			else{
				$erreur ="Une erreur est survenue et votre reservation n'a pas était envoyé Veuillez bien renseigner la totalitée des champs";
			}
	}


?>


<div id="contenue">
	<section class="contact">
		<header>
			<h1>Reservation</h1>
		</header>	
		<?php
		if($erreur!=""){echo $erreur;}
		if($ok!=""){echo $ok;}
		?>
		<h3>Tous les champs sont obligatoires</h3>
		<form method="post" >
				<label name="nom">Nom : *</label>
					<input type="text" name="name" id="name" value=""/>
					<span class="error_message"><?php if(isset($erreurname))echo $erreurname ?></span>
					<br />
				<label name="prenom">Prenom : *</label>
					<input type="text" name="prenom" id="prenom" />
					<span class="error_message"><?php if(isset($erreurprenom))echo $erreurprenom ?></span>
					<br />
			<div id="select">
				<label name="nombre">Nombre de personne : *</label>
					<select name="nombre" id="nombre">
						<option value="choix1">1</option>
						<option value="choix2">2</option>
						<option value="choix3">3</option>
						<option value="choix4">4</option>
						<option value="choix5">5</option>
					</select>

			<br />
				<label for="mail">Adresse mail : *</label>
					<input type="text" name="mail" id="mail"/>
				<span class="error_message"><?php if(isset($erreurmail))echo $erreurmail ?></span>
			<br />
				<label name="formule">Formule: *</label>
					<select name="formule" id="formule">
						<option value="form1">normal</option>
						<option value="form2">premium</option>
						<option value="form3">V.I.P</option>
					</select>
				<span class="error_message"><?php if(isset($erreurformule))echo $erreurformule ?></span>
			</div>
			<br />
				<label>date d'arrivé : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_a" name="date_a" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>	
			<br />
				<label>date de retour : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_r" name="date_r" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>		 
			<br />
					<input type="submit" name="enjoy" value="reserver" />
			</form>	
	</section><!-Fin de section reservation->
</div><!-fin de div contenue->

<?php include "../inc/footer.inc.php"; ?><!-include du footer->
Déjà laisse tomber l'extension mysql, elle n'est plus développé depuis 8 ans et elle est totalement obsolète. C'est à MySQL ce qu'est IE6 aux CSS. Part directement sur PDO.

Et puis pour la suite, ben il va falloir lire de la doc ou suivre des tutoriels.
Modifié par jb_gfx (27 Jun 2012 - 23:08)
Bonsoir jb_gfx je te remercie de cette réponse j'y avais pensé songé.

le souci que j'ai maintenant c'est que j'ai des code d'erreur retourné par php,
celle-ci indiquent que mes variable de la ligne 38 à 43 ne sont pas défini alors que pour moi si
j'ai loupé quelque chose mais quoi si tu as la possibilité de m'éclairé!

<?php include "../inc/header.inc.php";?>	<!-include du header->
		
<?php include "../inc/nav.inc.php";?>	<!-include de la nav->

<?php
//connexion à la base de donnée
//$bdd = new PDO('mysql:host=localhost;dbname=phplreservation', 'root', '');
?>

<?php





$dbname= 'db_reservation';
$user = 'root';
$password = '';
$host = 'localhost';



try {
    $dbh = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
    echo "<p>Erreur : " . $e->getMessage() . "</p>";
    exit();
}



try {
    /*
     * je récupère le type et le nom du formulaire fictif : 
     */
    $nom = $dbh->quote($_POST['name']); 
    $prenom = $dbh->quote($_POST['prenom']); 
    $formule = $dbh->quote($_POST['formule']); 
    $mail = $dbh->quote($_POST['mail']); 
    $date_a = $dbh->quote($_POST['date_a']); 
    $date_r = $dbh->quote($_POST['date_r']); 
    
    
     /* Insertion d'une ligne dans MySQL*/
    $count = $dbh->exec("INSERT INTO reservation(prenom, nom, mail, date_a, date_r, formule) VALUES ($nom, $prenom, $formule, $mail, $date_a,$date_r)");

    /*
     * $count contient le nombre de ligne inséré dans la BDD.
     * En l'occurence : 1
     */
    echo '<p>'.$count.' ligne(s) inserée(s)</p>';

    /*ferme la base de donnée*/
    $dbh = null;
}
catch(PDOException $e)
{

}








	$erreur ="";
	$ok ="";
	
	
if(!empty($_POST)){
	extract($_POST);
	$valid=true;
		if(empty($name)){
			$valid=false;
			$erreurnom="Vous n'avez pas rempli le champ nom";	
		}else{$valid=true;}
		
	//condition pour verifier si le champs mail correspond bien à un e-mail
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail)){
	$valid=false;
	$erreurmail ="votre email n'est pas valide";
}
if(empty($mail)){
	$valid=false;
		$erreurmail="Vous n'avez pas rempli votre adresse E-mail";	
	}

if(empty($prenom)){
	$valid=false;
		$erreurprenom="Vous n'avez pas rempli le champ prenom";	
	}

if(empty($nom)){
	$valid=false;
		$erreurnom="Vous n'avez pas rempli le champ nom";	
	}

if(empty($nombre)){
	$valid=true;
		$erreurnombre="Vous n'avez séléctrionné un nombre";	
	}
	
if(empty($date_a)){
	$valid=false;
		$erreurdate="Vous n'avez pas rempli le champ date";	
	}
	
if(empty($formule)){
	$valid=false;
		$erreurformule="Vous n'avez pas rempli le champ fromule";	
	}
	

if($valid==true){
		$to      = 'adrienkouyate@hotmail.fr';
		$subject = $name ;
		$message = $formule;
		$headers = 'From: ' . $name . ' ' . $prenom . ' <' . $mail . '>' . "\n";
		$ok="Votre message a bien était envoyer";
				
     mail($to, $subject, $message, $headers);
			}
			else{
				$erreur ="Une erreur est survenue et votre reservation n'a pas était envoyé Veuillez bien renseigner la totalitée des champs";
			}
	}


?>


<div id="contenue">
	<section class="contact">
		<header>
			<h1>Reservation</h1>
		</header>	
		<?php
		if($erreur!=""){echo $erreur;}
		if($ok!=""){echo $ok;}
		?>
		<h3>Tous les champs sont obligatoires</h3>
		<form method="post" >
				<label name="nom">Nom : *</label>
					<input type="text" name="name" id="name" value=""/>
					<span class="error_message"><?php if(isset($erreurname))echo $erreurname ?></span>
					<br />
				<label name="prenom">Prenom : *</label>
					<input type="text" name="prenom" id="prenom" />
					<span class="error_message"><?php if(isset($erreurprenom))echo $erreurprenom ?></span>
					<br />
			<div id="select">
				<label name="nombre">Nombre de personne : *</label>
					<select name="nombre" id="nombre">
						<option value="choix1">1</option>
						<option value="choix2">2</option>
						<option value="choix3">3</option>
						<option value="choix4">4</option>
						<option value="choix5">5</option>
					</select>

			<br />
				<label for="mail">Adresse mail : *</label>
					<input type="text" name="mail" id="mail"/>
				<span class="error_message"><?php if(isset($erreurmail))echo $erreurmail ?></span>
			<br />
				<label name="formule">Formule: *</label>
					<select name="formule" id="formule">
						<option value="form1">normal</option>
						<option value="form2">premium</option>
						<option value="form3">V.I.P</option>
					</select>
				<span class="error_message"><?php if(isset($erreurformule))echo $erreurformule ?></span>
			</div>
			<br />
				<label>date d'arrivé : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_a" name="date_a" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>	
			<br />
				<label>date de retour : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_r" name="date_r" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>		 
			<br />
					<input type="submit" name="enjoy" value="reserver" />
			</form>	
	</section><!-Fin de section reservation->
</div><!-fin de div contenue->

<?php include "../inc/footer.inc.php"; ?><!-include du footer->
Bien sur Smiley biggrin
Voici les messages d'erreurs
( ! ) Notice: Undefined index: name in C:\wamp\www\ecf2 origine\home\reservation.php on line 38
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0

( ! ) Notice: Undefined index: prenom in C:\wamp\www\ecf2 origine\home\reservation.php on line 39
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0

( ! ) Notice: Undefined index: formule in C:\wamp\www\ecf2 origine\home\reservation.php on line 40
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0

( ! ) Notice: Undefined index: mail in C:\wamp\www\ecf2 origine\home\reservation.php on line 41
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0

( ! ) Notice: Undefined index: date_a in C:\wamp\www\ecf2 origine\home\reservation.php on line 42
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0

( ! ) Notice: Undefined index: date_r in C:\wamp\www\ecf2 origine\home\reservation.php on line 43
Call Stack
#	Time	Memory	Function	Location
1	0.0011	714056	{main}( )	..\reservation.php:0
C'est parce que tu essai d’accéder au tableau POST avant d'avoir posté ton formulaire.

Ici :


$nom = $dbh->quote($_POST['name']); 
    $prenom = $dbh->quote($_POST['prenom']); 
    $formule = $dbh->quote($_POST['formule']); 
    $mail = $dbh->quote($_POST['mail']); 
    $date_a = $dbh->quote($_POST['date_a']); 
    $date_r = $dbh->quote($_POST['date_r']); 


Alors que tu testes si le formulaire est posté plus bas dans ton code :


if(!empty($_POST)){
Parfait je te remercie comme toujours avec moi le problème tourne autour d'une idiotie mais après tout ces comme sa qu'on apprend.
Le code rectifié je n'est plus d'erreur Smiley cligne
<?php include "../inc/header.inc.php";?>	<!-include du header->
		
<?php include "../inc/nav.inc.php";?>	<!-include de la nav->



<?php

$erreur ="";
$ok ="";
	
	if(!empty($_POST)){

//J'ouvre ma base de donnée
	$dbname= 'db_reservation';
	$user = 'root';
	$password = '';
	$host = 'localhost';

try {
    $dbh = new PDO('mysql:host='.$host .';dbname='.$dbname, $user, $password );
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
    echo "<p>Erreur : " . $e->getMessage() . "</p>";
    exit();
}

try {
    /*
     * je récupère le type et le nom du formulaire fictif : 
     */
    $nom = $dbh->quote($_POST['name']); 
    $prenom = $dbh->quote($_POST['prenom']); 
    $formule = $dbh->quote($_POST['formule']); 
    $mail = $dbh->quote($_POST['mail']); 
    $date_a = $dbh->quote($_POST['date_a']); 
    $date_r = $dbh->quote($_POST['date_r']); 
    
    
     /* Insertion d'une ligne dans MySQL*/
    $count = $dbh->exec("INSERT INTO reservation(prenom, nom, mail, date_a, date_r, formule) VALUES ($nom, $prenom, $formule, $mail, $date_a,$date_r)");

   
      //$count contient le nombre de ligne inséré dans la BDD.
    
    echo '<p>'.$count.' ligne(s) inserée(s)</p>';

    //ferme la base de donnée
    $dbh = null;
	}
catch(PDOException $e)
	{

	}

//ensuite je test si mes champs sont vide
	extract($_POST);
	$valid=true;
		if(empty($name)){
			$valid=false;
			$erreurnom="Vous n'avez pas rempli le champ nom";	
		}else{$valid=true;}
		
	//condition pour verifier si le champs mail correspond bien à un e-mail
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$mail)){
	$valid=false;
	$erreurmail ="votre email n'est pas valide";
}
if(empty($mail)){
	$valid=false;
		$erreurmail="Vous n'avez pas rempli votre adresse E-mail";	
	}

if(empty($prenom)){
	$valid=false;
		$erreurprenom="Vous n'avez pas rempli le champ prenom";	
	}

if(empty($nom)){
	$valid=false;
		$erreurnom="Vous n'avez pas rempli le champ nom";	
	}

if(empty($nombre)){
	$valid=true;
		$erreurnombre="Vous n'avez séléctrionné un nombre";	
	}
	
if(empty($date_a)){
	$valid=false;
		$erreurdate="Vous n'avez pas rempli le champ date";	
	}
	
if(empty($formule)){
	$valid=false;
		$erreurformule="Vous n'avez pas rempli le champ fromule";	
	}
	

if($valid==true){
		$to      = 'adrienkouyate@hotmail.fr';
		$subject = $name ;
		$message = $formule;
		$headers = 'From: ' . $name . ' ' . $prenom . ' <' . $mail . '>' . "\n";
		$ok="Votre message a bien était envoyer";
				
     mail($to, $subject, $message, $headers);
			}
			else{
				$erreur ="Une erreur est survenue et votre reservation n'a pas était envoyé Veuillez bien renseigner la totalitée des champs";
			}
	}

	
	
	
	


?>


<div id="contenue">
	<section class="contact">
		<header>
			<h1>Reservation</h1>
		</header>	
		<?php
		if($erreur!=""){echo $erreur;}
		if($ok!=""){echo $ok;}
		?>
		<h3>Tous les champs sont obligatoires</h3>
		<form method="post" >
				<label name="nom">Nom : *</label>
					<input type="text" name="name" id="name" value=""/>
					<span class="error_message"><?php if(isset($erreurname))echo $erreurname ?></span>
					<br />
				<label name="prenom">Prenom : *</label>
					<input type="text" name="prenom" id="prenom" />
					<span class="error_message"><?php if(isset($erreurprenom))echo $erreurprenom ?></span>
					<br />
			<div id="select">
				<label name="nombre">Nombre de personne : *</label>
					<select name="nombre" id="nombre">
						<option value="choix1">1</option>
						<option value="choix2">2</option>
						<option value="choix3">3</option>
						<option value="choix4">4</option>
						<option value="choix5">5</option>
					</select>

			<br />
				<label for="mail">Adresse mail : *</label>
					<input type="text" name="mail" id="mail"/>
				<span class="error_message"><?php if(isset($erreurmail))echo $erreurmail ?></span>
			<br />
				<label name="formule">Formule: *</label>
					<select name="formule" id="formule">
						<option value="form1">normal</option>
						<option value="form2">premium</option>
						<option value="form3">V.I.P</option>
					</select>
				<span class="error_message"><?php if(isset($erreurformule))echo $erreurformule ?></span>
			</div>
			<br />
				<label>date d'arrivé : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_a" name="date_a" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>	
			<br />
				<label>date de retour : *(cliquer sur le jour souhaité)</label>
					<input type="text" id="date_r" name="date_r" class="datepicker" class="datepicker" />
				<span class="error_message"><?php if(isset($erreurdate))echo $erreurdate ?></span>		 
			<br />
					<input type="submit" name="enjoy" value="reserver" />
			</form>	
	</section><!-Fin de section reservation->
</div><!-fin de div contenue->

<?php include "../inc/footer.inc.php"; ?><!-include du footer->


Maintenant si je me trompe pas j'ai plus cas insérer mes champs dans ma table à l'aide d'une requête?

Je te remercie de nouveau pour tes précieuses informations
a écrit :

Maintenant si je me trompe pas j'ai plus cas insérer mes champs dans ma table à l'aide d'une requête?


Oui, mais apparemment tu y est presque.
Salut, il faut que tu récupère tes valeurs $_POST : t'es valeur en post tu les envoia à une fonction de type :

	public function fx_addArticle($NOM_PRODUIT) 
	{
        // L'argument NOM_PRODUIT est ici la valeur de POST, que tu lui envoie lors de         //  l'appel de fonction du style $oArticle->fx_addArticle($_POST['NomProduit']


		$this->sql = "INSERT INTO `tb_produit`( `NOM_PRODUIT`)";
		$this->params = array(":NOM_PRODUIT"=>$NOM_PRODUIT);
	
		//$oCad->write($sql, $param);
		$this->oCad->write($this->sql , $this->params);
	}


Ton objet oCAD fait partie de la classe CAD (Composant d’accès au données) qui regroupe ton accès a ta BDD :

		private $user;
		private $pass;
		private $dsn;
		private $sql;
		
	public function __construct()
		{
			$this->user = 'root';
			$this->pass = '';
			$this->dsn = 'mysql:host=; dbname='; // a remplir, c'est pour te connecter
		}


avec la fonction write qui va écrire exécuter la requête :

function write($sql, $param)
		{
			try 
				{
					$dbh = new PDO($this->dsn, $this->user, $this->pass);
				} 
			catch (PDOException $e) 
				{
					die("Erreur ! : " . $e->getMessage());
				}
				
				
			$stmt = $dbh->prepare($sql);
			$stmt->execute($param);
			$lastid = $dbh->lastInsertId();
			$dbh = NULL;
			return $lastid;
		}

Modifié par JuseN (29 Jun 2012 - 10:52)
Ni quel. merci pour l'astuce ma table se remplie parfaitement lors de l'envoi d'une réservation. et je r'envoi une copie aussi au client lui rappelant sa demande, ni quel ni quel, merci à tous à bientôt