Je rencontre un problème sur la création de mes topics [Résolu]
Signaler
aure_4600
jordane45
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
A voir également:
- Je rencontre un problème sur la création de mes topics
- Depot d'idée, Création site de rencontres ✓ - Forum - Créer un site
- Creation site de rencontre ✓ - Forum - Créer un site
- Création de site de rencontre ✓ - Forum - Créer un site
- Droit création site de rencontre gratuit ? ✓ - Forum - Créer un site
- Creation site de rencontre ✓ - Forum - Créer un site
5 réponses
Chris 94
- Messages postés
- 50446
- Date d'inscription
- mardi 8 janvier 2008
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
Bonjour,
Pense à attribuer à ton code la couleur syntaxique et la forme correcte avec le bouton
Pense à attribuer à ton code la couleur syntaxique et la forme correcte avec le bouton
<>
▼.
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
Bonjour
Commence par ça
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Cordialement,
Jordane
Commence par ça
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Cordialement,
Jordane
aure_4600
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
<?php session_start(); $bdd = new PDO('mysql:host=127.0.0.1;dbname=espace_membre', 'root', ''); /* Contient la connexion à la base de donnée $bdd */ /*https://forums.commentcamarche.net/forum/affich-37037374-je-rencontre-un-probleme-sur-la-creation-de-mes-topics?uXXZc-c11BSl0nYbpVfVq0CRQy3KtHnu6tbluZVvO64*/ /*PRIMFX*/ /* Traitement du formulaire de création de Topic */ if(isset($_SESSION['id'])) { if(isset($_POST['tsubmit'])) { if(isset($_POST['tsujet'],$_POST['tcontenu'])) { $sujet = htmlspecialchars($_POST['tsujet']); $contenu = htmlspecialchars($_POST['tcontenu']); if(!empty($sujet) AND !empty($contenu)) { if(strlen($sujet) <= 70) { if(isset($_POST['tmail'])) { $notif_mail = 1; } else { $notif_mail = 0; } $ins = $bdd->prepare('INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())'); $ins->execute(array($_SESSION['id'],$sujet,$contenu,$notif_mail)); } else { $terror = "Votre sujet ne peut pas dépasser 70 caractères"; } } else { $terror = "Veuillez compléter tous les champs"; } } } } else { $terror = "Veuillez vous connecter pour poster un nouveau topic"; } ?> <!DOCTYPE html> <html lang="fr"> <head> </head> <body> <form method="POST"> <table> <tr> <th colspan="2">Nouveau Topic</th> </tr> <tr> <td>Sujet</td> <td><input type="text" name="tsujet" size="70" maxlength="70" /></td> </tr> <tr> <td>Catégorie</td> <td> <select> <option>Catégorie 1</option> <option>Catégorie 2</option> <option>Catégorie 3</option> <option>Catégorie 1</option> </select> </td> </tr> <tr> <td>Sous-Catégorie</td> <td> <select> <option>Sous-Catégorie 1</option> <option>Sous-Catégorie 2</option> <option>Sous-Catégorie 3</option> <option>Sous-Catégorie 1</option> </select> </td> </tr> <tr> <td>Message</td> <td><textarea name="tcontenu"></textarea></td> </tr> <tr> <td>Me notifier des réponses par mail</td> <td><input type="checkbox" name="tmail" /></td> </tr> <tr> <td colspan="2"><input type="submit" name="tsubmit" value="Poster le Topic" /></td> </tr> <?php if(isset($terror)) { ?> <tr> <td colspan="2"><?= $terror ?></td> </tr> <?php } ?> </table> </form> </body> </html>
oui excuse moi voila le code
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
N'oublie pas de mettre en place le contenu du lien que je t'ai donné...
https://forums.commentcamarche.net/forum/affich-37037374-je-rencontre-un-probleme-sur-la-creation-de-mes-topics
Montre-nous ensuite le nouveau code que tu auras réalisé en expliquant le problème exact rencontré avec éventuellement les messages d'erreur affichés.
https://forums.commentcamarche.net/forum/affich-37037374-je-rencontre-un-probleme-sur-la-creation-de-mes-topics
Montre-nous ensuite le nouveau code que tu auras réalisé en expliquant le problème exact rencontré avec éventuellement les messages d'erreur affichés.
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
Je t'ai demander d'appliquer le contenu de ce lien
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Ça devrait permettre de voir les éventuelles erreurs au niveau de PDO...
https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Ça devrait permettre de voir les éventuelles erreurs au niveau de PDO...
aure_4600
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
J'ai donc appliqué ce code comme tu me le conseillais et ça ne m'affiche aucune erreur
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
Et je t'ai également demandé de nous partagé le code une fois modifié ...
aure_4600
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=espace_membre; 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 de création de Topic */ if(isset($_SESSION['id'])) { if(isset($_POST['tsubmit'])) { if(isset($_POST['tsujet'],$_POST['tcontenu'])) { $sujet = htmlspecialchars($_POST['tsujet']); $contenu = htmlspecialchars($_POST['tcontenu']); if(!empty($sujet) AND !empty($contenu)) { if(strlen($sujet) <= 70) { if(isset($_POST['tmail'])) { $notif_mail = 1; } else { $notif_mail = 0; } $ins = $bdd->prepare('INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())'); $ins->execute(array($_SESSION['id'],$sujet,$contenu,$notif_mail)); } else { $terror = "Votre sujet ne peut pas dépasser 70 caractères"; } } else { $terror = "Veuillez compléter tous les champs"; } } } } else { $terror = "Veuillez vous connecter pour poster un nouveau topic"; } ?> <!DOCTYPE html> <html lang="fr"> <head> </head> <body> <form method="POST"> <table> <tr> <th colspan="2">Nouveau Topic</th> </tr> <tr> <td>Sujet</td> <td><input type="text" name="tsujet" size="70" maxlength="70" /></td> </tr> <tr> <td>Catégorie</td> <td> <select> <option>Catégorie 1</option> <option>Catégorie 2</option> <option>Catégorie 3</option> <option>Catégorie 1</option> </select> </td> </tr> <tr> <td>Sous-Catégorie</td> <td> <select> <option>Sous-Catégorie 1</option> <option>Sous-Catégorie 2</option> <option>Sous-Catégorie 3</option> <option>Sous-Catégorie 1</option> </select> </td> </tr> <tr> <td>Message</td> <td><textarea name="tcontenu"></textarea></td> </tr> <tr> <td>Me notifier des réponses par mail</td> <td><input type="checkbox" name="tmail" /></td> </tr> <tr> <td colspan="2"><input type="submit" name="tsubmit" value="Poster le Topic" /></td> </tr> <?php if(isset($terror)) { ?> <tr> <td colspan="2"><?= $terror ?></td> </tr> <?php } ?> </table> </form> </body> </html>
EDIT : AJOUT DES BALISES DE CODE !!!!
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
Déjà.. on t'a demandé à plusieurs reprises d'utiliser les BALISES DE CODE pour poster ton code sur le forum .... visiblement ça ne veut pas entrer ....
J'ai édité ton message pour les mettre ( pour la dernière fois j'espère..)
Explications sur l'utilisation des balises de code ( à lire ENTIEREMENT et à APPLIQUER à l'avenir.. ) disponibles ici
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite.. tu n'as pas du lire complètement le lien que je t'avais donné... tu n'en a appliqué qu'une partie...
Bref, on va éviter de tourner en rond pendant toute la soirée..
Donc.. ton code devrait ressembler à ceci :
A noter que la fonction htmlspecialchars ne s'utilise que pour de l'affichage ... JAMAIS pour enregistrer les données en Bdd.
J'ai édité ton message pour les mettre ( pour la dernière fois j'espère..)
Explications sur l'utilisation des balises de code ( à lire ENTIEREMENT et à APPLIQUER à l'avenir.. ) disponibles ici
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Ensuite.. tu n'as pas du lire complètement le lien que je t'avais donné... tu n'en a appliqué qu'une partie...
Bref, on va éviter de tourner en rond pendant toute la soirée..
Donc.. ton code devrait ressembler à ceci :
<?php //Démarrage des sessions session_start(); //affichage des erreurs PBP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd try{ $bdd =new PDO('mysql:host=localhost;dbname=espace_membre; 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 lors de la conbnexion à la bdd : ' . $e->getMessage()); } //récupération PROPRE des variables AVANT de les utiliser $user_id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; $sujet = !empty($_POST['tsujet']) ? $_POST['tsujet'] : ""; $contenu = !empty($_POST['tcontenu']) ? $_POST['tcontenu'] : ""; $notif_mail = isset($_POST['tmail']) ? 1 : 0; // Affichage du contenu de la variable POST le temps des tests echo "<pre>"; print_r($_POST); echo "</pre>"; /* Traitement du formulaire de création de Topic */ if(isset($user_id)) { if(isset($_POST['tsubmit'])) { if(isset($sujet,$contenu)) { if(!empty($sujet) AND !empty($contenu)) { if(strlen($sujet) <= 70) { //préparation de la requête et des variables $sql = 'INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())'; $datas = array($user_id,$sujet,$contenu,$notif_mail); //Execution de la requete 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); } } else { $terror = "Votre sujet ne peut pas dépasser 70 caractères"; } } else { $terror = "Veuillez compléter tous les champs"; } } } } else { $terror = "Veuillez vous connecter pour poster un nouveau topic"; } ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Nouveau Topic</title> </head> <body> <form method="POST" action=""> <table> <tr> <th colspan="2">Nouveau Topic</th> </tr> <tr> <td>Sujet</td> <td><input type="text" name="tsujet" size="70" maxlength="70" value="<?php echo htmlspecialchars($sujet);?>"/></td> </tr> <tr> <td>Catégorie</td> <td> <select name="categorie"> <option selected="selected">Catégorie 1</option> <option>Catégorie 2</option> <option>Catégorie 3</option> </select> </td> </tr> <tr> <td>Sous-Catégorie</td> <td> <select name="souscategorie"> <option selected="selected">Sous-Catégorie 1</option> <option>Sous-Catégorie 2</option> <option>Sous-Catégorie 3</option> </select> </td> </tr> <tr> <td>Message</td> <td><textarea name="tcontenu"><?php echo htmlspecialchars($contenu);?></textarea></td> </tr> <tr> <td>Me notifier des réponses par mail</td> <td><input type="checkbox" name="tmail" value="1" /></td> </tr> <tr> <td colspan="2"><input type="submit" name="tsubmit" value="Poster le Topic" /></td> </tr> <?php if(!empty($terror)) { ?> <tr> <td colspan="2"><?php echo $terror; ?></td> </tr> <?php } ?> </table> </form> </body> </html>
A noter que la fonction htmlspecialchars ne s'utilise que pour de l'affichage ... JAMAIS pour enregistrer les données en Bdd.
aure_4600
- Messages postés
- 5
- Date d'inscription
- lundi 11 janvier 2021
- Statut
- Membre
- Dernière intervention
- 11 janvier 2021
Autant pour moi une erreur s'affiche : PDOException: SQLSTATE [HY000]: Erreur générale: 1364 Le champ 'resolu' n'a pas de valeur par défaut
jordane45
- Messages postés
- 31014
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 14 janvier 2021
Ben voila .. tu as la cause du souci...
Soit tu ajoutes le champ résolu dans ta requête d'insert ... soit tu lui mets une valeur par défaut dans la bdd
Pense à mettre le sujet en résolu justement :-)
Soit tu ajoutes le champ résolu dans ta requête d'insert ... soit tu lui mets une valeur par défaut dans la bdd
Pense à mettre le sujet en résolu justement :-)