Bonsoir. Je fais en ce moment un portfolio avec Bootstrap et en PHP. Dans ce portfolio, il y a une page de contact avec un formulaire de contact que voici :
Dans le fichier "_debut.inc.php"contient l'entête de la page (le menu de navigation notamment) et le fichier "_fin.inc.php" le footer avec l'année et mon nom du créateur du site uniquement
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 <?php include '_debut.inc.php'; //algorithme permettant d'inserer dans la base de données les messages envoyés //Si les champs du formulaire de contact sont remplies, tu affectes dans la variable resultat les données saisies. La méthode insertion se chargera d'insérer dans la base de données les données saisies if (isset($_POST["email"]) && isset($_POST["tel"]) && isset($_POST["message"])) { $resultat = insertion($_POST["email"], $_POST["tel"], $_POST["message"]); /* if ($resultat == true) { $_SESSION["user"] = $_REQUEST["user"]; $_SESSION["mdp"] = $_REQUEST["mdp"]; } */ } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags --> <meta name="description" content=""> <meta name="author" content=""> <link rel="icon" href="../../favicon.ico"> <title>Portfolio de Honoré Rasamoelina</title> <!-- Bootstrap core CSS --> <link href="../../dist/css/bootstrap.min.css" rel="stylesheet"> <!-- IE10 viewport hack for Surface/desktop Windows 8 bug --> <link href="../../assets/css/ie10-viewport-bug-workaround.css" rel="stylesheet"> <!-- Custom styles for this template --> <link href="jumbotron.css" rel="stylesheet"> <!-- Just for debugging purposes. Don't actually copy these 2 lines! --> <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]--> <script src="../../assets/js/ie-emulation-modes-warning.js"></script> <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> <h1><center>Pour me contacter</h1></center> <div class="container"> <h1><small>Pour me contacter, veuiller remplir ce formulaire</small></h1> </div> <div class="container"> <?php if (isset($_POST["email"]) && (isset($_POST["tel"]) && (isset($_POST["message"])))): ?> <div class="alert alert-success" role="alert"><?php echo"Bravo, votre message a été envoyer à l'administrateur. Il vous répondra dans les plus brefs délai."; ?></div> <?php endif; ?> <?php if (!isset($_POST["email"]) && (!isset($_POST["tel"]) && (!isset($_POST["message"])))): ?> <div class="alert alert-danger" role="alert"><?php echo"Désolé mais votre message ne peut être envoyer car tous les champs ne sont pas rempli"; ?></div> <?php endif; ?> </div> <div class="container"> <form method="POST"> <div class="form-group"> <input type="email" name="email" placeholder="Votre Email" class="form-control"> </div> <div class="form-group"> <input type="tel" name="tel" placeholder="Votre téléphone" class="form-control"> </div> <div class="form-group"> <input type="textarea" name="message" placeholder="Votre message" class="form-control"> </div> <button type="submit" name="submit" class="btn btn-info">Envoyer</button> </form> </div> <?php include '_fin.inc.php'; ?>
Les données saisies dans les champs doivent être insérées dans une base de données "contact". J'utilise PDO pour interagir dans une base de données appelée portfolio et contenant une table contact. Dans le fichier "_gestionBase.inc.php" contient l'ensemble des fonctions PDO dont celle qui doit insérer les enregistrements du formulaire dans la table "contact" avec les colonnes "email","tel" et "message". C'est la fonction "insertion" qui doit normalement s'en charger. Voici le fichier "_gestionBase.inc.php" :
Or malheureusement, une seule ligne s'est insérée dans la table "contact". Et à chaque démonstration je ne sais pas pourquoi, aucune ligne ne s'insère dans la table.
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 <?php /* __gestionBase.inc.php * Ce fichier regroupe l'ensemble des fonctions utilisées pour la connexion et la gestion de la base de données * */ /* La première fonction regroupe la fonction se connectant à la base de données * Elle se connecte à la base de données "portfolio" du serveur de la base de données MySQL et retourne un gestionnaire de connexion * Elle retourne un objet PDO en cas de succès et false en cas d'échec */ function gestionnaireDeConnexion() { $pdo = new PDO('mysql:host=localhost;dbname=portfolio; charset=utf8', 'root', ''); return $pdo; } function insertion($email, $tel, $message) { $pdo = gestionnaireDeConnexion(); $email = $_POST['email']; $tel = $_POST['tel']; $message = $_POST['message']; $sql = "INSERT INTO contact (email, tel, message) VALUES (:email, :tel, :message)"; $query = $pdo->prepare($sql); $query->bindParam(':email', $email); $query->bindParam(':tel', $tel); $query->bindParam(':message', $message); $query->execute(); $resultat = $query->fetchAll(); return $resultat; $query->closeCursor(); }
Pouvez-vous m'aider ?
Partager