Formulaire correct mais qui n'insère rien

Résolu/Fermé
Eylun Messages postés 5 Date d'inscription vendredi 4 avril 2014 Statut Membre Dernière intervention 24 novembre 2014 - Modifié par Eylun le 4/04/2014 à 20:03
Eylun Messages postés 5 Date d'inscription vendredi 4 avril 2014 Statut Membre Dernière intervention 24 novembre 2014 - 5 avril 2014 à 19:45
Bonjour,

Devant développer une interface personnalisée et personnalisable par l'utilisateur qui m'en a fait la demande, je bloque sur quelque chose, à nouveau sur un code où je ne vois vraiment pas mon erreur, après divers essais.

J'ai donc bel et bien mon fichier de connexion à la BDD en début de page, avant le doctype.

J'ai ensuite ce formulaire, suivi de son traitement. Le soucis est que je dois proposer ce projet le 7 avril qui arrive, c'est donc un peu urgent.

Un énorme merci d'avance à la personne qui saura m'éclairer sur cette erreur "invisible" !

Le Formulaire
<form method="post" action="ajouter_rubrique.php#ajout">
        <table>
         <tr>
          <td><b>Titre :</b></td>
          <td><input type="text" name="titre_rubrique" /></td>
         </tr>
         <tr>
          <td><b>Affilié à :</b></td>
          <td>
           <select name="affiliation">
            <?php
             $oui = "oui";
             $req_parties = $bdd->prepare("SELECT code,titre FROM contenus WHERE menu_principal=:oui");
             $req_parties->bindParam(":oui",$oui,PDO::PARAM_STR);
             $req_parties->execute();
             while($parties_site = $req_parties->fetch())
             {
              echo "<option value='".$parties_site['code']."'>".$parties_site['titre']."</option>";
             }
            ?>
           </select>
          </td>
         </tr>
         <tr>
          <td><b>Valeur URL :</b></td>
          <td>
           <input type="text" name="valeur_url_rubrique" />
          </td>
         </tr>
         <tr>
          <td></td>
          <td><input type="submit" value="Créer" /></td>
         </tr>
        </table>
</form>


