Récupérer les saisies d'un formulaire et les enregistrer dans une table MySQL
Bonjour,
Novice en développement Web j'apprends petit à petit et j'en suis actuellement à l'apprentissage PHP et MySQL. Je développe un site test pour pratiquer. D'habitude j'arrive à comprendre mes erreurs tout seul mais là, je bloque. Je souhaite tout simplement récupérer des données saisies dans les champs d'un formulaire, pour les enregistrer dans les tables de ma base de donnée. Côté PHPMyAdmin les requêtes aboutissent sans souci. Cependant depuis mon code, j'ai cette erreur :
Citation:
Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe pr�s de '' � la ligne 1 in C:\wamp64\www\1er_site\contact.php on line 134
Ce qui fait que rien n'arrive dans ma table... J'ai sûrement d'autres petits bugs de second degré mais j'aimerais au moins que ma requête aboutisse et comprendre où est mon erreur. Je m'en remets donc aux expérimentés, si quelqu'un aurait la gentillesse de me dépanner ce serait sympa.
Voici mon code :
contact.php
Code:
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 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
| <?php
// Connexion à la bdd
require('connexion_bdd.php');
?>
<!DOCTYPE html>
<html lang='fr'>
<head>
<meta charset="UTF-8" />
<link rel="stylesheet" href="style.css" />
<title> Contact </title>
</head>
<body>
<!--Conteneur principal + header -->
<div id="bloc_page">
<?php include('menu.php'); ?>
<!--Formulaire-->
<section class="contact">
<form method="post" action="".php>
<h4>A quelle date souhaitez-vous réserver ?</h4>
<p>
<input type="date" name = 'date_resa' id='date_resa' value = "<?php echo $_POST['date_resa']?>"/>
</p>
<h4>Pour combien de personnes souhaitez-vous réserver ?</h4>
<p>
<input type="radio" name="nombre_personne" value="1 à 2"
id="1a2"/><label for="1a2">
1 à 2 personnes
</label><br />
<input type="radio" name="nombre_personne" value="3 à 4"
id="3a4"/><label for="3a4">
3 à 4 personnes
</label><br />
<input type="radio" name="nombre_personne" value="Plus de 5"
id="+de6"/><label for="+de6">
Plus de 5 personnes
</label><br />
</p>
<fieldset>
<legend>Vos coordonnées</legend>
<table>
<tr>
<td>
<label for="nom">Nom</label>
</td>
<td>
<input type="text" name="nom" id="nom" autofocus required
value = "<?php echo $_POST['nom']?>"/>
<!--autofocus pour charger le curseur directement dans le champs-->
<!--required pour obliger l'utilisateur à compléter le formulaire avant de l'envoyer-->
</td>
</tr>
<tr>
<td>
<label for="prenom">Prenom</label>
</td>
<td>
<input type="text" name="prenom" id="prenom" value = "<?php echo $_POST['prenom']?>" />
</td>
</tr>
<tr>
<td>
<label for="email">Email</label>
</td>
<td>
<input type="email" name="email" id="email" value = "<?php echo $_POST['email']?>"/>
</td>
</tr>
<tr>
<td>
<label for="telephone">Téléphone</label>
</td>
<td>
<input type="tel" name="tel" id="tel" value = "<?php echo $_POST['tel']?>" />
</td>
</tr>
<tr>
<td>
<input type="submit" value="ENVOYER"/>
</td>
</tr>
</table>
</fieldset>
</form>
</section>
<!--Footer-->
<?php include("footer.php"); ?>
</div>
</body>
</html>
<!-------------------------------------------P H P------------------------------------------->
<?php
// Vérification des saisies du formulaire
if
(
isset($_POST['date_resa']) &&
isset($_POST['nombre_personne']) &&
isset($_POST['nom']) &&
isset($_POST['prenom']) &&
isset($_POST['email']) &&
isset($_POST['tel'])
)
{
// Sécurisation des données
$date = $_POST['date_resa'];
$nombre_personne = $_POST['nombre_personne'];
$nom = addslashes(htmlspecialchars(htmlentities(trim($_POST['nom']))));
$prenom = addslashes(htmlspecialchars(htmlentities(trim($_POST['prenom']))));
$email = addslashes(htmlspecialchars(htmlentities(trim($_POST['email']))));
$tel = addslashes(htmlspecialchars(htmlentities(trim($_POST['tel']))));
// Si tous les champs sont remplis au bon format
if ($date)
{
if ($nombre_personne)
{
if ($nom)
{
if($prenom)
{
if (preg_match('#^[a-z0-9.-_]+@[a-z0-9.-_]{2,}\.[a-z]{2,4}$#', $email)
&& (filter_var($email, FILTER_VALIDATE_EMAIL)))
{
if (preg_match('#^0[1-68]([-. ][0-9]{2}){4}$#', $tel))
{
// Exécution de la requête pour valider le formulaire
$req = $bdd->prepare("INSERT INTO pyculinaire(date_resa, nombre_personne, nom, prenom, email, tel) VALUES(?,?,?,?,?,?");
$req->execute(array($date, $nombre_personne, $nom, $prenom, $email, $tel));
}
else
{
$message = 'Veuillez rentrer un numéro de téléphone valide';
}
}
else
{
$message = "Veuillez rentrer une adresse mail au format xxxx@xxx.xx";
}
}
else
{
$message = "Veuillez renseigner le champs 'Prénom'";
}
}
else
{
$message = "Veuillez renseigner le champs 'Nom'";
}
}
else
{
$message = "Pour combien de personnes souhaitez-vous réserver ?";
}
}
else
{
$message = "A quelle date souhaitez-vous réserver ?";
}
}
if(isset($message))
{
echo '<font color="red">' . $message ;
}
?> |
Et voici ma page connexion_bdd.php :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <?php
// Connexion à la base de donnée
try
{
$host = 'localhost';
$database = 'pysites';
$pseudo = 'root';
$password = '';
$bdd = new PDO('mysql:host='.$host.';dbname='.$database.'', $pseudo, $password);
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
}
catch(PDOException $e)
{
echo 'La base de donnée n\'est pas disponible pour le moment. <br />';
echo ''.$e->getMessage().'<br />';
echo 'Ligne : '.$e->getLine();
}
?> |
D'avance merci.