Je n'arrive pas a lire les données dans ma table

Résolu/Fermé
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - Modifié le 7 janv. 2018 à 23:08
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 - 8 janv. 2018 à 16:11
Bonsoir s'il vous plait je vous pris de m'aidez a résoudre ce problème qui ma tellement fatigué.
j'aicrée un formulaire de postulation de message, mais il y'a une erreur qui s'affiche quand je clique sur le bouton Poster votre message

( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\projet\forum_topic.php on line 42

voici mais deux fichier que j'ai utiliser pour crée ce système:

le premier fichier forum_topic.php :
<?php
include_once "codemenu.php";
include_once 'nouveautopic.php';
?>
<!DOCTYPE html>
<html>
<head>
 <title>Forum Topic</title>
 <meta charset="utf-8">
 <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
 <div class="page_principal1">
  <?php  ?>
   <section class="section_mobile">
 <form class="forum" method="POST">
  <table class="forum topic">
   <tr class="header_main">
    <th class="main_2" colspan="2">Nouveau Topic</th>
    <th></th>  
   </tr>

   <tr>
    <td>Sujet :</td>
    <td><input type="text" name="tsujet" size="70" maxlength="70" /></td>
   </tr>

   <tr>
    <td>Categories :</td>
    <td>
     <?= $categories ?>
    </td>
   </tr>

   <tr>
    <td>Sous-Categories :</td>
    <td>
     
     <select name="souscategories">

      
       <?php while($sc = $sousCategories->fetch() ) { ?>

       <option  value="<?= $sc["id"] ?>"><?= $sc["nom"] ?></option>
       <?php } ?>
 
     </select>

    </td>
   </tr>
 
   <tr>
    <td>Message :</td>
    <td><textarea name="tcontenu" cols="73" rows="4"></textarea></td>
   </tr>

   <tr>
    <td>Notification par mail :</td>
    <td><input type="checkbox" name="tmail" /></td>
   </tr>

   <tr>
    <td></td>
    <td><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>
</section>
</div>
</body>
</html>


et le fichier nouveauTopic.php inclus dans le fichier forum_topic.php

<?php
require_once 'dbconnectM.php';
if(isset($_GET['categories'])){
 $get_categorie = htmlspecialchars($_GET['categories']);
 $categories = $bdd->prepare("SELECT * FROM f_categories WHERE id = ? ");
 $categories->execute(array($get_categorie));
 $cat_exist = $categories->rowCount();

 if($cat_exist == 1){
  $categories = $categories->fetch();
  $categories = $categories['nom'];

  $sousCategories = $bdd->prepare("SELECT * FROM f_sous_categories  WHERE id_categorie = ? ORDER BY nom");
  $sousCategories->execute(array($get_categorie));


  if(isset($_SESSION['id'])){
    if (isset($_POST['tsubmit'])) {
     if(isset($_POST['tsujet'],$_POST['tcontenu'])){
      $sujet = htmlspecialchars($_POST['tsujet']);
      $contenu = htmlspecialchars($_POST['tcontenu']);
      
      $sousCategories = htmlspecialchars($_POST['souscategories']);


  

      $verif_sc = $bdd->prepare("SELECT id FROM f_sous_categories WHERE id = ? AND id_categorie = ?");
      $verif_sc->execute(array($sousCategories,$get_categorie));
      $verif_sc = $verif_sc->rowCount();

      if($verif_sc == 1){

       if(!empty($sujet) AND !empty($contenu)){
        if(strlen($sujet) <= 70){
         if(isset($_POST['tmail'])){
          $notifmail = 1;
         }
         else{
          $notifmail = 0;
         }

         $insert = $bdd->prepare("INSERT INTO f_topic (id_createur,sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())");
         $insert->execute(array($_SESSION['id'],$sujet,$contenu,$notifmail));

         $lt = $bdd->query("SELECT id FROM f_topic ORDER BY id DESC LIMIT 0,1");
         $lt = $lt->fetch();
         $id_topic = $lt['id'];

         $ins = $bdd->prepare("INSERT INTO f_topics_categorie (id_topic,id_categorie,id_sous_categories) VALUES(?,?,?) ");
         $ins->execute(array($id_topic,$get_categorie,$sousCategories));
        }
        else{
         $terror = "Votre sujet ne peut pas dépasser 70 carractère";
        }
        
       }
       else{
        $terror = "Veuillez compléter tous les champs";
       }

      }
      else{
        $terror = "Sous-catégories invalid";
      }
     }
    }
  }
  else{
   $terror = "Veuillez vous connecter pour poster votre topic";
  }

 }
 else{
  die("Categories invalid...");
 }

}else{
 die("Aucune catégorie définie...");
}


?>


JE VOUS REMERCIE!!
A voir également:

1 réponse

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
8 janv. 2018 à 10:55
Bonjour,

Tu utilises le même nom de variable ($sousCategories) pour faire ta requête

  $sousCategories = $bdd->prepare("SELECT * FROM f_sous_categories  WHERE id_categorie = ? ORDER BY nom");
  $sousCategories->execute(array($get_categorie));


... puis pour lui stocker une valeur...
  $sousCategories = htmlspecialchars($_POST['souscategories']);


Normal que ça plante ensuite... lorsque tu essaies de faire :
  <?php while($sc = $sousCategories->fetch() ) { ?>

0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 8 janv. 2018 à 10:58
Au passage ... je t'invite vivement à mettre en pratique
ceci : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Puis cela : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code


Ca fait déjà au moins 4 fois que je te les donne ces liens.... faudrait peut-être commencer à les mettre en place non ?
0
mobrobot Messages postés 173 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 8 mai 2023 1
8 janv. 2018 à 16:11
Merci Jordane45 j'ai puis résoudre le problème. Si je le fait mais pas sur mais page d’essai ,
je te le promet sa ne ce répète plus ?
0