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 :

Requête avec NOW() et DATE_FORMAT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut Requête avec NOW() et DATE_FORMAT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $ajoutAppel=$bdd->exec('INSERT INTO appels(numAppel, heureAppel, dateAppel, raisonAppel, dureeAppel, suiteAppel, nomPrenomAppelant, commentaire)
    VALUES("",CURTIME(),NOW(),"'.$raisonAppel.'","'.$dureeAppel.'", "'.$suiteAppel.'","'.$nomPrenomAppelant.'","'.$commentaire.'")');
    Cette requête fonctionne bien, le problème c'est que j'aimerais avoir la date du jour avec NOW() puis en même temps avoir la date sous format français.
    J'ai essayé dans ma requête de combiner à la fois NOW() et DATE_FORMAT mais ça ne marche pas. Avez-vous une solution ?

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    tu te pauses un faux probleme. la notion de date "en français" c'est une notion de présentation. dans ta base tu utilises le format de stockage et puis c'est tout.

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Salam (salut) ; le format français c'est juste pour l'affichage , les données sont stockée en format de mysql.
    http://dev.mysql.com/doc/refman/5.0/...functions.html

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    ok merci, dernière question : comment faire pour afficher ici (ligne de code en vert) la date correspondant au formulaire en français ?

    dans mon exemple ça ne m'affiche rien, ou si je n'utilise pas date_format j'ai la date en US !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    // si clic sur rechercherDateAppel et champ fonctionDateAppel rempli
                if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])){
                        $fonctionDateAppel=$_POST['fonctionDateAppel'];
                        $afficheDateAppel = $bdd->query('SELECT * FROM appels WHERE dateAppel="'.$fonctionDateAppel.'"')
                                                        or die(print_r($afficheDateAppel->errorInfo()));                                
                        echo 'Les appels datant du '.$_POST['DATE_FORMAT(fonctionDateAppel,\'%d/%m/%Y\')'].' :<br />';
                    while ($donnees = $afficheDateAppel->fetch())
                    {
                    $afficheFonctionDateAppel = array (
                        '<tr>Numéro de l\'appel : '.$donnees['numAppel'].'',
                        'Heure de l\'appel : '.$donnees['heureAppel'].'',
                        'Raison de l\'appel : '.$donnees['raisonAppel'].'',

  5. #5
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    normalement comme ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST[DATE_FORMAT($fonctionDateAppel,'%d/%m/%Y')]

  6. #6
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    c'est pas parce que tu reçois les données dans $_POST et qu'elles sont facile a acceder qu'il ne faut pas les vérifier avant, contre l'injection de code ( le cross site scripting par exemple, pas uniquement le SQL ).

    pourquoi ne pas avoir un bel objet DateTime ? tu recois une date de ton formulaire, tu ne gère que le français donc tu l'interprère comme une date française, ensuite tu la transforme en ce que tu veux, tous les problèmes de changement d'heure sont gérés nativement... bref la panacée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] );

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    ça ne marche pas, rien n'est affiché et l'ide ne m'indique aucune erreur avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Les appels datant du : '.$_POST[DATE_FORMAT($fonctionDateAppel,'%d/%m/%Y')].'<br />';

  8. #8
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    est ce que tu as bien activé l'affichage des erreurs et warnings?
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $_POST[DATE_FORMAT(date_create($fonctionDateAppel),'%d/%m/%Y')]

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    voici le message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    object(PDOStatement)#2 (1) { ["queryString"]=> string(49) "SELECT * FROM appels WHERE dateAppel="2012-06-13"" }
    concernant cette requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ('SELECT * FROM appels WHERE dateAppel="'.$fonctionDateAppel.'"')
    problème string sur dateAppel? la date doit bien être entre guillemets normalement

  10. #10
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    on dirait qtu n'as pas mis le message complet?

    à priori, la requête est bonne syntaxiquement...

    donc le problème viendrait peut-être de ta méthode query...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    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
    // si clic sur rechercherDateAppel et champ fonctionDateAppel rempli
                <?php if(isset($_POST['rechercherDateAppel']) AND isset($_POST['fonctionDateAppel'])){
                        $fonctionDateAppel=$_POST['fonctionDateAppel'];
                        $afficheDateAppel = $bdd->query('SELECT * FROM appels WHERE dateAppel="'.$fonctionDateAppel.'"
                                                        ORDER BY numAppel DESC')
                                                        or die(print_r($afficheDateAppel->errorInfo()));
                                                        var_dump($afficheDateAppel);
                        echo 'Les appels datant du '.$_POST[DATE_FORMAT($fonctionDateAppel,'%d/%m/%Y')].' :<br />';
                    while ($donnees = $afficheDateAppel->fetch())
                    {
                    $afficheFonctionDateAppel = array (
                        '<tr>Numéro de l\'appel : '.$donnees['numAppel'].'',
                        'Heure de l\'appel : '.$donnees['heureAppel'].'',
                        'Raison de l\'appel : '.$donnees['raisonAppel'].'',
                        'Durée de l\'appel : '.$donnees['dureeAppel'].'',
                        'Suite de l\'appel : '.$donnees['suiteAppel'].'',
                        'Collaborateur : '.$donnees['nomPrenomAppelant'].'',
                        'Commentaire : '.$donnees['commentaire'].'</tr>');?><br /><?php
                    foreach($afficheFonctionDateAppel as $element)
                    {
                        echo $element . '<br />';
                    }
                    }   
                        $afficheDateAppel->closeCursor(); // Termine le traitement de la requête
                    }
    j'ai fais cette méthode pour toutes mes query et pourtant elles fonctionnent. je sèche vraiment là ! merci quand même pour votre aide.

  12. #12
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ('SELECT * FROM appels WHERE dateAppel="'.$fonctionDateAppel.'"')
    Normalement, en SQL, les valeurs textuelles et les dates s'entourent d'apostrophes, pas de parenthèses. Il faudrait donc plutôt faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ("SELECT * FROM appels WHERE dateAppel='".$fonctionDateAppel."'")
    Et tant que tu y es, évite de relancer la guerre des étoiles !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    en fait, tu ne récupère pas l'erreur...

    tu utilises bien la méthode de pdo pour la récupérer dans $afficheDateAppel->errorInfo() ?
    car là ce que tu nous montres ressemble plus à ton var_dump (inutile au passage vu ta boucle de lecture...)

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    CinePhil ça ne change rien.

    Sinon pour la méthode PDO je dois mal l'utiliser je vais me renseigner dessus !

  15. #15
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par nolookpass8 Voir le message
    CinePhil ça ne change rien.
    Mais c'est mieux !
    Respecter la syntaxe élimine des sources de problèmes.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Mais c'est mieux !
    Respecter la syntaxe élimine des sources de problèmes.
    J'ai rectifié sur toutes mes requêtes merci

  17. #17
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    c'est vrai que " et ' sont tolérés comme délimiteurs pour les chaines dans tous les sgbd... disons qu'aucun ne respecte vraiment la norme mais que si toi tu t'y colle au mieux tu auras tendance à pondre du code qui resteras longtemps sans avoir besoin d'adaptation ensuite...

    regarde la doc de errorinfo

    la tu passes dans ton var_dump pas dans errorinfo, ce qui n'est pas surprenant si ta requête est bonne mais qu'elle ne génère rien à renvoyer...

    vérifie pour la date en question...

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    2 erreurs :

    Warning: date_format() expects parameter 1 to be DateTime, string given in C:\wamp\www\NetBeansProjects\suiviServiceInfo\statistiques.php on line 98

    et :

    Notice: Undefined offset: 0 in C:\wamp\www\NetBeansProjects\suiviServiceInfo\statistiques.php on line 98

  19. #19
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    tu avais pas autorisé l'affichage d'erreur tu vois, au niveau php...

    c'est quoi la ligne 98

    on doit la deviner?

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2012
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 199
    Par défaut
    ligne 98 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo 'Les appels datant du '.$_POST[DATE_FORMAT($fonctionDateAppel,'%d/%m/%Y')].' :<br />';
    celle-ci mon cher désolé !

    oui pas activé l'affichage d'erreur mais ce que je comprends pas c'est que l'affichage d'erreur fonctionne sur un PC et pas sur un autre.
    sur le PC où je suis en stage la version de wamp ne permet pas d'activer php_pdo_mysql via l'interface de wamp j'ai du mal rajouté l'extension manuellement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02
  2. Requète avec NOT EXISTS
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 15h20
  3. Requête avec l'expression Like
    Par Mvu dans le forum ASP
    Réponses: 3
    Dernier message: 02/09/2003, 09h39
  4. problème de requête avec jointures
    Par tinhat dans le forum Requêtes
    Réponses: 7
    Dernier message: 11/08/2003, 10h33
  5. Problème dans requête avec count()
    Par BadFox dans le forum Requêtes
    Réponses: 3
    Dernier message: 08/07/2003, 18h02

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