Insertion base de données Mysql dans html
Fermé
clemichou
-
16 mai 2016 à 16:35
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 - 17 mai 2016 à 01:07
jordane45 Messages postés 38358 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 28 décembre 2024 - 17 mai 2016 à 01:07
A voir également:
- Insertion base de données Mysql dans html
- Formules excel de base - Guide
- Insertion liste déroulante excel - Guide
- Tnt base de données vide - Forum TNT / Satellite / Réception
- Exemple base de données access à télécharger gratuit ✓ - Forum Logiciels
- Editeur html - Télécharger - HTML
6 réponses
Tomy2e
Messages postés
816
Date d'inscription
jeudi 21 février 2013
Statut
Membre
Dernière intervention
18 août 2016
858
16 mai 2016 à 18:08
16 mai 2016 à 18:08
Bonjour, est-ce qu'on pourrait avoir un aperçu de ton code ?
clemichou27
Messages postés
2
Date d'inscription
lundi 16 mai 2016
Statut
Membre
Dernière intervention
16 mai 2016
Modifié par jordane45 le 16/05/2016 à 21:14
Modifié par jordane45 le 16/05/2016 à 21:14
Voilà la page du forum de Paris
EDIT : Ajout des balises de code.
<?php include("forum_france.php"); ?> <?php include("forum_france_traitement.php"); ?> <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="screen" type="text/css" title="pagecss" href="style.css"/> <head> <title>Forum Paris</title> <link rel="shortcut icon" href="img/avionlogo.jpg" type="image/x-icon" /><!--affiche un logo à coté du nom de l'ongelt--> </head> <body> <h1>Faites nous part de votre avis</h1> <form method="post" action="traitement"> <!--action: page ou le formulaire sera envoyé--> <label for="prenom">Entrez votre prénom</label> <!-- décrire à l'utilisateur ce qu'il doit rentrer dans chaque champs (ici: "prénom")--> <input type="text" id="prenom" name="prenom" autofocus="autofocus" placeholder="Ex: Alizée" required="pseudo"><br> <!--input type text: défini un champs de données monoligne ou l'on peut rentrer du texte, name: sert à afficher l'information correspondante de l'utilisateur sur le formulaire reçu (ex: nom...)et autofocus permet que lorqu'on charge la page le focus soit présent dans le premier champs--> <label for="motdepasse">Saisir un mot de passe</label> <input type="password" id="motdepasse" name="motdepasse" required="required"><br> <!--requited: permet d'obliger l'utilisateur à remplir le champs sinon la page n'est pas envoyée--> As-tu aimé ce voyage ? <br> <input type="radio" id="j'aime" name="plu ou pas" value="j'aime"> <!--type radio permet de demander à l'utilisateur de choisir un choix parmi plusieurs choix proposés--> <label for="j'aime"> J'aime</label><br> <input type="radio" id="j'aime pas" name="plu ou pas" value="j'aime pas"> <label for="j'aime pas"> J'aime pas </label><br> Qu'avez-vous visité ? <br> <input type="checkbox" name="visites" value="toureiffel" id="toureiffel"><!--checkbox permet à l'utilisateur de choisir de zéro à plusieurs choix parmi les différents choix proposés--> <label for="toureiffel"> Tour Eiffel</label><br> <input type="checkbox" name="visites" value="museedulouvre" id="museedulouvre"> <label for="museedulouvre"> Musée du Louvre</label><br> <input type="checkbox" name="visites" value="centrepompidou" id="centrepompidou"> <label for="centrepompidou"> Centre Pompidou</label><br> <input type="checkbox" name="visites" value="muséedorsay" id="muséedorsay"> <label for="muséedorsay"> Musée d'Orsay</label><br> <input type="checkbox" name="visites" value="chateauversailles" id="chateauversailles"> <label for="chateauversailles"> Château de Versailles</label><br> <input type="checkbox" name="visites" value="cathedralenotredame" id="cathedralenotredame"> <label for="cathedralenotredame"> Cathédrale de Notre Dame</label><br> <input type="checkbox" name="visites" value="pantheon" id="pantheon"> <label for="pantheon"> Panthéon</label><br> <input type="checkbox" name="visites" value="avenuedeschampselysees" id="avenuedeschampselysees"> <label for="avenuedeschampselysees"> Avenue des Champs-Elysées</label><br> <label for="nombre">Mettre une note sur 20</label> <input type="number" name="nombre" id="nombre" min="0" max="20" required="required"><br> <!--choisir un nombre entre 1 et 20--> <label for="commentaires">Commentaires</label> <textarea id="commentaires" name="commentaires" required="message"></textarea><br><!-- text area: sert à créer un champs de texte multiligne pour mettre un commentaire ou une présentation--> <!-- lier label et input ainsi que label et textearea grâce à for et id permet que lorssqu'on clique sur prénom par exemple le curseur se mette automatiquement sur le champs ou taper le texte--> <input type="submit" value="Envoyer"> <!--bouton envoyer, value: indiquer une valeur à l'interieur du bouton--> </form> </body> </html>
EDIT : Ajout des balises de code.
Tomy2e
Messages postés
816
Date d'inscription
jeudi 21 février 2013
Statut
Membre
Dernière intervention
18 août 2016
858
Modifié par Tomy2e le 16/05/2016 à 18:35
Modifié par Tomy2e le 16/05/2016 à 18:35
A priori je vois pas de soucis dans ton code HTML, et vu que le problème a l'air de venir du PHP ça serait bien que tu mettes ton code PHP (forum_france.php & forum_france_traitement.php) en prenant soin de cacher les identifiants de la BDD MySQL et en utilisant les balises de code du forum :)
https://nsa37.casimages.com/img/2016/05/16/160516064255934353.png
EDIT: Il y a (probablement) une erreur dans l'action de ton formulaire (balise <form>), si le traitement est sur la même page que ton formulaire, mets plutôt
https://nsa37.casimages.com/img/2016/05/16/160516064255934353.png
EDIT: Il y a (probablement) une erreur dans l'action de ton formulaire (balise <form>), si le traitement est sur la même page que ton formulaire, mets plutôt
action=""
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
16 mai 2016 à 21:19
16 mai 2016 à 21:19
Bonjour,
"traitement" .. ne correspond à rien.
Soit tu laisse la propriété action à vide (comme le dit Tomy) soit tu y mets le nom du fichier PHP servant à faire le traitement du formulaire : forum_france_traitement.php (et donc dans ce cas... ne pas l'inclure dans la même page que ton formulaire.)
Pour le reste ...
Sur tes fichiers php .. penses à mettre en première ligne ceci :
Cela te permettra d'afficher les éventuelles erreurs PHP.
PS: Au cas où ... si tu as utilisé l'ancienne extension mysql pour te connecter à ta BDD ... je t'invite à lire ceci :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Puis à passer à mysqli ou PDO.
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
<form method="post" action="traitement"> <!--action: page ou le formulaire sera envoyé-->
"traitement" .. ne correspond à rien.
Soit tu laisse la propriété action à vide (comme le dit Tomy) soit tu y mets le nom du fichier PHP servant à faire le traitement du formulaire : forum_france_traitement.php (et donc dans ce cas... ne pas l'inclure dans la même page que ton formulaire.)
Pour le reste ...
Sur tes fichiers php .. penses à mettre en première ligne ceci :
<?php error_reporting(E_ALL);
Cela te permettra d'afficher les éventuelles erreurs PHP.
PS: Au cas où ... si tu as utilisé l'ancienne extension mysql pour te connecter à ta BDD ... je t'invite à lire ceci :
https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Puis à passer à mysqli ou PDO.
https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
clemichou27
Messages postés
2
Date d'inscription
lundi 16 mai 2016
Statut
Membre
Dernière intervention
16 mai 2016
16 mai 2016 à 22:14
16 mai 2016 à 22:14
Merci beaucoup d'avoir pris le temps de me répondre, voici la page forum_france.php :
et celui de la page forum_france_traitement.php :
Désolé si j'ai fait de grosses erreurs mais je ne comprends pas grand chose en bases de données, j’essaye donc de me débrouiller comme je peux :/
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<?php //ouvre une balise php
class Forum_france{ //créé une class
public $id; //crée un attribut pour la colonne de la table renseignée
public $pseudo;
public $message;
public $date_du_post;
public function inserer() {
$connection = new PDO('mysql:dbname=forum_france;host=127.0.0.1', '','');
$connection->exec("INSERT INTO forum_france (id,pseudo) VALUES ('" . $this->int. "','" .
$this->tinytext. "')");
}
}
?>;
</body>
et celui de la page forum_france_traitement.php :
<?php
require 'forum_france.php'; //Appel du fichier contenant la class
$utilisateur = new forum_france();
$utilisateur->id = $_POST['id'];
$utilisateur->pseudo = $_POST['pseudo'];
$utilisateur->message = $_POST['message'];
$utilisateur->date_du_post = $_POST['date_du_post'];
$utilisateur->inserer(); //on s'insère en base de données
?>
Désolé si j'ai fait de grosses erreurs mais je ne comprends pas grand chose en bases de données, j’essaye donc de me débrouiller comme je peux :/
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
Modifié par jordane45 le 16/05/2016 à 23:16
Modifié par jordane45 le 16/05/2016 à 23:16
Pas de HTML dans un fichier PHP de class.
Comme ceci :
Ensuite, dans le fichier forum_france_traitement.php, pense à récupérer PROPREMENT
les variables AVANT de les utiliser
Et dans ton fichier HTML aucun include n'est nécéssaire
Juste mettre le bon fichier dans le "action" de la balise form
Comme ceci :
<?php //ouvre une balise php class Forum_france{ //créé une class public $id; //crée un attribut pour la colonne de la table renseignée public $pseudo; public $message; public $date_du_post; private $bdd; //constructeur function __construct(){ $this->connexion(); //appelle la fonction de connexion à la BDD lors du NEW.... } //Fonction de connexion à la BDD private function connexion(){ try{ $this->bdd = new PDO('mysql:dbname=forum_france;host=127.0.0.1', '',''); }catch(Exception $e){ echo "Erreur !" .$e->getMessage(); } } //fonction pour insérer le commentaire/pseudo... public function inserer() { $sql = "INSERT INTO forum_france(pseudo,message,date_du_post) VALUES (:pseudo,:message,:date_du_post)" $variables = array(":pseudo"=>$this->pseudo,":message"=>$this->message,":date_du_post:"=>$this->date_du_post) try{ $prepare = $this->bdd->prepare($sql); $prepare->execute($variables); return true; }catch(Exception $e){ echo "Erreur !" .$e->getMessage(); return false; } } }//fin de la class ?>
Ensuite, dans le fichier forum_france_traitement.php, pense à récupérer PROPREMENT
les variables AVANT de les utiliser
<?php error_reporting(E_ALL); //affichage des erreurs PHP si il y en a require 'forum_france.php'; //Appel du fichier contenant la class $utilisateur = new Forum_france(); $utilisateur->id = !empty($_POST['id']) ? $_POST['id'] : 0; $utilisateur->pseudo = isset($_POST['pseudo']) ? $_POST['pseudo'] : NULL; $utilisateur->message = !empty($_POST['message']) ? $_POST['message'] : ''; $utilisateur->date_du_post = !empty($_POST['date_du_post']) ? $_POST['date_du_post'] : ''; if($utilisateur->pseudo ){ if($utilisateur->inserer()){ //on s'insère en base de données echo "Message Enregistré !"; }else{ echo "Erreur ! Le message n'a pas été enregistré"; } }else{ echo "Aucun utilisateur renseigné !"; } ?>
Et dans ton fichier HTML aucun include n'est nécéssaire
Juste mettre le bon fichier dans le "action" de la balise form
<!DOCTYPE html> <html> <head> <title>Forum Paris</title> <link rel="shortcut icon" href="img/avionlogo.jpg" type="image/x-icon" /><!--affiche un logo à coté du nom de l'ongelt--> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="screen" type="text/css" title="pagecss" href="style.css"/> </head> <body> <h1>Faites nous part de votre avis</h1> <form method="post" action="forum_france_traitement.php"> <!--action: page ou le formulaire sera envoyé--> <label for="prenom">Entrez votre prénom</label> <!-- décrire à l'utilisateur ce qu'il doit rentrer dans chaque champs (ici: "prénom")--> <input type="text" id="prenom" name="prenom" autofocus="autofocus" placeholder="Ex: Alizée" required="pseudo"><br> <!--input type text: défini un champs de données monoligne ou l'on peut rentrer du texte, name: sert à afficher l'information correspondante de l'utilisateur sur le formulaire reçu (ex: nom...)et autofocus permet que lorqu'on charge la page le focus soit présent dans le premier champs--> <label for="motdepasse">Saisir un mot de passe</label> <input type="password" id="motdepasse" name="motdepasse" required="required"><br> <!--requited: permet d'obliger l'utilisateur à remplir le champs sinon la page n'est pas envoyée--> As-tu aimé ce voyage ? <br> <input type="radio" id="j'aime" name="plu ou pas" value="j'aime"> <!--type radio permet de demander à l'utilisateur de choisir un choix parmi plusieurs choix proposés--> <label for="j'aime"> J'aime</label><br> <input type="radio" id="j'aime pas" name="plu ou pas" value="j'aime pas"> <label for="j'aime pas"> J'aime pas </label><br> Qu'avez-vous visité ? <br> <input type="checkbox" name="visites" value="toureiffel" id="toureiffel"><!--checkbox permet à l'utilisateur de choisir de zéro à plusieurs choix parmi les différents choix proposés--> <label for="toureiffel"> Tour Eiffel</label><br> <input type="checkbox" name="visites" value="museedulouvre" id="museedulouvre"> <label for="museedulouvre"> Musée du Louvre</label><br> <input type="checkbox" name="visites" value="centrepompidou" id="centrepompidou"> <label for="centrepompidou"> Centre Pompidou</label><br> <input type="checkbox" name="visites" value="muséedorsay" id="muséedorsay"> <label for="muséedorsay"> Musée d'Orsay</label><br> <input type="checkbox" name="visites" value="chateauversailles" id="chateauversailles"> <label for="chateauversailles"> Château de Versailles</label><br> <input type="checkbox" name="visites" value="cathedralenotredame" id="cathedralenotredame"> <label for="cathedralenotredame"> Cathédrale de Notre Dame</label><br> <input type="checkbox" name="visites" value="pantheon" id="pantheon"> <label for="pantheon"> Panthéon</label><br> <input type="checkbox" name="visites" value="avenuedeschampselysees" id="avenuedeschampselysees"> <label for="avenuedeschampselysees"> Avenue des Champs-Elysées</label><br> <label for="nombre">Mettre une note sur 20</label> <input type="number" name="nombre" id="nombre" min="0" max="20" required="required"><br> <!--choisir un nombre entre 1 et 20--> <label for="commentaires">Commentaires</label> <textarea id="commentaires" name="commentaires" required="message"></textarea><br><!-- text area: sert à créer un champs de texte multiligne pour mettre un commentaire ou une présentation--> <!-- lier label et input ainsi que label et textearea grâce à for et id permet que lorssqu'on clique sur prénom par exemple le curseur se mette automatiquement sur le champs ou taper le texte--> <input type="submit" value="Envoyer"> <!--bouton envoyer, value: indiquer une valeur à l'interieur du bouton--> </form> </body> </html>
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
17 mai 2016 à 01:07
17 mai 2016 à 01:07
NB:
Par défaut, PDO n'affiche pas les erreurs.
Pour cela, il faut modifier le code de connexion à la bdd comme ceci :
Par défaut, PDO n'affiche pas les erreurs.
Pour cela, il faut modifier le code de connexion à la bdd comme ceci :
private function connexion(){ try{ $this->bdd = new PDO('mysql:dbname=forum_france;host=127.0.0.1', '',''); $this->bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); }catch(PDOException $e){ echo "<br>Erreur lors de la connexion à la bdd !".$e->getMessage(); } }