Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/12/2007, 19h53   #1
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
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 :
1
2
3
$retour = mysql_query('SELECT * FROM regsitre WHERE id=\'' . $_GET['modifier_news'] . '\'');
    $donnees = mysql_fetch_array($retour);
$date = stripslashes($donnees['date']);
Code :
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
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 12h22   #2
Nouveau Membre du Club
 
Développeur multimédia
Inscription : octobre 2007
Messages : 57
Détails du profil
Informations personnelles :
Âge : 31

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

Informations forums :
Inscription : octobre 2007
Messages : 57
Points : 37
Points : 37
Envoyer un message via MSN à benbax
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.
benbax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h02   #3
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
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 :
 $date = addslashes($_POST['date("Y-m-d")']);
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h10   #4
Nouveau Membre du Club
 
Développeur multimédia
Inscription : octobre 2007
Messages : 57
Détails du profil
Informations personnelles :
Âge : 31

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

Informations forums :
Inscription : octobre 2007
Messages : 57
Points : 37
Points : 37
Envoyer un message via MSN à benbax
Date() est une fonction php, essaie juste avec :

benbax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h31   #5
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
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 :
    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 :
      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 :
      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 :
    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.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h39   #6
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
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 :
$date = addslashes($_POST['date']);
Code :
1
2
3
4
5
6
<tr>
<td><?php echo stripslashes($donnees['date']); ?></td>
</tr>
<?php
} // Fin de la boucle qui liste les news
?>
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 14h49   #7
Nouveau Membre du Club
 
Développeur multimédia
Inscription : octobre 2007
Messages : 57
Détails du profil
Informations personnelles :
Âge : 31

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

Informations forums :
Inscription : octobre 2007
Messages : 57
Points : 37
Points : 37
Envoyer un message via MSN à benbax
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.
benbax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2007, 17h47   #8
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
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 :
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 :
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>
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 10h26   #9
Nouveau Membre du Club
 
Développeur multimédia
Inscription : octobre 2007
Messages : 57
Détails du profil
Informations personnelles :
Âge : 31

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

Informations forums :
Inscription : octobre 2007
Messages : 57
Points : 37
Points : 37
Envoyer un message via MSN à benbax
Essaie avec des double quote... :
Code :
DATE_FORMAT(date, "%d/%m/%Y")
benbax est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2007, 13h07   #10
Membre régulier
 
Inscription : février 2007
Messages : 509
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 509
Points : 89
Points : 89
c'est bon benbax ca fonctionne avec les double quote, merci beaucoup
gastoncs est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h10.


 
 
 
 
Partenaires

Hébergement Web