Je rencontre un problème sur la création de mes topics

Résolu/Fermé
aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021 - 11 janv. 2021 à 00:58
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 11 janv. 2021 à 20:41
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...


Configuration: Windows / Chrome 87.0.4280.141
A voir également:

5 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 325
11 janv. 2021 à 01:06
Bonjour,

Pense à attribuer à ton code la couleur syntaxique et la forme correcte avec le bouton
<>
.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 11 janv. 2021 à 18:12
0
aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021
11 janv. 2021 à 18:03
<?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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 janv. 2021 à 18:14
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.
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 janv. 2021 à 18:35
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...
0
aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
11 janv. 2021 à 19:44
J'ai donc appliqué ce code comme tu me le conseillais et ça ne m'affiche aucune erreur
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021
11 janv. 2021 à 19:46
Et je t'ai également demandé de nous partagé le code une fois modifié ...
0
aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
Modifié le 11 janv. 2021 à 19:48
<?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 !!!!

0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 janv. 2021 à 20:05
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aure_4600 Messages postés 5 Date d'inscription lundi 11 janvier 2021 Statut Membre Dernière intervention 11 janvier 2021
11 janv. 2021 à 20:18
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
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
11 janv. 2021 à 20:41
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 :-)
0