IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Erreur sql Formulaire de réservation


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Par défaut Erreur sql Formulaire de réservation
    Bonjour,
    J'ai sur un site pour un riad un formulaire de réservations qui affiche une erreur sql lors de l'envoi du formulaire et je ne trouve pas la raison de cette erreur.
    Voici le début de mon code jusqu'à la partie INSERT_INTO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?php
    	$nom = "";
    	$prenom = "";
    	$email = "";
    	$phone = "";
    	$adresse = "";
    	$ville = "";
    	$cp = "";
    	$country = "";
    	$room = "";
    	$DateStartFR = "";
    	$DateStartISO = "";
    	$DateEndFR = "";
    	$DateEndISO = "";
    	$nbnuits = "";
    	$nbpersonnes = "";
    	$message = "";
    	$date_reserv = "";
    	$msgErreurCourriel = "";
     
    	if(!empty($_POST)){
    		$nom = $_POST['nom'];
    			$nom = (htmlspecialchars($nom, ENT_QUOTES));
    		$prenom = $_POST['prenom'];
    			$prenom = (htmlspecialchars($prenom, ENT_QUOTES));
    		$email = $_POST['email'];
    			$email = (htmlspecialchars($email, ENT_QUOTES));
    				$aroba = strpos($email,'@');
    				$point = strpos($email,'.');
    		$phone = $_POST['phone'];
    			$phone = (htmlspecialchars($phone, ENT_QUOTES));
    		$adresse = $_POST['adresse'];
    			$adresse = (htmlspecialchars($adresse, ENT_QUOTES));
    		$ville = $_POST['ville'];
    			$ville = (htmlspecialchars($ville, ENT_QUOTES));
    		$cp = $_POST['cp'];
    			$cp = (htmlspecialchars($cp, ENT_QUOTES));
    		$country = $_POST['country'];
    			$country = (htmlspecialchars($country, ENT_QUOTES));
    		$room = $_POST['room'];
    			$room = (htmlspecialchars($room, ENT_QUOTES));
    		$DateStartFR = $_POST['DateStartFR'];
    			$DateStartFR = (htmlspecialchars($DateStartFR, ENT_QUOTES));
    		$DateStartISO = $_POST['DateStartISO'];
    			$DateStartISO = (htmlspecialchars($DateStartISO, ENT_QUOTES));
    		$DateEndFR = $_POST['DateEndFR'];
    			$DateEndFR = (htmlspecialchars($DateEndFR, ENT_QUOTES));
    		$DateEndISO = $_POST['DateEndISO'];
    			$DateEndISO = (htmlspecialchars($DateEndISO, ENT_QUOTES));
    		$nbnuits = $_POST['nbnuits'];
    			$nbnuits = (htmlspecialchars($nbnuits, ENT_QUOTES));
    		$nbpersonnes = $_POST['nbpersonnes'];
    			$nbpersonnes = (htmlspecialchars($nbpersonnes, ENT_QUOTES));
    		$message = $_POST['message'];
    			$message = (htmlspecialchars($message, ENT_QUOTES));
    		$date_reserv = $_POST['date_reserv'];
    			$date_reserv = (htmlspecialchars($date_reserv, ENT_QUOTES));
    		if(($email != "") && ($point != "") && ($aroba != ""));
    		// On vérifie que le champ website est vide
    		if (isset($_POST['website']) AND empty($_POST['website']))
    		// Alors on continue d'enregistrer les données
    		{
     
    			$host = "xxxxxxxxxxx.db.1and1.com";
    			$user = "xxxxxxxxxxx";
    			$bdd  = "xxxxxxxx6";
    			$pass = "xxxxxxxx";
     
    			mysqli_connect($host, $user, $pass);
    			mysqli_select_db($bdd);
    			mysqli_query("SET NAMES UTF8");
     
    			$SQL = "INSERT INTO reservation (nom, prenom, email, phone, adresse, ville, cp, country, room, DateStartISO, DateEndISO, nbnuits, nbpersonnes, message, date_reserv) VALUES ('$nom', '$prenom', '$email', '$phone', '$adresse', '$ville', '$cp', '$country', '$room', '$DateStartISO', '$DateEndISO', '$nbnuits', '$nbpersonnes', '$message', CURDATE())";
    			$req = mysqli_query($SQL) or die("Erreur : " . $SQL);
    Et voici le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur : INSERT INTO reservation (nom, prenom, email, phone, adresse, ville, cp, country, room, DateStartISO, DateEndISO, nbnuits, nbpersonnes, message, date_reserv) VALUES ('CLAUDE', 'Daniel', 'daclaude@wanadoo.fr', '', '', '', '', 'FR', 'Idrissides', '2021-11-30', '2021-12-08', '8', '1', '', CURDATE())
    Merci d'avance de m'aider à trouver la solution.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 520
    Par défaut
    Bonjour,

    Pour identifier l'erreur il faut utiliser mysqli_error() et mysqli_connect_error() comme c'est montré dans cet exemple du style procédural.

  3. #3
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Bonjour,

    1- comme il s'agit d'INSERER les données en base de données, on n'utilise pas htmlspecialchars(), mais mysqli_real_escape_string(), pour protéger la requête.

    2- La vérification de l'email n'est pas bonne du tout.
    Là, on utilise filter_var($email, FILTER_VALIDATE_EMAIL).

    3- on peut simplifier la récupération en utilisant la condition ternaire
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    if(!empty($_POST))
    {
    	$nom 		= ( isset($_POST['nom']) )? 	mysqli_real_escape_string($_POST['nom']) : "";
    	$prenom 	= ( isset($_POST['prenom']) )? 	mysqli_real_escape_string($_POST['prenom']) : "";
    	$email 		= ( isset($_POST['email']) )? 	mysqli_real_escape_string($_POST['email']) : "";
    	$phone 		= ( isset($_POST['phone']) )? 	mysqli_real_escape_string($_POST['phone']) : "";
    	$adresse 	= ( isset($_POST['adresse']) )? mysqli_real_escape_string($_POST['adresse']) : "";
    	$ville 		= ( isset($_POST['ville']) )? 	mysqli_real_escape_string($_POST['ville']) : "";
    	$cp 		= ( isset($_POST['cp']) )? 		mysqli_real_escape_string($_POST['cp']) : "";
    	$country 	= ( isset($_POST['country']) )? mysqli_real_escape_string($_POST['country']) : "";
    	$room 		= ( isset($_POST['room']) )? 	mysqli_real_escape_string($_POST['room']) : "";
    	$DateStartFR 	= ( isset($_POST['DateStartFR']) )? mysqli_real_escape_string($_POST['DateStartFR']) : "";
    	$DateStartISO 	= ( isset($_POST['DateStartISO']) )? mysqli_real_escape_string($_POST['DateStartISO']) : "";
    	$DateEndFR 		= ( isset($_POST['DateEndFR']) )? 	mysqli_real_escape_string($_POST['DateEndFR']) : "";
    	$DateEndISO 	= ( isset($_POST['DateEndISO']) )? 	mysqli_real_escape_string($_POST['DateEndISO']) : "";
    	$nbnuits 		= ( isset($_POST['nbnuits']) )? 	mysqli_real_escape_string($_POST['nbnuits']) : "";
    	$nbpersonnes 	= ( isset($_POST['nbpersonnes']) )? mysqli_real_escape_string($_POST['nbpersonnes']) : "";
    	$message 		= ( isset($_POST['message']) )? 	mysqli_real_escape_string($_POST['message']) : "";
    	$date_reserv 	= ( isset($_POST['date_reserv']) )? mysqli_real_escape_string($_POST['date_reserv']) : "";
     
    	$msgErreurCourriel = "";
     
    	// -----------------------
    	// Vérification des champs obligatoires
    /*
    	if( empty($nom) )
    	{
    		$msgErreurCourriel .= "- Indiquez votre Nom \n";
    	}
    	if( empty($email) )
    	{
    		$msgErreurCourriel .= "- Indiquez votre Email \n";
    	}
    	// ...
    */	
    	// -----------------------
    	// Vérification du format de l'Email
    	if( !empty($email) && !filter_var($email, FILTER_VALIDATE_EMAIL) )
    	{
    		$msgErreurCourriel .= "- Format d'Email invalide \n";
    	}
     
    	// -----------------------
    	// si erreur : on affiche
    	if( !empty($msgErreurCourriel ) )
    	{
    		echo "ERREURS : \n".$msgErreurCourriel;
    	}
    	// PAS d'erreur, on continue
    	else
    	{
    		// ... (insertion en bdd)

  4. #4
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Par défaut
    Merci pour le code.
    Mais cela m'affiche plein de messages d'erreur tels que celui-ci :

    Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in D:\Mes Sites\riaddaralamane\reserver.php on line 23

  5. #5
    Inactif  
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2021
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juin 2021
    Messages : 645
    Par défaut
    Il manque en effet un paramètre...

    Il suffit de cliquer sur le lien (dans mon précédent message) pour savoir lequel...

  6. #6
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2014
    Messages : 21
    Par défaut
    N'arrivant pas à obtenir un formulaire opérationnel j'ai finalement décidé de le revoir entièrement et de passer au PDO. Mais n'ayant jamais pratiqué j'ai suivi un tutoriel et j'ai évidemment de nouveau des erreurs.
    Voici mes codes actuels :
    Le code du formulaire seul :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    <?php
    $nav_en_cours = 'reservation';
    //On inclut le début du doctype en haut de page
    include("includes/doctype.php");?>
    <title>Riad Dar Al Amane | Réservation et Contact</title>
    			<!-- Appels css pour datepicker -->
    			<link rel="stylesheet" href="styles/jquery-ui.css" />
    			<link rel="stylesheet" href="styles/jquery-ui.structure.css" />
    			<link rel="stylesheet" href="styles/jquery-ui.theme.css" />
    		<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
    		<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
    		<script src="js/datepicker.js"></script>
     
    <?php
    //On inclut la fin du head et la banière en haut de page
    include("includes/head.php");?>
     
    	<body>
    		<div id="container">
    			<header>
    				<img src="images/logo-2.jpg" alt="" width="960" height="130">
    <?php
    //On inclut les drapeaux
    include("includes/translate.php");
    //On inclut le menu
    include("includes/menu.php"); ?>
     
    			<div id="photo1">
    				<img src="images/service.jpg" alt="" />
    			</div>
    			<div id="content-form">
    				<div id="formreserv">
    					<form method="post" action="reservation2.php">
    						<div class="fl-header">
    							<p class="contact">Pour un simple contact sans réservation cliquer sur le bouton &nbsp;&nbsp;<a class="logo_contact" href="contact.php">CONTACT</a></p>
    							<h3>Merci de remplir le formulaire ci dessous pour votre demande de réservation</h3>
    							<p><span> * </span>Les champs marqués d'un astérisque rouge sont obligatoires</p>
    						</div>
    						<div class="clearfix">
    							<div class="website">
    								<label for="website">Vous êtes un humain, ne pas remplir ce champ *</label>
    								<input type="text" name="website" id="website"/>
    							</div>
    							<div class="fl-col">
    									<label for="nom">&nbsp;&nbsp;Nom  <span class="requis">*</span></label>
    									<input type="text" id="nom" class="fl-text" placeholder="Nom" name="nom" style="width:285px;" required autofocuspattern="^[A-Za-z'-]+$" maxlength="20">
    							</div>
    							<div class="fl-col">
    									<label for="prenom">&nbsp;&nbsp;Prénom  <span class="requis">*</span></label>
    									<input type="text" id="prenom" class="fl-text" placeholder="Prénom" name="prenom" style="width:285px;" required pattern="^[A-Za-z'-]+$" maxlength="20">
    							</div>
    							<div class="fl-col">
    									<label for="email">&nbsp;&nbsp;E-mail  <span class="requis">*</span></label>
    									<input type="email" id="email" class="fl-text" placeholder="Email" name="email" style="width:285px;" required pattern="^[A-Za-z'-]+@'1}[A-Za-z]+\.{1}[A-Za-z]'2,}$">
    							</div>
    							<div class="fl-col">
    									<label for="phone">&nbsp;&nbsp;Téléphone </label>
    									<input type="tel" id="phone" class="fl-text" placeholder="Téléphone" name="phone" style="width:285px;">
    							</div>
    						</div>
    						<div class="clearfix">
    							<div class="fl-col">
    									<label for="adresse">&nbsp;&nbsp;Adresse </label>
    									<textarea class="fl-textarea" rows="2" cols="40" placeholder="Numéro et nom rue" name="adresse" id="adresse" style="width:595px; min-height:50px;"></textarea>
    							</div>
    						</div>
    						<div class="clearfix">
    							<div class="fl-col">
    									<label for="ville">&nbsp;&nbsp;Ville </label>
    									<input class="fl-text" type="text" id="ville" placeholder="Ville" name="ville" style="width:185px;">
    							</div>
    							<div class="fl-col">
    									<label for="cp">&nbsp;&nbsp;Code postal</label>
    									<input class="fl-text" type="number" id="cp" placeholder="Code postal" name="cp" style="width:185px;" maxlength="5" pattern="[0-9]">
    							</div>
    							<div class="fl-col">
    									<label for="country">&nbsp;&nbsp;Pays</label>
    									<select name="country" id="country" class="fl-select" style="width:185px;" >
    										<option value="AF">Afghanistan</option><option value="ZA">Afrique du Sud</option><option value="AL">Albanie</option><option value="DZ">Algérie</option><option value="DE">Allemagne</option><option value="AD">Andorre</option><option value="AO">Angola</option><option value="AI">Anguilla</option><option value="AQ">Antarctique</option><option value="AG">Antigua-et-Barbuda</option><option value="AN">Antilles néerlandaises</option><option value="SA">Arabie saoudite</option><option value="AR">Argentine</option><option value="AM">Arménie</option><option value="AW">Aruba</option><option value="AU">Australie</option><option value="AT">Autriche</option><option value="AZ">Azerbaïdjan</option><option value="BS">Bahamas</option><option value="BH">Bahreïn</option><option value="BD">Bangladesh</option><option value="BB">Barbade</option><option value="BE">Belgique</option><option value="BZ">Belize</option><option value="BM">Bermudes</option><option value="BT">Bhoutan</option><option value="BO">Bolivie</option><option value="BA">Bosnie-Herzégovine</option><option value="BW">Botswana</option><option value="BN">Brunéi Darussalam</option><option value="BR">Brésil</option><option value="BG">Bulgarie</option><option value="BF">Burkina Faso</option><option value="BI">Burundi</option><option value="BY">Bélarus</option><option value="BJ">Bénin</option><option value="KH">Cambodge</option><option value="CM">Cameroun</option><option value="CA">Canada</option><option value="CV">Cap-Vert</option><option value="CL">Chili</option><option value="CN">Chine</option><option value="CY">Chypre</option><option value="CO">Colombie</option><option value="KM">Comores</option><option value="CG">Congo</option><option value="KP">Corée du Nord</option><option value="KR">Corée du Sud</option><option value="CR">Costa Rica</option><option value="HR">Croatie</option><option value="CU">Cuba</option><option value="CI">Côte d’Ivoire</option><option value="DK">Danemark</option><option value="DJ">Djibouti</option><option value="DM">Dominique</option><option value="EG">Égypte</option><option value="SV">El Salvador</option><option value="AE">Émirats arabes unis</option><option value="EC">Équateur</option><option value="ES">Espagne</option><option value="EE">Estonie</option><option value="ER">Érythrée</option><option value="VA">État de la Cité du Vatican</option><option value="FM">États fédérés de Micronésie</option><option value="US">États-Unis</option><option value="ET">Éthiopie</option><option value="FJ">Fidji</option><option value="FI">Finlande</option><option value="FR" selected="selected">France</option><option value="GA">Gabon</option><option value="GM">Gambie</option><option value="GH">Ghana</option><option value="GI">Gibraltar</option><option value="GD">Grenade</option><option value="GL">Groenland</option><option value="GR">Grèce</option><option value="GP">Guadeloupe</option><option value="GU">Guam</option><option value="GT">Guatemala</option><option value="GG">Guernesey</option><option value="GN">Guinée</option><option value="GQ">Guinée équatoriale</option><option value="GW">Guinée-Bissau</option><option value="GY">Guyana</option><option value="GF">Guyane française</option><option value="GE">Géorgie</option><option value="GS">Géorgie du Sud et les îles Sandwich du Sud</option><option value="HT">Haïti</option><option value="HN">Honduras</option><option value="HU">Hongrie</option><option value="BV">Île Bouvet</option><option value="CX">Île Christmas</option><option value="NF">Île Norfolk</option><option value="IM">Île de Man</option><option value="KY">Îles Caïmans</option><option value="CC">Îles Cocos - Keeling</option><option value="CK">Îles Cook</option><option value="FO">Îles Féroé</option><option value="HM">Îles Heard et MacDonald</option><option value="FK">Îles Malouines</option><option value="MP">Îles Mariannes du Nord</option><option value="MH">Îles Marshall</option><option value="UM">Îles Mineures Éloignées des États-Unis</option><option value="SB">Îles Salomon</option><option value="TC">Îles Turks et Caïques</option><option value="VG">Îles Vierges britanniques</option><option value="VI">Îles Vierges des États-Unis</option><option value="AX">Îles Åland</option><option value="IN">Inde</option><option value="ID">Indonésie</option><option value="IQ">Irak</option><option value="IR">Iran</option><option value="IE">Irlande</option><option value="IS">Islande</option><option value="IL">Israël</option><option value="IT">Italie</option><option value="JM">Jamaïque</option><option value="JP">Japon</option><option value="JE">Jersey</option><option value="JO">Jordanie</option><option value="KZ">Kazakhstan</option><option value="KE">Kenya</option><option value="KG">Kirghizistan</option><option value="KI">Kiribati</option><option value="KW">Koweït</option><option value="LA">Laos</option><option value="LS">Lesotho</option><option value="LV">Lettonie</option><option value="LB">Liban</option><option value="LY">Libye</option><option value="LR">Libéria</option><option value="LI">Liechtenstein</option><option value="LT">Lituanie</option><option value="LU">Luxembourg</option><option value="MK">Macédoine</option><option value="MG">Madagascar</option><option value="MY">Malaisie</option><option value="MW">Malawi</option><option value="MV">Maldives</option><option value="ML">Mali</option><option value="MT">Malte</option><option value="MA">Maroc</option><option value="MQ">Martinique</option><option value="MU">Maurice</option><option value="MR">Mauritanie</option><option value="YT">Mayotte</option><option value="MX">Mexique</option><option value="MD">Moldavie</option><option value="MC">Monaco</option><option value="MN">Mongolie</option><option value="MS">Montserrat</option><option value="ME">Monténégro</option><option value="MZ">Mozambique</option><option value="MM">Myanmar</option><option value="NA">Namibie</option><option value="NR">Nauru</option><option value="NI">Nicaragua</option><option value="NE">Niger</option><option value="NG">Nigéria</option><option value="NU">Niue</option><option value="NO">Norvège</option><option value="NC">Nouvelle-Calédonie</option><option value="NZ">Nouvelle-Zélande</option><option value="NP">Népal</option><option value="OM">Oman</option><option value="UG">Ouganda</option><option value="UZ">Ouzbékistan</option><option value="PK">Pakistan</option><option value="PW">Palaos</option><option value="PA">Panama</option><option value="PG">Papouasie-Nouvelle-Guinée</option><option value="PY">Paraguay</option><option value="NL">Pays-Bas</option><option value="PH">Philippines</option><option value="PN">Pitcairn</option><option value="PL">Pologne</option><option value="PF">Polynésie française</option><option value="PR">Porto Rico</option><option value="PT">Portugal</option><option value="PE">Pérou</option><option value="QA">Qatar</option><option value="HK">R.A.S. chinoise de Hong Kong</option><option value="MO">R.A.S. chinoise de Macao</option><option value="RO">Roumanie</option><option value="GB">Royaume-Uni</option><option value="RU">Russie</option><option value="RW">Rwanda</option><option value="CF">République centrafricaine</option><option value="DO">République dominicaine</option><option value="CD">République démocratique du Congo</option><option value="CZ">République tchèque</option><option value="RE">Réunion</option><option value="EH">Sahara occidental</option><option value="BL">Saint-Barthélémy</option><option value="KN">Saint-Kitts-et-Nevis</option><option value="SM">Saint-Marin</option><option value="MF">Saint-Martin</option><option value="PM">Saint-Pierre-et-Miquelon</option><option value="VC">Saint-Vincent-et-les Grenadines</option><option value="SH">Sainte-Hélène</option><option value="LC">Sainte-Lucie</option><option value="WS">Samoa</option><option value="AS">Samoa américaines</option><option value="ST">Sao Tomé-et-Principe</option><option value="RS">Serbie</option><option value="CS">Serbie-et-Monténégro</option><option value="SC">Seychelles</option><option value="SL">Sierra Leone</option><option value="SG">Singapour</option><option value="SK">Slovaquie</option><option value="SI">Slovénie</option><option value="SO">Somalie</option><option value="SD">Soudan</option><option value="LK">Sri Lanka</option><option value="CH">Suisse</option><option value="SR">Suriname</option><option value="SE">Suède</option><option value="SJ">Svalbard et Île Jan Mayen</option><option value="SZ">Swaziland</option><option value="SY">Syrie</option><option value="SN">Sénégal</option><option value="TJ">Tadjikistan</option><option value="TZ">Tanzanie</option><option value="TW">Taïwan</option><option value="TD">Tchad</option><option value="TF">Terres australes françaises</option><option value="IO">Territoire britannique de l'océan Indien</option><option value="PS">Territoire palestinien</option><option value="TH">Thaïlande</option><option value="TL">Timor oriental</option><option value="TG">Togo</option><option value="TK">Tokelau</option><option value="TO">Tonga</option><option value="TT">Trinité-et-Tobago</option><option value="TN">Tunisie</option><option value="TM">Turkménistan</option><option value="TR">Turquie</option><option value="TV">Tuvalu</option><option value="UA">Ukraine</option><option value="UY">Uruguay</option><option value="VU">Vanuatu</option><option value="VE">Venezuela</option><option value="VN">Viêt Nam</option><option value="WF">Wallis-et-Futuna</option><option value="YE">Yémen</option><option value="ZM">Zambie</option><option value="ZW">Zimbabwe</option>
    									</select>
    							</div>
    						</div>
    						<div class="fl-row clearfix">
    							<div class="fl-col" id="fl-page9-item-col1">
    									<label for="room">&nbsp;&nbsp;Je souhaite réserver la chambre  <span class="requis">*</span></label>
    									<select name="room" id="room" class="fl-select" style="width:295px;" required>
    										<option selected="selected" value="">Choisir une chambre</option>
    										<option value="Idrissides">R.de Ch. - Idrissides</option>
    										<option value="Almoravides">1er - Almoravides</option>
    										<option value="Almoahades">1er - Almoahades</option>
    										<option value="Merinides">1er - Merinides</option>
    										<option value="Saadiens">1er - Saadiens</option>
    										<option value="ChambreA">2ème - Chambre A</option>
    										<option value="ChambreB">2ème - Chambre B</option>
    									</select>
    							</div>
    						</div>
    						<div class="clearfix">
    							<div class="fl-col">
    									<label for="DateStartFR">&nbsp;&nbsp;Date d'arrivée  <span class="requis">*</span></label>
    									<input type="text" name="DateStartFR" id="DateStartFR" placeholder="Sélectionner une date" style="width:272px; display:inline;" readonly required>
    									<input type="hidden" id="DateStartISO" name="DateStartISO">
    							</div>
    							<div class="fl-col">
    									<label for="DateEndFR">&nbsp;&nbsp;Date de départ  <span class="requis">*</span></label>
    									<input type="text" name="DateEndFR" id="DateEndFR" placeholder="Sélectionner une date" style="width:272px; display:inline;" readonly required>
    									<input type="hidden" id="DateEndISO" name="DateEndISO">
    							</div>
    							<div class="fl-col">
    									<label for="nbnuits">&nbsp;&nbsp;Nombre de nuits  <span class="requis">*</span></label>
    									<input type="text" min="1" class="fl-date" name="nbnuits" id="nbnuits" placeholder="Calcul automatique" style="width:285px;" readonly required>
    							</div>
    							<div class="fl-col">
    									<label for="nbpersonnes">&nbsp;&nbsp;Nombre de personnes  <span class="requis">*</span></label>
    									<input type="number" min="1" max="20" class="fl-date" name="nbpersonnes" id="nbpersonnes" placeholder="Nombre de personnes" style="width:285px;" required>
    							</div>
    						</div>
    						<div class="clearfix">
    							<div class="fl-col">
    									<label for="message">&nbsp;&nbsp;Message</label>
    									<textarea class="fl-textarea" rows="10" cols="40" placeholder="Votre message" name="message" id="message" style="width:595px;" ></textarea>
    							</div>
    						</div>
    							<div class="fl-col">
    									<input type="hidden" class="fl-date" name="date_reserv" id="date_reserv" style="width:285px;"> 
    							</div>
    						<div class="clearfix">
    							<div class="fl-col">
    									<input type="submit" name="envoyer" id="item-15" class="fl-submit" style="width:150px;" value="RÉSERVER" />
    							</div>
    							<div class="fl-col">
    									<input type="reset" id="item-16" class="fl-reset" style="width:150px;" value="Annuler" />
    							</div>
    						</div><br>
    					</form>
    				</div>
    			</div>
    <?php
    //On inclut le bas de page
    include("includes/footer.php");?>
    Et le code de validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
        $serveur = "localhost"; $dbname = "jardinamel"; $user = "root"; $pass = "";
     
        $nom = valid_donnees($_POST["nom"]);
        $prenom = valid_donnees($_POST["prenom"]);
        $email = valid_donnees($_POST["email"]);
        $adresse = valid_donnees($_POST["phone"]);
        $ville = valid_donnees($_POST["adresse"]);
    	$country = valid_donnees($_POST["ville"]);
        $cp = valid_donnees($_POST["cp"]);
        $country = valid_donnees($_POST["country"]);
    	$room = valid_donnees($_POST["room"]);
    	$DateStartFR = valid_donnees($_POST["DateStartFR"]);
    	$DateStartISO = valid_donnees($_POST["DateStartISO"]);
    	$DateEndFR = valid_donnees($_POST["DateEndFR"]);
    	$DateEndISO = valid_donnees($_POST["DateEndISO"]);
    	$nbnuits = valid_donnees($_POST["nbnuits"]);
    	$nbpersonnes = valid_donnees($_POST["nbpersonnes"]);
    	$message = valid_donnees($_POST["message"]);
    	$date_reserv = valid_donnees($_POST["date_reserv"]);
     
        function valid_donnees($donnees){
            $donnees = trim($donnees);
            $donnees = stripslashes($donnees);
            $donnees = htmlspecialchars($donnees);
            return $donnees;
        }
     
        /*Si les champs prenom et mail ne sont pas vides et si les donnees ont
         *bien la forme attendue...*/
        if (!empty($prenom)
            && strlen($prenom) <= 20
            && preg_match("^[A-Za-z '-]+$",$prenom)
            && !empty($mail)
            && filter_var($mail, FILTER_VALIDATE_EMAIL)){
     
            try{
                //On se connecte à la BDD
                $dbco = new PDO("mysql:host=$eerveur;dbname=$dbname",$user,$pass);
                $dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                //On insère les données reçues
                $sth = $dbco->prepare("
                    INSERT INTO reservation(nom, prenom, email, phone, adresse, ville, cp, contry, room, DateStartISO, DateEndISO, nbnuits, nbpersonnes, message, date_reserv)
                    VALUES(:nom, :prenom, :email, :phone, :adresse, :ville, :cp, :contry, :room, :DateStartISO, :DateEndISO, :nbnuits, :nbpersonnes, :message, :date_reserv,)");
                $sth->bindParam(':nom',$nom);
                $sth->bindParam(':prenom',$prenom);
                $sth->bindParam(':email',$email);
                $sth->bindParam(':phone',$phone);
                $sth->bindParam(':adresse',$adresse);
                $sth->bindParam(':ville',$ville);
                $sth->bindParam(':cp',$cp);
                $sth->bindParam(':country',$country);
                $sth->bindParam(':room',$room);
                $sth->bindParam(':DateStartISO',$DateStartISO);
                $sth->bindParam(':DateEndISO',$DateEndISO);
                $sth->bindParam(':nbnuits',$nbnuits);
                $sth->bindParam(':nbpersonnes',$nbpersonnes);
                $sth->bindParam(':message',$message);
                $sth->bindParam(':date_reserv',$date_reserv);
                $sth->execute();
                //On renvoie l'utilisateur vers la page de remerciement
                header("Location:reservation-merci.html");
            }
            catch(PDOException $e){
                echo 'Erreur : '.$e->getMessage();
            }
        }else{
            header("Location:reservation.php");
        }
    ?>
    Avec ces codes j'ai ce messge d'erreur :
    Impossible de traiter les données. Erreur : SQLSTATE[HY093]: Invalid parameter number: parameter was not defined

Discussions similaires

  1. [MySQL] erreur du code du réservation d'un formulaire
    Par hela.sfar dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/04/2012, 18h09
  2. [MySQL] erreur sql dans formulaire pour inscription membre
    Par kate59 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/02/2008, 13h08
  3. Erreurs SQL Server
    Par ZuZu dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 09/10/2003, 16h23
  4. erreur SQL ...INSERT INTO
    Par naidinp dans le forum ASP
    Réponses: 20
    Dernier message: 18/09/2003, 11h38
  5. erreur sql loader et performance
    Par mobisky dans le forum SQL*Loader
    Réponses: 14
    Dernier message: 20/08/2003, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo