Problème pour insérer des entrées dans ma base de données MySQL
Résolu
kalen_82
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
kalen_82 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
kalen_82 Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Problème pour insérer des entrées dans ma base de données MySQL
- Fuite données maif - Guide
- Insérer vidéo dans powerpoint - Guide
- Base de registre - Guide
- Insérer signature word - Guide
- Comment insérer des points de suite sur word - Guide
7 réponses
Bonjour,
Ton code devrait planter et t'afficher une erreur, tu as oublié une parenthèse dans le deuxième if.
Je ne jugerai pas le reste du code, je n'ai pas pratiqué le PHP depuis un moment.
Ton code devrait planter et t'afficher une erreur, tu as oublié une parenthèse dans le deuxième if.
Je ne jugerai pas le reste du code, je n'ai pas pratiqué le PHP depuis un moment.
Bonjour,
Commence par activer l'affichage des erreurs PHP dans ton script
Puis active l'affichage des erreurs PDO.
Pour ça, appliques les consignes données ici https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Je t'invite également à vérifier que ton formulaire s'envoi bien en plaçant, avant ton if, un
Ensuite, rempli tes champs et cliques sur ton bouton submit.. puis regarde ce que ce var_dump t'affiche.
Dernière vérification:
Assures toi que ton fichier est bien encodé en utf8 sans BOM
voir chapitre 1 de ce lien :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Commence par activer l'affichage des erreurs PHP dans ton script
Puis active l'affichage des erreurs PDO.
Pour ça, appliques les consignes données ici https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Je t'invite également à vérifier que ton formulaire s'envoi bien en plaçant, avant ton if, un
var_dump($_POST);
Ensuite, rempli tes champs et cliques sur ton bouton submit.. puis regarde ce que ce var_dump t'affiche.
Dernière vérification:
Assures toi que ton fichier est bien encodé en utf8 sans BOM
voir chapitre 1 de ce lien :
https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
Bonjour,
j'ai ajouter tout ce que vous m'avez dis dans mon code,
mon code :
ça affiche bien un tableau avec:
, aucune erreur n'apparait mais ça ne marche toujours pas

je suis perdu je comprends pas :(
j'ai ajouter tout ce que vous m'avez dis dans mon code,
mon code :
<!DOCTYPE html> <html> <head> <title>Test</title> <meta charset="utf-8"> </head> <body> <form method="POST" action=""> <input type="text" name="titre" placeholder="Titre..."><br> <input type="text" name="contenu" placeholder="Article..."><br> <input type="text" name="date_time_publication" placeholder="Date..."><br> <input type="submit" name="OK"> </form> <?php header( 'content-type: text/html; charset=utf-8' ); error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); var_dump($_POST); if (isset($_POST['OK'])){ $sql="INSERT INTO articles(id,titre, contenu, date_time_publication) VALUES(:id,:titre, :contenu, :date_time_publication)"; $datas=array(':id'=>NULL,':titre'=>$_POST['titre'], ':contenu'=>$_POST['contenu'], ':date_time_publication'=>$_POST['date_time_publication']); try{ $bdd=new PDO("mysql:host=127.0.0.1;dbname=test;charset=utf8","root",""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); }catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } if (isset($_POST['titre']) AND isset($_POST['article']) AND isset($_POST['categorie'])){ try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } } ?> </body> </html>
ça affiche bien un tableau avec:
var_dump($_POST);
, aucune erreur n'apparait mais ça ne marche toujours pas