Le traitement PHP :
if(!empty($_POST['titre_rubrique']) AND !empty($_POST['affiliation']) AND !empty($POST['valeur_url_rubrique']))
        {
         //Récupération des valeurs envoyés dans le formulaire.
         $new_titre_rubrique = $_POST['titre_rubrique'];
         $affiliation = $_POST['affiliation'];
         $code_new_rubrique = $_POST['valeur_url_rubrique'];
         
         //Convertit les caractères spéciaux en code html (é = é, etc...)
         $new_titre_rubrique = htmlentities($new_titre_rubrique, ENT_NOQUOTES, "UTF-8");
         //Comme on rentre des balises HTML, on les décode (à priori, on n'est pas censés en entrer ici, mais bon, au cas où...)
         $new_titre_rubrique = htmlspecialchars_decode($new_titre_rubrique);
         
         //Pour empêcher la création d'un doublon à cause de la touche F5 ou autre, on cherche ces mêmes valeurs en BDD.
         $req_donnee = $bdd->prepare("SELECT code FROM contenus WHERE code=:new_code");
         $req_donnee->bindParam(":new_code",$code_new_rubrique,PDO::PARAM_STR);
         $req_donnee->execute();
         $resultat_donnee = $req_donnee->fetch();
         $donnee = $resultat_donnee['code'];
         
         if($donnee != $code_new_rubrique)
         {
          //C'est bon, on peut insérer !
         
          //Insertion en BDD. On laisse menu_principal à non (par défaut en BDD).
          $page2 = "rubriques_site.php?rubrique=".$code_new_rubrique."";
          $creation_rubrique = $bdd->prepare("INSERT INTO contenus(categorie,code,titre,page) 
          VALUES(:categorie,:url_rubrique,:new_titre_rubrique,:page)");
          $creation_rubrique->bindParam(":categorie",$affiliation,PDO::PARAM_STR);
          $creation_rubrique->bindParam(":url_rubrique",$code_new_rubrique,PDO::PARAM_STR);
          $creation_rubrique->bindParam(":new_titre_rubrique",$new_titre_rubrique,PDO::PARAM_STR);
          $creation_rubrique->bindParam(":page",$page2,PDO::PARAM_STR);
          $creation_rubrique->execute();
          
          //Message de confirmation
          echo "<a name='ajout'></a>";
          echo "<b>Votre rubrique a bien été créée.</b>";
         }
         else
         {
          //Message d'erreur.
          echo "<a name='ajout'></a>";
          echo "<b><font color='red'>Cette donnée existe déjà !</font></b>";
         }
        }


Je vais continuer un peu de chercher de mon côté, mais j'ai vraiment du mal à trouver...

4 réponses

cyril1982 Messages postés 110 Date d'inscription vendredi 7 mars 2014 Statut Membre Dernière intervention 19 septembre 2018 12
4 avril 2014 à 20:52
Bonjour,

Tu peux appeler la méthode errorInfo afin de voir s'il n'y a pas un problème avec ton insert.
0
Eylun Messages postés 5 Date d'inscription vendredi 4 avril 2014 Statut Membre Dernière intervention 24 novembre 2014
Modifié par Eylun le 4/04/2014 à 21:11
Peut-être que je l'utilise mal (je me suis aidée de la documentation PHP), car je viens de suivre, et il ne m'indique rien.

Et d'avance, désolée si j'ai posté dans le mauvais forum, j'étais certaine d'avoir posté dans la section PHP. J'aurai bien voulu avoir la possibilité de supprimer mon message ici afin de le poster au bon endroit, mais je n'ai trouvé cette solution nulle part. Cela serait un plus pour ce forum, je pense. Mais qu'importe, ce n'est pas le sujet.

Pour le errorInfo, j'ai beau suivre la documentation, non, je n'ai rien qui s'affiche en plus.

Je suis vraiment bloquée, car j'ai vraiment du mal à voir où serait mon erreur. Je ne vois pas de fautes de frappe, ni d'erreur de logique, pourtant, il doit y en avoir une si ça n'insère pas !

Et il n'y a aucune faute de frappe non-plus sur les données de la table "contenus", j'ai vérifié plusieurs fois au caractère près.

Merci quand même d'avoir tenté !

Je reste quand même en attente de d'autres réponses au cas où.
0
Eylun Messages postés 5 Date d'inscription vendredi 4 avril 2014 Statut Membre Dernière intervention 24 novembre 2014
4 avril 2014 à 23:45
Alors après divers tests, j'ai de plus en plus de mal à comprendre. Je peux assurer que la connexion à la BDD a été faite avant le doctype, et qu'au niveau des correspondance champs de table et code PHP, il n'y a vraiment AUCUNE faute de frappe.

J'ai testé en essayant de mettre des echo sur mes variables envoyées.

Et résultat, elles ne s'affichent même pas ! Alors que pourtant, elles sont bel et bien envoyées via le formulaire...

Bref, je suis vraiment perdue, et le problème est un peu urgent vu que je dois finir ça avant le 7 avril.

Je serais donc vraiment reconnaissante à la personne qui saura me dire d'où vient le soucis.

En espérant que le contenu de ce post puisse aider à la compréhension du soucis.

Merci d'avance !

Cordialement.
0
Eylun Messages postés 5 Date d'inscription vendredi 4 avril 2014 Statut Membre Dernière intervention 24 novembre 2014
5 avril 2014 à 19:45
Décidément, ce n'est pas pour dire, mais je dois admettre que je suis déçue de la non-réactivité de ceux qui s'y connaissent et qui sont ici ^^'

Surtout que ça fait deux fois.

J'espérai réviser mon jugement via ce sujet, parce que vraiment, j'étais coincée.

Eh finalement, heureusement que je poste, mais aussi en mode "ne t'y fie pas, tu ne peux pas faire confiance à ces personnes". J'ai encore malheureusement raison, cela m'attriste.

J'ai donc trouvé ma solution. En fait, j'ai simplement tout effacé et réécris complètement mon formulaire et mon traitement PHP. Qui est très similaire, voir identique, ce qui fait que je ne comprends vraiment pas où j'ai pu faire mon erreur.

Bref, donc au cas où des personnes débutantes seraient dans le même cas que moi : méthode pénible, effacez tout et recommencez avec attention. En général, ça fonctionne.
0