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 :

[SQL] Date en fr dans un textbox


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut [SQL] Date en fr dans un textbox
    Bonsoir j'ai un soucis avec mon formulaire d'insertion dans ma bdd, en effet lorsque je rentre ma date de la facon suivante : "jj/mm/aaaa" dans ma zone de texte, celle ci apparait comme ca : 0000-00-00 sur ma page d'envoi, et la date ne s'enregistre pas dans ma table

    comment faire pour que ma zone de texte prenne le format de date francais ?

    voila comment est réaliser ma page ou ce trouve le formulaire conçernant mon champ date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $retour = mysql_query('SELECT * FROM regsitre WHERE id=\'' . $_GET['modifier_news'] . '\'');
        $donnees = mysql_fetch_array($retour);
    $date = stripslashes($donnees['date']);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form action="liste_REGISTRE.php" method="post">
    <p>Date : <input type="text" size="30" name="date" value="<?php echo $date; ?>" /></p>
    <p> 
     <input type="submit" value="Envoyer" />
    </p>
    </form>
    JE pense qu'il faut utiliser ce code mais je ne sais pas ou le mettre

    Merçi pour votre aide

  2. #2
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    J'avais le même probleme que toi à une époque.
    Je souhaitais mettre la date de la derniere mise a jour. Et j'ai en effet été confronté au même probleme.

    Je l'ai résolu en mettant le type de mon champ dans la base en "date", et lors de ma requete d'insertion, je fait tout simplement la mise a jour avec cette valeur :date("Y-m-d").
    Elle sera convenablement stockée dans la base, et ensuite, tu poura l'afficher de la manière que tu souhaite par un simpe formatage.

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    ben ca ne fonctionne pas j'ai une erreur :

    Notice: Undefined index: date("Y-m-d") in c:\program files\easyphp1-7\www\testsphp\caserne\liste_registre.php on line 45

    alors que j'ai rajouté ton code ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $date = addslashes($_POST['date("Y-m-d")']);

  4. #4
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Date() est une fonction php, essaie juste avec :


  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    J'ai mis dans ma page de saisi du formualire , ainsi dans la zone de texte, la date du jour au format francais apparait mais dans ma page de résultat du formulaire j'ai toujours ma date dans ce format 0000-00-00, alors je pense que je dois formater la date afficher dans le tableau j'ai essayer de mettre ceci mais ca ne marche pas, voici le code de ma page qui affiche le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = addslashes($_POST['date']);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <tr>
    <td><?php echo stripslashes($donnees['date']); ?></td>
    </tr>
    <?php
    } // Fin de la boucle qui liste les news
    ?>

  6. #6
    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
    Vous avez tout à gagner à utiliser un type DATE pour votre champ et de facto le format anglophone (Y-m-d). Ceci vous permet de les utiliser directement (opérations, comparaisons, ...).

    Je résume ce que vous pourriez faire pour effectuer les diverses opérations :
    • Récupérer (requête SELECT) la date au format francophone : convertissez-la à l'aide de la fonction MySQL date_format.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      $retour = mysql_query('SELECT *, DATE_FORMAT(date, "%d/%m/%Y") AS date_fr FROM regsitre WHERE id=' . intval($_GET['modifier_news']));
      $donnees = mysql_fetch_array($retour);
      // ...
      // Pour vérification :
      var_dump($donnees['date_fr']); // Format d/m/Y
      var_dump($donnees['date']); // Format Y-m-d
    • Pour insertion (requête INSERT et éventuellement à réutiliser pour des mises à jour - UPDATE) : 2 solutions :
      1. Vous faites faire la conversion à MySQL, fonction STR_TO_DATE :
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        // La date étant issue du formulaire sous un champ nommé date
        
        mysql_query("INSERT INTO registre SET `date` = STR_TO_DATE('" . $_POST['date'] . "', '%d/%m/%Y'), ...") or die(mysql_error());
        On suppose que la date est validée avant de réaliser cette insertion (gare aux injections de SQL sinon).
      2. Vous faites la conversion en PHP pour l'insertion :
        Code : Sélectionner tout - Visualiser dans une fenêtre à part
        1
        2
        3
        4
        5
        6
        7
        // Je ne me suis pas cassé la tête
        function dateen2fr($date) {
            list($jour, $mois, $annee) = explode('/', $date);
            return "$annee-$mois-$jour";
        }
        
        mysql_query("INSERT INTO registre SET `date` = '" . dateen2fr($_POST['date']) . "', ...") or die(mysql_error());
        Elle est volontairement non validée car cet aspect est traité ci-dessous.
    • La validation d'une date saisie (qu'on peut aussi réaliser en Javascript) :
      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
      function valider_date($date) {
          return preg_match('~^(\d{2})([/-])(\d{2})\2(\d{4})$~D', $date, $m) && checkdate($m[3], $m[1], $m[4]);
      }
       
      if ($_SERVER['REQUEST_METHOD'] == 'POST') {
       
          // ...
       
          if (!valider_date($_POST['date'])) {
             // Afficher de nouveau le formulaire et informer l'utilisateur
          }
       
          // ...
       
          // Tout est correct : exécuter la requête ou autre
      }


    Toutes ces explications sont issues de la FAQ, toute une partie étant consacrée aux Dates.

  7. #7
    Membre averti
    Profil pro
    Développeur multimédia
    Inscrit en
    Octobre 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Développeur multimédia

    Informations forums :
    Inscription : Octobre 2007
    Messages : 57
    Par défaut
    Oops, modif de post, je re-lis ton probleme, ya eu double post...
    Mais je pense que la réponse précédent la mienne peut t'être d'un tres bon secours...

    Tout est dit dedans.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2007
    Messages : 758
    Par défaut
    j'ai essayé mais voila le message d'erreur qui s'affiche dans ma page de résultat ;

    Parse error: parse error, unexpected '%' in c:\program files\easyphp1-7\www\testsphp\caserne\liste_registre.php on line 85

    et voila mon code pour afficher mes valeurs et ma date au format francais dans mon tableau ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $retour = mysql_query('SELECT *, DATE_FORMAT(date, '%d/%m/%Y') AS date_fr FROM regsitre ORDER BY date');
    while ($donnees = mysql_fetch_array($retour));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <tr>
    <td><?php echo '<a href="liste_REGISTRE.php?supprimer_news=' . $donnees['id'] . '">'; ?><img src="button_drop.png"></a></td>
    <td><?php echo stripslashes($donnees['personne']); ?></td>
    <td><?php echo stripslashes($donnees['epreuve']); ?></td>
    <td><?php echo stripslashes($donnees['score']); ?></td>
    <td><?php echo stripslashes($donnees['date_fr']); ?></td>
    <td><?php echo stripslashes($donnees['moniteur']); ?></td>
    </tr>

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

Discussions similaires

  1. Date par défaut dans un TextBox en Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/01/2009, 08h10
  2. [SQL] date du jour dans requete sql
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 17/10/2006, 00h50
  3. [SQL] date en français dans un tableau
    Par chouchouboy dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 25/06/2006, 22h56
  4. [Dates] Mettre date du jour dans une textbox
    Par Le Rebel dans le forum Langage
    Réponses: 1
    Dernier message: 13/02/2006, 07h27
  5. Mettre une date par defaut dans une textBox.
    Par yaumme dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/12/2005, 22h39

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