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 afficher une liste d'information comprise entre deux dates [MySQL]


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 Web
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut Requête afficher une liste d'information comprise entre deux dates
    Bonjour, je veux afficher une liste d'information comprise entre deux dates, mais voilà j'ai un souci avec ma requête et je n'arrive pas à savoir d'où vient l'erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
     
    //Format de date correspondant au type de dans la la BDD datetime
    $dateDeb = date('Y-m-d', strtotime($_POST['uptime']));
    $dateFin = date('Y-m-d', strtotime($_POST['downtime']));
     
    $query = mysql_query("SELECT * FROM trajet WHERE lieuembarquement LIKE '%".$_POST['from']."%' AND lieuarrivee LIKE '%".$_POST['to']."%' AND dateDep BETWEEN '".$dateDeb."' AND '".$dateFin."'");
    $query = mysql_fetch_assoc($query);
     
    ?>
    Le résultat de la requête est false alors qu'il y a un ligne de données qui correspond aux critères
    Même quand je convertis les dates en timestamp le résultat est le même.

    NB: je suis déjà passé en à la programmation PDO, j'hérite de ce projet déjà débuté par quelqu'un d'autre.

    Merci

  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
    Par défaut
    Si le retour de query est FALSE alors tu as une erreur, il faut l'afficher.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    Voici la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string(143) "SELECT * FROM trajet WHERE lieuembarquement LIKE '%Adiaké%' AND lieuarrivee LIKE '%Abidjan%' AND dateDep BETWEEN '2015-07-27' AND '2015-09-01'"

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    D'après la doc de MySQL :
    For best results when using BETWEEN with date or time values, use CAST() to explicitly convert the values to the desired data type. Examples: If you compare a DATETIME to two DATE values, convert the DATE values to DATETIME values. If you use a string constant such as '2001-1-1' in a comparison to a DATE, cast the string to a DATE.
    https://dev.mysql.com/doc/refman/5.0...erator_between

    Donc essaye d'ajouter des CAST sur tes dates :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * FROM trajet 
    WHERE lieuembarquement LIKE '%Adiaké%' AND lieuarrivee LIKE '%Abidjan%' 
    AND dateDep BETWEEN CAST('2015-07-27' as DATE) AND CAST('2015-09-01' AS DATE)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    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
    Par défaut
    Avant de changer quoi que ce soit il faudrait avoir l'erreur via PHP ou phpmyadmin au choix.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    237
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 237
    Par défaut
    La requête retourne false.

    Une capture de la BDD.
    .Nom : img-bdd.jpg
Affichages : 2557
Taille : 60,6 Ko

  7. #7
    Invité
    Invité(e)
    Par défaut
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    ... lieuembarquement LIKE '%Adiaké%' AND lieuarrivee LIKE '%Abidjan%' ...
    Normal : il n'y a pas d'"Adiaké" enregistré en BDD (en tout cas pas dans l'extrait de table que tu montres, et pour le champ "lieuembarquement" !), mais des mauvais caractères de remplacement.

    Ce qui signifie qu'il existe un problème d'encodage !

    Ce sont les données en la base de données qu'il faut corriger
    • tout doit être en utf-8
    • les mots doivent être enregistrés telq quel (avec les accents) => vérifier comment ils sont encodés lors de leur enregistrement
    Dernière modification par Invité ; 12/08/2015 à 14h08.

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Si tu affiches la requête et que tu l'exécutes directement sur la base (via PhpMyAdmin ou assimilé), est-ce que le résultat est correct ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  9. #9
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par karamaster Voir le message
    NB: je suis déjà passé en à la programmation PDO, j'hérite de ce projet déjà débuté par quelqu'un d'autre.
    Alors commence par retranscrire toutes les requêtes en PDO sur ce projet !
    Requêtes préparées !

    Car mettre directement des $_POST dans une requête est suicidaire...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2015, 09h08
  2. Réponses: 6
    Dernier message: 19/11/2013, 02h52
  3. Réponses: 3
    Dernier message: 03/11/2009, 07h19
  4. Réponses: 4
    Dernier message: 26/08/2008, 17h11
  5. afficher les dates comprisent entre deux dates
    Par hugobob dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/10/2006, 11h53

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