Partage
  • Partager sur Facebook
  • Partager sur Twitter

interdire d'inserer un requete avec un champ vide

Sujet résolu
    1 septembre 2011 à 10:34:27

    Bonjour, afin de mieux comprendre l'insertion d'un null je fait un test simples
    je travail sur cette table qui est très simple
    table personnes
    ----------------
    id_perso | nom


    dans phpmyadmin j'ai cliquer sur la case "null", je suppose que cela interdit d'enregister quelque chose qu'il n'existe pas

    j'ai donc executer cette requête
    insert into personnes(nom) value (null)


    jusqu'a là pas de problème ,j'ai un erreur
    #1048 - Column 'nom_fam' cannot be null

    maintenant j'ai essayer ceci
    insert into(personnes(nom)value('')

    Identifiant de la ligne insérée : 6 ( Traitement en 0.0517 sec. )


    donc là je suppose que
    echo ''


    est vide mais pas null

    ma question est , lorque fait un requête avec PHP si par exemple je ne remplis l'un des champs
    commmnent va t'il envoyer à mysql quelque chose de vide ?
    $nom = $_POST['name']
    $sql = "insert into personnes (nom)value ($nom)";


    si je ne fait pas de test d'exsistance,
    $nom sera "NULL" ou "vide"?


    pour éviter toute ambiguité , faut t'il à chaque fois faire
    if($nom = '')
    {
    $nom = NULL;
    }
    merci d'avance de votre réponse :)


    • Partager sur Facebook
    • Partager sur Twitter
    projet de création domotique avec beaglebone avec nodejs
      1 septembre 2011 à 10:37:46

      Oui, ça tu est obligé de vérifier côté PHP. Utilise plutôt empty() que == '' (avec 2 =, pas 1...)
      • Partager sur Facebook
      • Partager sur Twitter
        1 septembre 2011 à 10:46:50

        Moi j'ai toujours eu un problème avec empty, par exemple si on met que des espaces dans un champs, et bien la variable ne sera plus considérée comme empty il me semble.
        • Partager sur Facebook
        • Partager sur Twitter
          1 septembre 2011 à 10:48:42

          Non, mais il suffit de lire la doc, je vois pas en quoi c'est un problème.

          Si ça t'ennuie, utilise trim()
          • Partager sur Facebook
          • Partager sur Twitter
            1 septembre 2011 à 10:57:09

            merci de toute ces réponse

            question perfomance,
            faut t'il mieux indiquer que si la champs et vide par php qu'il sera égale à NULL

            ou faut t'il mieux du coté mysql de dire que s'il y a un champs vide (nom reseigné cette fois ci) mettre NULL ou NC par exemple dans l'option
            "default" (ne n'ai jamais encore utiliser tel que défnit, mais je suppose que si je met nc ca remplir le champs "nc")

            table
            id_perso|nom|prenom


            //je n'indique pas le nom
            select into personnse(prenom)value('toto')

            • Partager sur Facebook
            • Partager sur Twitter
            projet de création domotique avec beaglebone avec nodejs
              1 septembre 2011 à 11:14:42

              Je ne pense pas que du coté mysql tu peut faire une chose pareille.

              La valeur par défaut est utilisé que si tu n'utilise pas le champs concerné dans ta requête.

              exemple si tu fait :
              select into personnse(id_perso)value(1)

              Comme tu n'a pas choisi le champs 'nom' est bien c'est la valeur par défaut qui est choisi.
              • Partager sur Facebook
              • Partager sur Twitter
                1 septembre 2011 à 11:35:20

                ok merci

                si on veux niveau performance il faut que coche la case "null"
                et que dans tous le code php, je doit mettre a chaque fois qu'il n'y a pas de réponse

                -soit obligé au users de remplire le champs d'un formulaire par exemple
                -soit de mettre une donnée d'office si on n'a pas remplis un champs

                if(empty($_POST['nom'))
                {
                echo "vos devez remplir le champs nom";
                //redirection
                }
                
                if(empty($_POST['prenom_2"]))
                {
                
                $_POST['prenom_2'] = "inconnu";
                }
                
                plutôt que accepter un valeur null et la mettre dans la base de donnnée
                
                
                <code>
                //accepter de mettre dans le champs prenom_2 la valeur null
                insert into personnes (nom,prenom,prenom_2)value('toto','tata','null');

                • Partager sur Facebook
                • Partager sur Twitter
                projet de création domotique avec beaglebone avec nodejs
                  1 septembre 2011 à 11:55:46

                  Niveau perf je ne pense pas que ça influe quelque chose, par contre mettre NULL je trouve plus approprié que "inconnu" étant donné que n'importe qui peut mettre "inconnu" comme nom.

                  Et le fait d'obliger de remplir un champs ou pas c'est toi qui voit.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 septembre 2011 à 12:05:47

                    merci :)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    projet de création domotique avec beaglebone avec nodejs

                    interdire d'inserer un requete avec un champ vide

                    × 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