Bonjour,

Voila je rencontre un petit problème avec mon code.

<?php 

                          if(isset($_POST['titre']) AND isset($_POST['content']) AND isset($_POST['categorie']))
                          {
                            $titre = $_POST['titre'];
                            $content = $_POST['content'];
                            $categorie = $_POST['categorie'];

                            var_dump($_POST['categorie']);

                            $requete = $bdd->prepare('INSERT INTO actualites(titre, content,categorie) VALUES (:titre,:content, :categorie)');
                            $requete->execute(array(
                              "titre" => $titre,
                              "content" => $content,
                              "categorie" => $categorie
                              ));
                          }

                         ?>

                                      <!-- Edit profile form (not working)-->
                                       <form class="form-horizontal" method="post" action="ajout-actu.php" enctype="multipart/form-data">
                                          <!-- Title -->
                                          <div class="form-group">
                                            <label class="control-label col-lg-2" for="title">Titre</label>
                                            <div class="col-lg-10"> 
                                              <input type="text" class="form-control" id="title" value="" name="titre" required>
                                            </div>
                                          </div>   
                                          <!-- Content -->
                                          <div class="form-group">
                                            <label class="control-label col-lg-2" for="content">Contenu</label>
                                            <div class="col-lg-10">
                                              <textarea class="form-control" id="content" name="content" required></textarea>
                                            </div>
                                          </div>                           
                                          <!-- Cateogry -->

                                          <div class="form-group">
                                            <label class="control-label col-lg-2" for="title">Catégorie</label>
                                            <div class="col-lg-4"> 

                                              <select class="form-control input-lg m-bot15" name="categorie">
                                                  <?php

                                                  $reponse = $bdd->query("SELECT * FROM categorie");
                                                  while ($data = $reponse->fetch()) :

                                                  ?>

                                                  <option value="<?php $data['nom']; ?>"><?php echo ucfirst($data['nom']);?></option>
                                                  <?php endwhile ?>
                                                  </select>
                                            </div>
                                          </div> 
                                          <div>
                                              <label class="control-label col-lg-3" for="exampleInputFile"></label>
                                              <input type="file" name="img" class="btn-upload">
                                           </div>
                                           <div class="thumbnails">

                                          <!-- Buttons -->
                                          <div class="form-group">
                                             <!-- Buttons -->
                                                    <div class="col-lg-offset-2 col-lg-9">
                                                        <input type="submit" class="btn btn-primary" name="ajouter" value="Ajouter">
                                          </div>
                                      </form>

Je souhaite via ce formulaire stocker les infos saisies dans une BDD.
Le soucis est la balise select qui récupère les catégories dans une table catégorie.
Est ce la bonne méthode ?
quand je valide le formulaire rien ne se passe.
Par contre quand je supprime les lignes liées à la catégorie le formulaire est bien envoyé et les données sont bien enregistrées dans la BDD.
Donc le soucis vient de la récupération du champ catégorie.
J'ai cherché sur le net je n'ai rien trouvé.

Quand les lignes concernant la catégorie sont en place at que je fait un var_dump de $_POST['categorie']; il me met string(0)"".

merci

6 réponses


Arkantos
Réponse acceptée

Oula je viens de me faire avoir... Depuis quand faut-il survoler le code pour le voir en entier ? :p
Au final, le problème venait bien de tes balises option.
Et en fait, il n'y a pas vraiment d'erreur, car par défaut, si tu ne donnes pas de value à tes option, ces balises sont automatiquement numérotées de 0 à n il me semble. :)
Bonne journée,
Arkantos

macinsteph
Auteur
Réponse acceptée

salut j'ai trouvé d'où venait le soucis, en fait dans ma BDD j'avais écrit category avec un Y donc il ne le trouvait pas, quel quiche !!!
Maintenant il ne reste plus que l'upload d'image, je serais surement de retour pour ça !!!
merci à vous

"quand je valide le formulaire rien ne se passe."

C'est à dire ? Tes variables sont bien remplies ?

Bonjour,
Peut-on voir également ton code HTML ? Je n'en suis pas sûr, mais pour moi il y a fort à parier que ton problème se situe côté HTML dans un premier temps.
A bientôt,
Arkantos

Edit :
Pour ne pas te laisser dans le flou, deux choses sont à vérifier dans ton formulaire HTML :

  • l'attribut name dans ta balise select
  • l'attribut value de chacune de tes balises option (pour moi l'erreur est ici)

Bonjour @macinsteph

C'est normal, par ce que t'as oublié de faire un echo lors de l'affichage de tes categories.

// C'est 
<option value="<?php echo $data['nom']; ?>">
// Au lieu de 
<option value="<?php $data['nom']; ?>">

Bonjour,

Bon je viens de faire un var_dump de mes variables déclarées avant le INSERT INTO, elles me retourne bien mon contenu c'est à dire titre, content, et catégorie mais à la validation il n'y a pas d'insertion dans la BDD.

merci