Partage
  • Partager sur Facebook
  • Partager sur Twitter

condition if empty

Sujet résolu
    21 avril 2017 à 15:30:54

    bonjour à tous ,

    je souhaite enregistrer une données si le champ est vide , et ne rien faire si il est deja remplis .

    mon problème c'est qu'il me remplis le champ labelling_2 si il est vide , mais il ne remplis pas le champs labelling_3 si il est vide alors que le champ labelling_2 est remplis .il modifie le champ labelling_2
    merci pour votre aide
    voila le code :
    <?php
    
    $new_labelling = $_POST["new_labelling"] ;
    
    if(empty($result -> labelling_2))
    {
    	$ref    = $_GET["ref"] ;
    	$connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
    }
    elseif(empty($result -> labelling_3))
    {
    	$ref    = $_GET["ref"] ;
    	$connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
    }
    ?>



    • Partager sur Facebook
    • Partager sur Twitter
      21 avril 2017 à 15:35:24

      Salut !

      En effet, on ne peut pas passer dans un if ET dans un elseif. Si ton if est correct, il ne passera pas dans le elseif.

      Normalement en mettant ce code, ça devrait marcher :)

      <?php
       
      $new_labelling = $_POST["new_labelling"] ;
       
      if(empty($result -> labelling_2))
      {
          $ref    = $_GET["ref"] ;
          $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
      }
      if(empty($result -> labelling_3))
      {
          $ref    = $_GET["ref"] ;
          $connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
      }
      ?>



      • Partager sur Facebook
      • Partager sur Twitter
        21 avril 2017 à 15:39:11

        Bonjour pedro35

        merci de ta réponses rapide , je test cela de suite et reviens vers toi pour te dire si cela marche

        ah oui c est ok , par contre je n'avais pas pensé qu'il enregistrerais dans les deux champs .....

        saurait tu m'aiguiller pour qu 'il ne remplisse qu'un seul champs ?

        le labelling_2 si il est vide et pas le labelling_3 meme si il est vide ?

        et je viens de m'apercevoir que losque le champs 2 est remplis quand je valide a nouveau le formulaire il remplis bien le champ 3 mais il modifie aussi le champ 2

        je suis un peu perdu

        merci de ton aide

        -
        Edité par laurentgrosges 21 avril 2017 à 15:47:38

        • Partager sur Facebook
        • Partager sur Twitter
          21 avril 2017 à 15:56:44

          Peux tu mieux réexpliquer ce que tu souhaites exactement ?

          si labelling_2 vide : Remplir labelling_2 mais pas labelling_3

          Si labelling_2 vide labelling_3 est vide : remplir labelling_2 mais pas labelling_3

          Si labelling_2 rempli et labelling_3 vide : laisser labelling_2 et remplir labelling_3

          Si labelling_2 rempli et labelling_3 rempli : ne rien faire

          C'est bien ca ?

          • Partager sur Facebook
          • Partager sur Twitter
            21 avril 2017 à 16:28:27

            oui c est bien cela

            merci enc ore pour ton aide ;-)

            j'ai pensé à faire ça :

            <?php
              
            $new_labelling = $_POST["new_labelling"] ;
              
            if((($result -> labelling_2) == 0 ) && (($result -> labelling_3) == 0 ))
            {
                $ref    = $_GET["ref"] ;
                $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
            }
            elseif((($result -> labelling_2) == true ) && (($result -> labelling_3) == 0 )) 
            {
                $ref    = $_GET["ref"] ;
                $connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
            }
            ?>
             bon j'ai tester même problème

            -
            Edité par laurentgrosges 21 avril 2017 à 16:52:05

            • Partager sur Facebook
            • Partager sur Twitter
              21 avril 2017 à 16:51:12

              if(empty($result -> labelling_2)){ // Si labelling_2 est vide, on le rempli
                  echo 'remplir labelling_2';
              } else { // Sinon, ca veut dire que labelling_2 N'est PAS vide
                  if(empty($result -> labelling_3)) { // Si labelling_3 est vide
                      echo 'remplir labelling_3';
                  }
              }



              -
              Edité par pedro35 21 avril 2017 à 16:51:52

              • Partager sur Facebook
              • Partager sur Twitter
                21 avril 2017 à 16:56:57

                désolé , mais cela ne marche pas du tout, cela n'enregistre plus rien

                <?php
                $ref    = $_GET["ref"] ;
                if(empty($result -> labelling_2)){ // Si labelling_2 est vide, on le rempli
                    $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                } else { // Sinon, ca veut dire que labelling_2 N'est PAS vide
                    if(empty($result -> labelling_3)) { // Si labelling_3 est vide
                    $connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                    }
                }
                ?>


                ou alors j'ai oublié qq chose ??

                -
                Edité par laurentgrosges 21 avril 2017 à 16:58:05

                • Partager sur Facebook
                • Partager sur Twitter
                  21 avril 2017 à 17:03:44

                  C'est bizarre pourtant je ne vois pas ou je me suis trompé.

                  Tu peux utiliser des

                  echo "je suis a cet endroit";

                  pour te permettre de savoir par où passe ta boucle

                  • Partager sur Facebook
                  • Partager sur Twitter
                    21 avril 2017 à 17:13:52

                    bonjour,

                    il ni a que moi que ca choque 

                    if(empty($result -> labelling_2))
                    {
                        $ref    = $_GET["ref"] ;
                        $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                    }
                    if(empty($result -> labelling_3))
                    {
                        $ref    = $_GET["ref"] ;
                        $connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' 



                    tu ne sais pas ce que tu fait en poo, tu accede directement a tes attributs sans setter tu n'est pas censer avoir

                    labelling_2

                     C'est une relation onetomany ou manytomany

                    et dernier point injection sql vu que tu balances direct des variable utilisateurs dans la requete

                    • Partager sur Facebook
                    • Partager sur Twitter
                    "Il est hélas devenu évident aujourd’hui que notre technologie a dépassé notre humanité"  A.E.
                      21 avril 2017 à 17:28:43

                      bonjour kets14,

                      je n'ai pas compris .... désole

                      • Partager sur Facebook
                      • Partager sur Twitter
                        21 avril 2017 à 17:30:28

                        kets14, je ne vois pas ce qui est choquant ici, peut tu m'expliquer stp ?

                        <?php
                          
                        $new_labelling = $_POST["new_labelling"] ;
                          
                        if(empty($result -> labelling_2))
                        {
                            $ref    = $_GET["ref"] ;
                            $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                        }
                        if(empty($result -> labelling_3))
                        {
                            $ref    = $_GET["ref"] ;
                            $connexion->exec("UPDATE Produit SET labelling_3 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                        }
                        ?>

                        Pourquoi cette méthode ne marcherait pas ? Si labelling_2 est vide, on insère la valeur dans le champs labelling_2 et si labelling_3 est vide, on insère la valeur dans le champs labelling_3. Au final ce n'est pas ce qu'il demandait mais quelle est mon erreur ?

                        • Partager sur Facebook
                        • Partager sur Twitter
                          21 avril 2017 à 17:43:27

                          j'ai essayé différentes façon , mais je suis toujours bloqué au labelling_3 .

                          le 2 s'enregistre bien , mais le 3 remplace le 2 .....la galère

                          • Partager sur Facebook
                          • Partager sur Twitter
                            21 avril 2017 à 19:34:47

                            pedro35 a écrit:

                            kets14, je ne vois pas ce qui est choquant ici, peut tu m'expliquer stp ?

                            Ce qui est choquant c'est que je pourrais détruire sa base avec une injection je l'ai deja fait a titre privée pour un pote de ma formation qui voulait que je teste son site et quand on commence a avoir des colonnes truc1, truc2, ... c'est qu'il y a un probleme de modélisation(limportant la c'est le fait d'avoir des colonnes incrémentées ce qui ne devrait pas existé)

                            -
                            Edité par kets14 21 avril 2017 à 19:39:46

                            • Partager sur Facebook
                            • Partager sur Twitter
                            "Il est hélas devenu évident aujourd’hui que notre technologie a dépassé notre humanité"  A.E.
                            Anonyme
                              21 avril 2017 à 20:57:15

                              Salut,

                              Ton code semble correct, mais si on résume ton problème il ne met à jour que le labelling_2

                              Cela veut dire que ça rentre dans le premier if systématiquement.

                              J'imagine que $result contient le resultat d'une requête que tu fais plus haut ?

                              Tu fais bien cette requête avant pour remplir $result ?

                              Peut-on voir cette requête ?

                              Sinon ton code peut poser problème au niveau de la sécurité, quand tu fais une requête SQL avec des données entrées par le client il faut échapper les '. Avec PDO tu as une fonction qui te le fait par exemple :

                              <?php
                                  $new_labelling = $_POST["new_labelling"];
                                  $ref = $_GET["ref"];
                                  $connexion->exec("UPDATE Produit SET labelling_2 ='".$new_labelling."' WHERE ref_client = '".$ref."'");
                              
                              	// Dans ce code si l'utilisateur entre pour le champs new_labelling => rouge'vert
                              	// une fois construite ta requête donnera :
                              	// UPDATE Produit SET labelling_2 ='rouge'vert' WHERE ref_client [etc...]
                              	// Tu vois le problème ?
                              	
                              	// donc soit tu prépares ta requête avec la fonction prepare de PDO
                              	// soit tu échappes de cette façon
                              	$connexion->exec("UPDATE Produit
                              						SET labelling_2 = " . $connexion->quote($new_labelling) . "
                              						WHERE ref_client = " . $connexion->quote($ref) . "");
                              						
                              	// la fonction quote te transformera rouge'vert en 'rouge\'vert'
                              
                              ?>

                              A+

                              • Partager sur Facebook
                              • Partager sur Twitter
                                23 avril 2017 à 15:37:05

                                bonjour à tous ,

                                en effet le problème venait bien de ma requête ...... ou avait je la tête !!!!

                                merci à tous pour votre coup de main

                                • Partager sur Facebook
                                • Partager sur Twitter

                                condition if empty

                                × 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