Je rencontre un problème sur la création de mes topics
Résolu
aure_4600
Messages postés
8
Statut
Membre
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Voici mon code :
<?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 */
/* 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>
Si quelqu'un aurait une idée...
Voici mon code :
<?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 */
/* 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>
Si quelqu'un aurait une idée...
Configuration: Windows / Chrome 87.0.4280.141
5 réponses
-
Bonjour,
Pense à attribuer à ton code la couleur syntaxique et la forme correcte avec le bouton<>
▼
.
-
Bonjour
Commence par ça
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
-
<?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-
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. -
Je t'ai demander d'appliquer le contenu de ce lien
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ça devrait permettre de voir les éventuelles erreurs au niveau de PDO...<?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 !!!!
-
-
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 :
<?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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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