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

MySQL Discussion :

Problème valeur par défaut smallint


Sujet :

MySQL

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 55
    Points
    55
    Par défaut Problème valeur par défaut smallint
    Salut,

    J'ai un champ ch_date structuré de la façon suivante dans la BD : type smallint, Null : oui, par défaut : NULL

    Quand l'tulisateur ne met pas de date, le champ est vide ( ch_date="" ) mais à l'insertion, dans ce champ, il est mis automatiquement un 0.

    Comment faire, quand le champ est vide, à avoir une case vide dans la BD ou NULL (mais pas ce 0) ?

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    S'il y a autre chose que null alors que c'est la valeur par défaut, c'est que la colonne a été positionné à "not null" lors de l'insert et qu'elle est citée dans l'ordre insert

    Il faut donc supprimer la colonne de l'ordre insert, ou mettre explicitement null ou encore utiliser le mot clef "default"

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut fred08.

    Quel est l'usage que tu fais de cette colonne ch_date ?
    Si tu as une date, il vaut mieux mettre le type "DATE".

    Citation Envoyé par Fred08
    Quand l'utilisateur ne met pas de date, le champ est vide ( ch_date="" ) mais à l'insertion, dans ce champ, il est mis automatiquement un 0.
    C'est normal comme fonctionnement.
    Si tu veux insérer une valeur numérique dans cette colonne, MySql va faire la conversion.
    Et sur quelque chose qui n'est pas numérique, il va mettre zéro.
    Or zéro n'a pas le même sens que NULL.
    Zéro signifie que tu as volontairement initialisé cette colonne avec cette valeur.
    Inversement, Si tu ne sais pas quoi mettre, autrement dit, la valeur n'est pas connue, il faut mettre NULL.

    Donc si tu veux faire apparaître un NULL dans ta colonne, il faut le mettre explicitement.
    En php, tu dois tester ton champs $ch_date sur la valeur vide (ou autre chose), et mettre "NULL".
    Lors de l'insertion du NULL, MySql le convertira afin de mettre la valeur par défaut qui est aussi NULL.
    Ne pas oublier de mettre sur la colonne "ch_date" --> NULL = oui.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Si tu as une date, il vaut mieux mettre le type "DATE".
    Eh bien non.
    ch_date = une année dans mon cas et le type YEAR de mysql est trop restrictif, ne prend pas en compte toutes les années car son "range" est petit.

    Sinon, je vais essayer de mettre NULL quand le champ est vide.

    Merci

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut fred08.

    Je comprends mieux le rôle de ta colonne. Tu as raison, d'utiliser smallint car l'amplitude va de 0 à 65535.
    Ton année est-elle stockée sur quatre digit ?

    Ne pas oublier de lui adjoindre "smallint unsigned".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Salut,

    Effectivement, si ce n'est pas oublier le unsigned est présent sachant que j'ai une autre colonne qui précise si c'est avant ou après l'an 0.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Bon ça ne marche pas.

    Mon test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if($_SESSION['ch_date_start_ent'] == "") $_SESSION['ch_date_start_ent'] = 'NULL';
    if($_SESSION['ch_date_end_ent'] == "") $_SESSION['ch_date_end_ent'] = 'NULL';
    La requete :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO kingdom (add_kingdom, add_dateStart, add_dateStop, add_centuryStart, add_centuryStop, add_dateStartBCE, add_dateStopBCE, add_centuryStartBCE, add_centuryStopBCE) VALUES ('k7', 'NULL', 'NULL','', '','','', '', '')
    Et pour les colonnes j'ai bien dans la BD :
    - NULL : oui
    - par defaut : NULL

    Et toujous 0 qui se met...

  8. #8
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 561
    Points
    38 561
    Billets dans le blog
    9
    Par défaut
    Ce n'est pas la chaine de caractères "null" qu'il faut mettre, mais le mot clef null sans quote simple ni double

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2015
    Messages : 52
    Points : 55
    Points
    55
    Par défaut
    Oki merci, ça marche.

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

Discussions similaires

  1. Problème : Valeurs par défaut clavier HTC
    Par rouguiatou dans le forum Android
    Réponses: 2
    Dernier message: 27/07/2012, 17h17
  2. Réponses: 1
    Dernier message: 27/01/2010, 12h00
  3. Réponses: 1
    Dernier message: 25/09/2006, 09h50
  4. Réponses: 3
    Dernier message: 25/05/2006, 18h50
  5. Problème avec les valeurs par défaut
    Par Steph Ace dans le forum Requêtes
    Réponses: 3
    Dernier message: 12/12/2005, 09h55

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