je suis perdu je comprends pas :(
On place le PHP avant le HTML en général : C'est plus propre et plus facilement maintenable
On récupère proprement els variables avant de les utiliser
En gros, ton code devrait ressembler à ça :
On récupère proprement els variables avant de les utiliser
En gros, ton code devrait ressembler à ça :
<?php header( 'content-type: text/html; charset=utf-8' ); //-----------------------------------------------// // Affichage des erreurs PHP //-----------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-----------------------------------------------// //connexion à la bdd //-----------------------------------------------// try{ $bdd=new PDO("mysql:host=127.0.0.1;dbname=test;charset=utf8","root",""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); }catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //-----------------------------------------------// //traitement du formulaire //-----------------------------------------------// if (isset($_POST['OK'])){ //récupération propre des variables AVANT de les utiliser $titre = !empty($_POST['titre']) ? $_POST['titre']: NULL; $article = !empty($_POST['article']) ? $_POST['article']: NULL; $categorie = !empty($_POST['categorie']) ? $_POST['categorie']: NULL; $date_time_publication = !empty($_POST['date_time_publication']) ? $_POST['date_time_publication']: date('Y-m-d H:i:s'); if (isset($_POST['titre']) AND isset($_POST['article']) AND isset($_POST['categorie'])){ $sql = "INSERT INTO articles (titre, contenu, date_time_publication) VALUES (:titre, :contenu, :date_time_publication)"; $datas = array(':titre'=>$titre, ':contenu'=>$contenu, ':date_time_publication'=>$date_time_publication); try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo " Les datas : " ; print_r($datas); } } } ?> <!DOCTYPE html> <html> <head> <title>Test</title> <meta charset="utf-8"> </head> <body> <form method="POST" action=""> <input type="text" name="titre" placeholder="Titre..."><br> <input type="text" name="contenu" placeholder="Article..."><br> <input type="text" name="date_time_publication" placeholder="Date..."><br> <input type="submit" name="OK"> </form> </body> </html>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je viens de rajouter quelques chams à mon formulair, j'ai vérifié partout et je ne trouve pas d'erreurs, pourtant ça na marche plus :(
ca affiche une erreur:
Erreur ! SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
voici mon code:
J'espère que vous pourrez m'aider.
ca affiche une erreur:
Erreur ! SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
voici mon code:
<?php header( 'content-type: text/html; charset=utf-8' ); //-----------------------------------------------// // Affichage des erreurs PHP //-----------------------------------------------// error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //-----------------------------------------------// //connexion à la bdd //-----------------------------------------------// try{ $bdd=new PDO("mysql:host=127.0.0.1;dbname=test;charset=utf8","root",""); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); }catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //-----------------------------------------------// //traitement du formulaire //-----------------------------------------------// if (isset($_POST['OK'])){ //récupération propre des variables AVANT de les utiliser $titre = !empty($_POST['titre']) ? $_POST['titre']: NULL; $contenu = !empty($_POST['contenu']) ? $_POST['contenu']: NULL; $catégorie =!empty($_POST['catégorie']) ? $_POST['catégorie']: NULL; $livre =!empty($_POST['livre']) ? $_POST['livre']: NULL; $date_time_publication =date('Y-m-d H:i:s'); if (isset($_POST['titre']) AND isset($_POST['contenu']) AND isset($_POST['catégorie']) AND isset($_POST['livre'])){ $sql = "INSERT INTO articles (id,titre, contenu, date_time_publication,catégorie,vues,livre) VALUES (:id,:titre, :contenu, :date_time_publication,:catégorie,:vues,:livre)"; $datas = array(':id'=>NULL,':titre'=>$titre, ':contenu'=>$contenu, ':date_time_publication'=>$date_time_publication,':catégorie'=>$catégorie,':vues'=>0,':livre'=>$livre); try{ $requete = $bdd -> prepare($sql) ; $requete->execute($datas) ; $req=$bdd->query('SELECT * FROM articles ORDER BY date_time_publication DESC'); while ($result=$req->fetch()) { echo $result['id'].'. '.$result['titre'].'<br>'.$result['contenu'].'//'.$result['date_time_publication']; echo '<br><br>'; } }catch(Exception $e){ // en cas d'erreur : echo " Erreur ! ".$e->getMessage(); echo '<br>'; echo " Les datas : " ; print_r($datas); } } } ?> <!DOCTYPE html> <html> <head> <title>Test</title> <meta charset="utf-8"> <style> td:nth-child(1) { text-align: right; } </style> </head> <body> <form method="POST" action="" enctype="multipart/form-data"> <table> <tr> <td><label>Titre:</label></td> <td><input type='text' name="titre" placeholder='Titre...'/></td> </tr> <tr> <td><label>Article:</label></td> <td><textarea name="contenu" placeholder='Article...'></textarea></td> </tr> <tr> <td><label>Image1:</label></td> <td><input type="file" name="photo"></td> </tr> <tr> <td><label>Image2:</label></td> <td><input type="file" name="photo2"></td> </tr> <tr> <td><label>Image3:</label></td> <td><input type="file" name="photo3"></td> </tr> <tr> <td><label>Image4:</label></td> <td><input type="file" name="photo4"></td> </tr> <tr> <td><label>Catégorie:</label></td> <td><select name="catégorie"> <option value="Santé_et_Bien-être">Santé et bien-être</option> <option value="Productivité">Productivité</option> <option value="Persuasion">Persuasion</option> </select></td> </tr> <tr> <td><label>Livre:</label></td> <td> <select name="livre"> <option value="59s_pour_prendre_les_bonnes_décisions.jpg">59s pour prendre les bonnes décisions</option> <option value="20_règles_d'or_pour_voir_la_vie_en_rose.jpg">20 règles d'or pour voir la vie en rose</option> <option value="l'art_de_la_niaque.jpg">l'art de la niaque</option> </select> </td> </tr> <tr> <td><label>Description:</label></td> <td><textarea name='description' placeholder='Description...'></textarea> </td> </tr> <tr> <td></td> <td><input type='submit' value='Envoyer!' name="OK"/></td> </tr> </table> </form> </body> </html>
J'espère que vous pourrez m'aider.