Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affichage du status dans le formulaire

Sujet résolu
    23 septembre 2018 à 13:11:32

    Re bonjour à tous, 

    Je tente de faire un page d'administration d'un site recensant tous les jeux de société d'une structure public. Il y a environ 400 jeux et dans cette page j'ai mis un form permettant d'envoyer la requête dans un fichier traitant ces requêtes.   

    Voici pour l'ajout : 

     <h2>Ajout d'une catégorie</h2>
       
       <form method="post">
    
    <span class="message-status"><?php if(isset($status_categorie_add)) echo "$status_categorie_add" ?></span>
                 
           <input type="text"  name="cat_add" placeholder="Nom de la catégorie à ajouter">
           <input type="submit" name="submit" class="add" value="">
       </form>

    Et ma requête : 

    require 'connexion-BDD-localhost.php';
    
    $cat_a = $_POST['cat_add'];
    
    $req = $bdd->prepare('INSERT INTO categories (date, nom_cat) VALUES(NOW(), ?)');
    $req->execute(array($_POST['cat_add']));
     
    if($req){
        
            $status_categorie_add = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie &nbsp;<strong>$cat_a</strong>&nbsp; à bien été ajouté à la liste</span><br>";
    
        }
    
    
    else {
             $status_categorie_add = "<span style='background-color:red; padding: 5px 10px; border-radius: 3px;'>Oupsss ! La catégorie n'à pas été ajouté à la liste</span><br>";
         }

    Dans mon code html j'arrive à afficher le status de l'action grâce au span dans le form, mais le problème (enfin j'y arrive)  est que même si je n'envoie pas de requête le status s'affiche quand même. . .

    Alors que logiquement temps qu'il n'y a pas de $req d'envoyer, rien ne se passe. De plus, j'ai une erreur ligne 3 et 6 car cat_add n'est pas connu, alors que je l'inclue partout.

    J'ai un peu de mal à saisir. Merci

    -
    Edité par Community Technologie 23 septembre 2018 à 14:35:01

    • Partager sur Facebook
    • Partager sur Twitter
      24 septembre 2018 à 9:13:58

      Bonjour,

      Mauvais forum

      Le sujet est déplacé de la section Base de données vers la section PHP

      Reader a écrit:

      j'ai une erreur ligne 3 et 6 car cat_add n'est pas connu, alors que je l'inclue partout

      Si tu accèdes à ta page sans avoir renseigné et validé ton formulaire, ce qui est le cas au premier affichage, alors $_POST['cat_add'] n'est pas défini ... d'où les deux notices ligne 3 et 6 ...

      Le meilleur moyen d'éviter cela est d'utiliser un if isset ...

      Du coup dans le même cas, $req est inexistant non plus ... d'où l'affichage du message du else ...

      if( isset( $_POST['cat_add'] ) ) {
      	require 'connexion-BDD-localhost.php';
      	$req = $bdd->prepare('INSERT INTO categories (date, nom_cat) VALUES(NOW(), ?)');
      	$req->execute(array($_POST['cat_add']));
      	
      	if($req){
      		$status_categorie_add = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie &nbsp;<strong>$cat_a</strong>&nbsp; à bien été ajouté à la liste</span><br>";
      	} else {
      		$status_categorie_add = "<span style='background-color:red; padding: 5px 10px; border-radius: 3px;'>Oupsss ! La catégorie n'à pas été ajouté à la liste</span><br>";
      	}
      }

      -
      Edité par Benzouye 24 septembre 2018 à 9:14:53

      • Partager sur Facebook
      • Partager sur Twitter
      Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
        24 septembre 2018 à 9:44:52

        Hello,

        Je me permet une remarque sur la réponse de Benzouye :

        Dans ton cas, puisque tu te sers de la valeur de $_POST['cat_add'] dans ta requête, il faudrait mieux préférer empty() à isset() :

        if(!empty($_POST['cat_add'])) {}

        En effet, isset() permet de vérifier l'existence d'une variable, mais empty() vérifie en plus que cette dernière : n'est ni NULL, ni vide (chaîne vide), ni zéro, ce qui peut être plus utile dans cette situation (une catégorie sans nom n'est pas acceptable) :)

        PS: Attention la syntaxe est bien NOT empty (d'où le '!' dans le if)

        -
        Edité par Algorun 24 septembre 2018 à 9:45:39

        • Partager sur Facebook
        • Partager sur Twitter
        Celui qui croit tout savoir ne sait rien
          24 septembre 2018 à 20:44:37

          J'ai fait quelque chose comme ça : 

          if(!empty($_POST['cat_add'])){
                  
              
              $req = $bdd->prepare('INSERT INTO categories (date, nom_cat) VALUES(NOW(), ?)');
              $req->execute(array($_POST['cat_add']));
           
                  $status_categorie_add = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie  à bien été ajouté à la liste</span><br>";
          
              }
            
          
          else {
                   $status_categorie_add = "<span style='background-color:red; padding: 5px 10px; border-radius: 3px;'>Oupsss ! La catégorie n'à pas été ajouté à la liste</span><br>";
               }

          Qui ne change absolument rien ^^

          • Partager sur Facebook
          • Partager sur Twitter
            25 septembre 2018 à 9:55:10

            Reader a écrit:

            Qui ne change absolument rien ^^

            C'est à dire ? Toujours le premier problème ?

            Reader a écrit:

            même si je n'envoie pas de requête le status s'affiche quand même

            • Partager sur Facebook
            • Partager sur Twitter
            Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
              25 septembre 2018 à 10:28:03

              Si j’ecris if(isset ou if(empty ou if(!empty avec comme condition POST cat_add ou submit ou les deux à la fois rien ne change j’ai toujours ce resultat sans rien envoyer dans la requête

              Cf mon image du debut de post AJOUT D’UNE CATÉGORIE 

              Sinon j'ai cette solution là :

              if(!empty($_POST['cat_add'])){
                      
                  
                  $req = $bdd->prepare('INSERT INTO categories (date, nom_cat) VALUES(NOW(), ?)');
                  $req->execute(array($_POST['cat_add']));
               
                      $status_categorie_add = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie  à bien été ajouté à la liste</span><br>";
              
                  }
              
              else
              {   
                  $status_categorie_add = " ";
              }  
              
              

              Ça m'affiche un espace quand je ne fait rien (donc ça ne se voit pas) et ça m'affiche que l'ajout c'est bien effectuer lorsqu'on rentre une catégorie. Par contre je n'ai pas de message d'erreur si ça plante...

              -
              Edité par Community Technologie 25 septembre 2018 à 12:45:19

              • Partager sur Facebook
              • Partager sur Twitter
                26 septembre 2018 à 9:55:39

                Reprend le code posté plus haut (j'ai juste remplacé avec !empty)

                if( !empty( $_POST['cat_add'] ) ) {
                    require 'connexion-BDD-localhost.php';
                    $req = $bdd->prepare('INSERT INTO categories (date, nom_cat) VALUES(NOW(), ?)');
                    $req->execute(array($_POST['cat_add']));
                     
                    if($req){
                        $status_categorie_add = "<span style='background-color:green; padding: 5px 10px; border-radius: 3px;'>La catégorie &nbsp;<strong>$cat_a</strong>&nbsp; à bien été ajouté à la liste</span><br>";
                    } else {
                        $status_categorie_add = "<span style='background-color:red; padding: 5px 10px; border-radius: 3px;'>Oupsss ! La catégorie n'à pas été ajouté à la liste</span><br>";
                    }
                }

                La logique est fatale ... Si est renseigné $_POST alors on tente l'insertion et on affiche un message, sinon ... y'a pas de sinon :p on ne fait rien du tout ...

                -
                Edité par Benzouye 26 septembre 2018 à 9:55:59

                • Partager sur Facebook
                • Partager sur Twitter
                Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL

                Affichage du status dans le formulaire

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown