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 :

Insertion automatique d'un champ de type DATE [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut Insertion automatique d'un champ de type DATE
    Bonjour,
    Je travaille actuellement sur un projet de gestion des licences. Quand j'insere une nouvelle licence je dois renseigner 3 dates :
    la Date_acquisition, la Date_expiration et la Date_renouvellement.
    Tous les 3 correspondent à, respectivement, un champ de type DATE sous MySql.
    Le pb c'est pour la Date_renouvellement qui s'obtient en faisant Date_expiration - 1 mois !!!
    Aprés ce calcul on effectue l'insertion automatiquement !
    Je rappelle qu'avec le type DATE on a le format AAAA-MM-JJ !
    Et c'est ce calcul et cette conversion que j'arrive pas à faire
    Merci pour toute l'attention que vous pourrez m'accorder et vos suggestions sont les bienvenues car là je suis trés confus !

  2. #2
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Bonjour.

    Tu peux essayer ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
    $date_expiration = "2009-2-12";
     
    $date_ok = setDate($date_expiration);
     
    echo $date_ok;
     
    function setDate($parametre)
        {
            $date_explode = explode("-", $parametre);
                if($date_explode[1] == 1)
                    {
                        $mois = 12;
                        $annee = $date_explode[0] - 1;
                        }
                else
                    {
                        $mois = $date_explode[1] - 1;
                        $annee = $date_explode[0];
                        }
     
            $date_calculee = $annee."-".$mois."-".$date_explode[2];
     
            return $date_calculee;
     
            }
    ?>

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Merci pour ta rapidité !!!
    J'ai enregistré le code dans un fichier .php et je vois que cà marche !!!
    Mais je vois que tu utilises une fonction : explode
    J'en ai déja entendu parler mais je l'ai jamais utilisé, pourrais-tu m'expliquer le code ?

    Cordialement.

  4. #4
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Re.

    explode() est une fonction intégrée à php. Elle retourne un array()

    array explode ( string $delimiter , string $string [, int $limit ] )

    explode() retourne un tableau de chaînes, chacune d'elle étant une sous-chaîne du paramètre string extraite en utilisant le séparateur delimiter .

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il est possible de le faire directement lors de l'insert :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `ma_table`(`date_acquisition`, `date_expiration`, `date_renouvellement`) values($date_acquisition, $date_expiration, DATE_SUB(`date_expiration`, INTERVAL 1 MONTH));

    En se basant sur ces particularités (source) :
    Une expression peut faire référence à n'importe quelle colonne qui a été définie précédemment dans une liste de valeurs. Par exemple, on peut dire ceci :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> INSERT INTO nom_de_table (col1,col2) VALUES(15,col1*2);

    Mais vous ne pouvez pas faire cela, car la valeur de col1 fait référence à col2, qui est assigné après col1 :
    Code X : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql> INSERT INTO nom_de_table (col1,col2) VALUES(col2*2,15);

  6. #6
    Membre chevronné Avatar de FredPsy
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Décembre 2006
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 285
    Par défaut
    Citation Envoyé par julp Voir le message
    Il est possible de le faire directement lors de l'insert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO `ma_table`(`date_acquisition`, `date_expiration`, `date_renouvellement`) VALUES($date_acquisition, $date_expiration, DATE_SUB(`date_expiration`, INTERVAL 1 MONTH));

    J'y avais pas pensé à celle là. Effectivement, c'est plus simple.

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5
    Par défaut
    Alors là j'ai l'embarras du choix !!!
    Vos explications ont été trés clair et je peux maintenant marquer mon probléme comme résolu !!!
    Encore 1000 fois merci !!!!

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

Discussions similaires

  1. [MySQL] Insertion MySQL champ de type Date
    Par guiguikawa dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/01/2012, 15h20
  2. [MySQL] Insertion avec un champ de type date
    Par souadmaa dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 04/02/2008, 11h27
  3. insérer un 'NULL' dans un champ de type DATE
    Par Invité dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 01/06/2005, 09h23
  4. Pb avec une dbgrid et un champ de type date
    Par Ellde dans le forum Bases de données
    Réponses: 1
    Dernier message: 17/03/2005, 16h21
  5. Critères sur champ de type date
    Par blasco dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 09h48

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