IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Laisser un champ vide [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 29
    Points
    29
    Par défaut Laisser un champ vide
    bonjour,
    j'ai cree un formulaire et les informations sont inseres dans une base de donnes mysql et je souhaiterais que lorsque je ne rempli pas un champ dans le formulaire, le champ correspondant soit laisser vide dans mysql. Dans mon cas c'est un champ de type VARCHAR que j'ai mis a null et une valeur par defaut vide or a chaque fois que le champ est vide dans le formulaire le champ dans la bdd contient la valeur null quelquesoit la valeur par defaut donc je ne comprend pas. La valeur par defaut n'est jamais prise en compte.

  2. #2
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    Salut

    Pour que la valeur par défaut soit utilisé il suffit de ne pas renseigner le champ en question.
    exemple :

    myTable
    id
    code
    statut => defaut 0

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    INSERT INTO maTable SET code='xxxx';

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    salut,
    merci pour la reponse mais ce n'est pas mon probleme, le probleme est tel que quand je ne remplis pas le champ dans le formulaire alors le champ contient la valeur NULL dans la bdd meme si je met une valeur par defaut, et je souhaiterais que le champ soit donc vide dans la bdd aussi.

  4. #4
    Membre confirmé
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    397
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 397
    Points : 518
    Points
    518
    Par défaut
    tu dois changer ta requête c'est bien ce que je pense ....

    montre voir la partie du code qui insert dans la bdd

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu autorises le Null si tu ne veux pas de Null ?

    J'ai cependant fais le test "chez moi" : si j'ai un champ avec Null autorisé et un champ vide comme valeur par défaut, si je ne specifie pas mon champ lors d'un INSERT il est bien mis en chaine vide.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    parce que si je met NOT NULL je suis oblige de remplir le champ or je souhaiterais le laisser vide.

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ba non si tu ne le remplis pas, il prendra la valeur par défaut.

    Cela n'explique cependant pas pourquoi il se met à Null par défaut dans ton cas.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    vous avez raison, si j'essaie une simple requete insert dans mysql sa fonctionne, c'est ma requete d'insertion du formulaire qui doit mal fonctionner. En fait j'utilise dreamweaver pour concevoir ma page et voici la requete generee :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $insertSQL = sprintf("INSERT INTO book (DrawingNumber, Description, Customer, `Date`, MachineType, OriginalNumber, DrawingType, Remarks, Extension) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)",
                           GetSQLValueString($HTTP_POST_VARS['drawingnbr'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['description'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['customer'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['date'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['machinetype'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['originalnbr'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['drawingtype'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['remarks'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['extension'], "text"));

  9. #9
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 27
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    étant donné que tu insères des chaines dans ta table, il faut qu'elles soient entre quotes, comme ci-dessous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     $insertSQL = sprintf("INSERT INTO book (DrawingNumber, Description, Customer, Date, MachineType, OriginalNumber, DrawingType, Remarks, Extension) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
                           GetSQLValueString($HTTP_POST_VARS['drawingnbr'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['description'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['customer'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['date'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['machinetype'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['originalnbr'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['drawingtype'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['remarks'], "text"),
                           GetSQLValueString($HTTP_POST_VARS['extension'], "text"));
    En espérant que cela suffise.

  10. #10
    Nouveau membre du Club
    Inscrit en
    Juin 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 41
    Points : 29
    Points
    29
    Par défaut
    ah j'ai trouvé c'est la fonction GetSQLValueString qui m'insère la valeur NULL quand le champ est vide. Merci quand même à tous.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Laisser un champ vide
    Par ledude89 dans le forum Modélisation
    Réponses: 4
    Dernier message: 09/06/2008, 11h51
  2. Pb de tri avec champs vide
    Par nesbla dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2004, 17h42
  3. Test sur un champs vide
    Par PrinceMaster77 dans le forum ASP
    Réponses: 2
    Dernier message: 27/04/2004, 12h54
  4. [conception] champs vides ou plusieurs tables ?
    Par in dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 17/02/2004, 08h41
  5. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo