Problème pour insérer des entrées dans ma base de données MySQL
Résolu/Fermé
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
-
Modifié le 21 avril 2021 à 20:59
kalen_82 Messages postés 7 Date d'inscription mercredi 21 avril 2021 Statut Membre Dernière intervention 8 mai 2022 - 22 avril 2021 à 19:51
kalen_82 Messages postés 7 Date d'inscription mercredi 21 avril 2021 Statut Membre Dernière intervention 8 mai 2022 - 22 avril 2021 à 19:51
A voir également:
- Problème pour insérer des entrées dans ma base de données MySQL
- Insérer une vidéo dans powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer table des matières word - Guide
- Formules excel de base - Guide
7 réponses
Utilisateur anonyme
Modifié le 21 avril 2021 à 21:18
Modifié le 21 avril 2021 à 21:18
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.
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
1
21 avril 2021 à 21:34
21 avril 2021 à 21:34
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
21 avril 2021 à 21:54
21 avril 2021 à 21:54
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
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
1
22 avril 2021 à 11:12
22 avril 2021 à 11:12
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 :(
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 avril 2021 à 11:20
22 avril 2021 à 11:20
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
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
1
22 avril 2021 à 17:10
22 avril 2021 à 17:10
J'ai pas très bien compris pourquoi mais maintenant ça marche :)
Merci beaucoup pour votre aide !
Merci beaucoup pour votre aide !
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
1
22 avril 2021 à 19:24
22 avril 2021 à 19:24
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.
jordane45
Messages postés
38358
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 décembre 2024
4 719
22 avril 2021 à 19:28
22 avril 2021 à 19:28
Bonjour
Ne mets pas de caractères accentués dans le nom de tes variable en PHP ni dans les attributs name de ton HTML
Ne mets pas de caractères accentués dans le nom de tes variable en PHP ni dans les attributs name de ton HTML
kalen_82
Messages postés
7
Date d'inscription
mercredi 21 avril 2021
Statut
Membre
Dernière intervention
8 mai 2022
1
22 avril 2021 à 19:51
22 avril 2021 à 19:51
D'accord merci beaucoup !