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

Langage PHP Discussion :

Condition si NULL


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 43
    Points
    43
    Par défaut Condition si NULL
    Bonjour !

    J'ai besoin de vos lumières sur la condition suivante s'il vous plait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ((($timestamp2 = strtotime($row_rsobs['procvisi_obs'])) == FALSE) OR
     (($timestamp2 = strtotime($row_rsobs['procvisi_obs']) == -1 )))
    {
        $dateprocvisi = ' ';
    } 
    else .......
    En fait je voudrais la compléter pour que si le contenu est vide ou égal à 0000-00-00 (puisqu'il s'agit d'un champ date), le contenu de la variable $provisi_obs soit laissé vide.

    Dur ou pas dur ?

    Merci

  2. #2
    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
    Tu peux produire ton timestamp directement depuis ta requête, il vaudra NULL si le champ est NULL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = "SELECT UNIX_TIMESTAMP(procvisi_obs) FROM table";
    // blablabla
    $dateprocvisi = $row_rsobs['procvisi_obs'];
    Le cas 0000-00-00 ne doit pas exister.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 43
    Points
    43
    Par défaut
    Merci

    En fait j'ai peut-être pas été assez précis.

    Voici la totalité du script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if ((($timestamp2 = strtotime($row_rsobs['procvisi_obs'])) == FALSE) OR
     (($timestamp2 = strtotime($row_rsobs['procvisi_obs']) == -1 )))  // Date du prochain visite
    {
        $dateprocvisi = ' ';
    }
    else 
    {
        $timestamp2 = strtotime($row_rsobs['procvisi_obs']);
        $dateprocvisi = strftime('%B %Y', $timestamp2);
    }
    En fait s'il est possible de récupérer le timestamp, j'affiche le mois et l'année correspondants.

    Je voudrais juste gérer le cas 0000-00-00 puisque c'est ce que j'obtiens dans ma table lorsque le champ n'est pas rempli

    Merci

  4. #4
    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
    Même pas besoin de timestamp alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "SELECT DATE_FORMAT(procvisi_obs,'%m %Y') as procvisi_obs FROM table";
    // blablabla
    $dateprocvisi = $row_rsobs['procvisi_obs'];
    orsque le champ n'est pas rempli
    Dans ce cas la, le champ doit être NULL.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 43
    Points
    43
    Par défaut
    Merci Sabotage mais j'ai du mal à me faire comprendre.

    Un petit exemple pour aider :

    Si j'ai une date 2010-04-12 par exemple,

    Je dois récupérer cette date et en extraire l'année et le mois, 2010-04, convertir vers "avril 2010"

    Si j'ai une date 0000-00-00 car rien n'a été mentionné dans le formulaire permettant d'ajouter une date

    Dans ce cas je voudrais que rien n'apparaisse.

    Est-ce que c'est plus clair ?

    Merci

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 43
    Points
    43
    Par défaut
    Une petite idée ? Si je ne suis pas assez précis ou s'il manque une info dites le moi.

    Merci

  7. #7
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    Salut,
    Personnellement quand j'utilise des date dans mes formulaires. Si la personne ne le fais pas de lui même je fais un contrôle et si le champs date est vide je le fais en dur. De cette manière dans ma bd la date sera toujours insérer et ca me permet d'avoir un suivi.

    J'espère que j'ai pu t'aider

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 111
    Points : 43
    Points
    43
    Par défaut
    Merci

    C'est vrai que dans l'idée c'est un peu absurde de laisser le champ date vide mais bon, je dois le faire comme ça.

    Une ptite idée ?

  9. #9
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Points : 92
    Points
    92
    Par défaut
    Je ne suis pas sur du résultat.
    Mais quand tu fais l'extraction de la l'année et le mois tu fais un test
    si l'année est 0000 et ensuite tu code en conséquence.
    Je pense que ca pourrais fonctionner mais te dire si c'est optimal......

  10. #10
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Citation Envoyé par sabotage
    Dans ce cas la, le champ doit être NULL.
    +1

    Tu te prends un peu les pieds dans l'tapis, car le mal est déjà fait.
    Mais comme l'a souligné @Sabotage, ton champ de type DATE doit accepter les valeurs nulles (NULL).
    Ceci demande de faire une intervention dans la Bdd, du champ.

    Ensuite, et comme le mal est déjà fait, il faudra aussi intervenir dans cette Bdd pour corriger toutes ces valeurs 0000-00-00 et y mettre explicitement une valeur nulle.

    C'est pas fini
    Ces valeurs 0000-00-00 sont la conséquences d'au moins 2 opérations :
    Soit au moment de l'insertion (INSERT INTO)
    Soit au moment d'une mise à jours (UPDATE).

    Les valeurs nulles, sont des exceptions, bien malheureusement, et bien souvent cela demande de faire un traitement, code particulier pour indiquer à MySQL que celle ci doit être nulle.

    Par exemple, ceci n'est pas une valeur nulle :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (champ) VALUES ('')
    Ca débouchera sur des 0000-00-00 si c'est un champ de type date.

    Pour obtenir une valeur nulle, faut l'indiquer comme ceci : (et sans les quotes -> '')
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO table (champ) VALUES (NULL)


    Lorsque tu aura régler toutes ces étapes, ceci te garantira de ne jamais obtenir de valeur 0000-00-00 mais bien nulle, ou alors une date valide.
    En d'autres termes, il vaut mieux régler ce problème en amont.

Discussions similaires

  1. [WD19] Conditions avec NULL
    Par niko9600 dans le forum WinDev
    Réponses: 6
    Dernier message: 15/05/2014, 13h48
  2. Condition si NULL ou 0 sur un champ integer
    Par arthuro45 dans le forum Langage
    Réponses: 4
    Dernier message: 24/09/2010, 20h53
  3. Réponses: 1
    Dernier message: 17/07/2007, 16h45
  4. Condition non Null
    Par Piloupilou999 dans le forum Access
    Réponses: 1
    Dernier message: 01/02/2007, 20h04
  5. condition et null
    Par Nadine dans le forum ASP
    Réponses: 2
    Dernier message: 14/03/2005, 22h21

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