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 :

Difficulté de récupérer une valeur (date) de formulaire dans un select where like [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut Difficulté de récupérer une valeur (date) de formulaire dans un select where like
    Bonjour à Tous



    je peine à récupérer la valeur d'une date pour la passer dans un select where like

    mon code est assez simple et fonctionne bien avec la date en dur


    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <form method="post" >
    <input type="date" name="datefrom"  value="<?php echo date('dd-mm-yyyy'); ?>" /> affiche la date
    <br/>
    <input type = "submit" value="Envoyer">
    </form>
     
    PHP je transforme la date pour être lue dans la requête new1 résultat du formulaire new2 modification en jj/mm/yyy
    <?php
    date_default_timezone_set('Europe/Paris');
    $new1 = $_POST['datefrom']; 
    $new2 = date ("d/m/Y H:i:s", strtotime ($_POST['datefrom']));	
     
    echo $new1; verif
    ?>
    // Si tout va bien, on peut continuer
     
    <?php
    echo $new2;	verif
     
    // On récupère tout le contenu de la table log_nmea
    $reponse = $bdd->query('Select distinct date_log, latitude, longitude, vitesse, cap, cap_surface, profondeur, vitesse_vent_apparent, angle_vent_apparent FROM log_nmea	
    <form method="post" >
    <input type="date" name="datefrom"  value="<?php echo date('dd-mm-yyyy'); ?>" /> affiche la date
    <br/>
    <input type = "submit" value="Envoyer">
    </form>
     
    PHP je transforme la date pour être lue dans la requête new1 résultat du formulaire new2 modification en jj/mm/yyy
    <?php
    date_default_timezone_set('Europe/Paris');
    $new1 = $_POST['datefrom']; 
    $new2 = date ("d/m/Y H:i:s", strtotime ($_POST['datefrom']));	
     
    echo $new1; verif
    ?>
    // Si tout va bien, on peut continuer
     
    <?php
    echo $new2;	verif
     
    // On récupère tout le contenu de la table log_nmea
    $reponse = $bdd->query('Select distinct date_log, latitude, longitude, vitesse, cap, cap_surface, profondeur, vitesse_vent_apparent, angle_vent_apparent FROM log_nmea WHERE date_log LIKE "'$new2'%"' ); //la variable $réponse  c'est l'execution de la requête c'est la question posée fetch c'est l'extraction des données et la mise en tableau 
     
    ?>; //la variable $réponse  c'est l'execution de la requête c'est la question posée fetch c'est l'extraction des données et la mise en tableau 
     
    ?>

    J'ai une erreur au niveau de l'instruction WHERE date_log LIKE "'$new2'%"' )

    J'ai lu après tout sur le sujet et j'ai essayé plusieurs formules sans succès


    Je vous remercie de votre aide

  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
    Il manque les points de concaténation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query('Select distinct date_log, latitude, longitude, vitesse, cap, cap_surface, profondeur, vitesse_vent_apparent, angle_vent_apparent FROM log_nmea WHERE date_log LIKE "'.$new2.'%"' );
    Par contre les dates dans la requête doivent être au format YYYY-mm-dd

  3. #3
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Bonjour Sabotage et merci de ta réponse

    Dans la requête en dur la syntaxe WHERE date_log LIKE "24/01/2018%"' est correcte


    J'avais essayé comme tu dis mais sans succès

    la requête en dur me donne le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    liste des logs Liste des Logs
    affiche la date
    PHP 2018-01-24// Si tout va bien, on peut continuer 24/01/2018 00:00:0024/01/2018 00:00:00
     
     
     
     
    Date 	latitude 	longitude  	vitesse 
    24/01/2018 07:58:36  		005°22,100'E   	005°22,100'E   	0.0Kt	
    24/01/2018 07:58:37  		005°22,100'E   	005°22,100'E   	0.0Kt


    ???????????,

  4. #4
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Suite.....

    erreur et correction

    avec la concaténation je suis en erreur de syntaxe sur le LIKE

    the right syntax to use near 'LIKE "24/01/2018%"

    donc la valeur est correctement passée puisqu'elle me renvoie ce que je mets en dur mais elle ne s'exécute pas

    j'ai dans l'erreur la même syntaxe qu'en dur

    'LIKE "24/01/2018%" VS LIKE "24/01/2018%"



    Merci

  5. #5
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Autant pour moi

    erreur de ma part

    LIKE LIKE

    Merci Sabotage je crois que tu m'as aidé à résoudre le pb.

    A un moment on fait erreur sur erreur ( au dessus je mettais dans la variable une date + heure ) et je faisais le like sur cette variable.

    Une petite aide permet de se recadrer

    Encore merci

    je reteste et je mets ce post en résolu

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 233
    Points
    20 233
    Par défaut
    C'est volontaire d'utiliser une chaine de caractère plutôt qu'un type de date reconnu par ton SGBD ?

  7. #7
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    Citation Envoyé par grunk Voir le message
    C'est volontaire d'utiliser une chaine de caractère plutôt qu'un type de date reconnu par ton SGBD ?

    Tu veux dire qu'au niveau du like on aurait pu envoyer date ("d/m/Y", strtotime ($_POST['datefrom'])) au lieu d'utiliser la variable new2 (new1 ne sert à rien c'était pour debugger)

    WHERE date_log LIKE "'.$new2.'%"

    Pas vraiment je n'arrivais pas à trouver la bonne syntaxe.

    je dois dire que je débute en php et j'ai beaucoup de petits pbs de syntaxe que je tente de résoudre seul avec les articles du net; je fais appel au forum quand j'ai perdu plus d'une journée, sinon ce n'est pas un forum mais un cours particulier.

    Donc je suis preneur de conseils

    Merci de ton intervention

  8. #8
    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
    Non il veut dire qu'il faut utiliser un colonne de type DATE dans ta base de données.

  9. #9
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 233
    Points
    20 233
    Par défaut
    Citation Envoyé par ODYSSEUS13 Voir le message
    Tu veux dire qu'au niveau du like on aurait pu envoyer date ("d/m/Y", strtotime ($_POST['datefrom'])) au lieu d'utiliser la variable new2 (new1 ne sert à rien c'était pour debugger)

    WHERE date_log LIKE "'.$new2.'%"

    Pas vraiment je n'arrivais pas à trouver la bonne syntaxe.
    Je veux dire que Mysql possède des type pour les date qui permettent de ne pas travailler avec des LIKE : https://dev.mysql.com/doc/refman/5.7...ime-types.html

    Les 2 plus courant sont DATE (pour juste une date) et DATETIME ( pour date + heure).
    C'est stocker sous le format Y-m-d pour les DATE et Y-m-d H:i:s pour les DATETIME. Le format de date français n'existe pas en informatique.

    Si tu utilise un champs de type DATE tu peux ensuite facilement faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE monchampsdate = '2018-01-18'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM matable WHERE monchampsdate < '2018-01-18'
    et plein d'autres chose.

    La seule contrainte étant qu'il faut faire un formatage pour afficher la date en français à l'utilisateur si nécessaire.

  10. #10
    Membre du Club
    Homme Profil pro
    particulier
    Inscrit en
    Décembre 2017
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Décembre 2017
    Messages : 105
    Points : 56
    Points
    56
    Par défaut
    bonjour à tous

    désolé de vous remercier aussi tard mais je n'avais pas de connexion disponible.

    Merci donc de vos conseils

    Bonne Journée

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

Discussions similaires

  1. [JSF] Récupérer une valeur d'un formulaire
    Par infoLife dans le forum Spring Web
    Réponses: 0
    Dernier message: 13/08/2011, 19h36
  2. Récupérer une valeur d'un formulaire POST
    Par drake56 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 15/12/2009, 14h42
  3. Réponses: 2
    Dernier message: 12/09/2008, 09h24
  4. [AJAX] récupérer une valeur d'un formulaire en javascript
    Par bennap dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/05/2007, 17h09
  5. récupérer une valeur d'un formulaire en php
    Par feten dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/11/2005, 13h29

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