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

Langage PHP Discussion :

Stocker et afficher des données sans doublon en fonction d'une condition


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ergonome
    Inscrit en
    Août 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Août 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut Stocker et afficher des données sans doublon en fonction d'une condition
    Bonjour à tous,

    Alors voici mon problème. J’ai une table SQL avec des données qui sont de la forme :
    ID  	ID_NOM 	   DATE1       	   DATE2
    1         12     2020-04-18      2020-04-19
    2         12     2020-04-22      2020-04-28
    3         13     2020-04-22      2020-04-28
    4         13     2020-04-18      2020-04-18
    5         14     2020-04-18      2020-04-18
    Je voudrais en quelque sorte «*cumuler*» des données.
    C’est à dire que je voudrais dire par exemple que si les dates correspondent à ce que je veux alors je veux afficher le nom et si ce n’est pas le cas je ne veux pas les afficher.
    Exemple : disons que la première ligne, la date correspond à ce que je veux mais pas la seconde ligne. Il s’agit du même ID_NOM mais du coup, je ne veux pas afficher parce que il m’a dit AU MOINS UNE FOIS «*non la date correspond pas*».

    Un bout de code peut être pour mieux comprendre le principe.

    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
    $date_voulue = "2020-04-20;
    foreach ($requete as $data2)
    {
    	if ($date_voulue < $data2['date1’] ) 
    	{
    		echo 'OK';
    		echo 'Affichage';
    		echo $data2['id_nom'];
    	}
    	else
    	{
    		echo 'pas ok';
    	}
    }
     
    //Et ici je veux donc afficher tous les id_noms qui sont OK. Mais pas en double.
    Comment faire ?
    Merci pour votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Normalement, tu devrais pouvoir faire le tri directement avec la requête SQL :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    "SELECT DISTINCT ID_NOM 
       FROM .......
       WHERE DATE1 <= :date_voulue 
       AND DATE2 >= :date_voulue"
    A adapter...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ergonome
    Inscrit en
    Août 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Août 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Merci pour cette réponse. C'est en effet ce que j'ai commencé à faire finalement.
    J'ai donc fait ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT t.id_nom,m.IdCpt 
      FROM table t INNER JOIN mat m ON t.id_nom = m.IdCpt 
     WHERE t.id_nom NOT IN (
                SELECT t.id_nom FROM table t 
                 WHERE (:date_demprunt BETWEEN t.date_d AND t.date_r) 
                        OR (:date_deretour BETWEEN t.date_d AND t.date_r) 
                        OR (t.date_d BETWEEN :date_demprunt AND :date_deretour) 
                        OR (t.date_r BETWEEN :date_demprunt AND :date_deretour)
            )

    Mais cela ne fonctionne pas tout à fait .... et je bloque...

    Je précise que les dates sont au format yyyy-mm-dd mais par simplicité j'ai mis mon exemple au format dd/mm/yy.

    Je m'explique en prenant un exemple avec le petit jeu de données suivants :

    ID 	ID_NOM 	DATE_D 	DATE_R
    1 	-20 	-26/04/20 	-28/04/20
    2 	-23 	-10/04/20 -	23/04/20
    3 	-39 	-10/04/20 	-23/04/20
    4 	-68 	-10/04/20 	-23/04/20
    5 	-2298 	-10/04/20- 	23/04/20
    6 	-2299 	-10/04/20 -	23/04/20
    7 	-11 	-15/04/20 -	17/04/20
    8 	-20 	-15/04/20 -	17/04/20
    9 	-23 	-15/04/20 -	17/04/20
    10 	-39 	-15/04/20 -	17/04/20
    11 	-68 	-15/04/20 	-17/04/20
    12 	-2298 	-15/04/20- 	17/04/20
    13 	-2299 	-26/04/20 -	29/04/20
    14 	-4972 	-16/04/20 -	17/04/20
    15 	-1013 	-16/04/20 -	17/04/20
    Voici les différents tests que j'ai fait :


    $date_demprunt = 12/04/20 et $date_deretour = 14/04/20 => Il m'affiche les id_nom 11,20,1013 et 4972. Il manque le 2299.

    $date_demprunt = 01/04/20 et $date_deretour = 05/04/20 => Il m'affiche les id_nom 11,20,23, 39, 68, 2298,2299,1013 et 4972. C'est OK.

    $date_demprunt = 01/04/20 et $date_deretour = 25/04/20 => Il m'affiche .... rien du tout. Alors qu'il devrait m'afficher 20 et 2299.

    Merci pour votre aide !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les colonnes "date_d" et "date_r" sont bien au format DATE SQL, ou pas ?

    Pour que ça fonctionne, les DATES doivent être enregistrées/définies au format standard DATE SQL : YYYY-MM-DD.

    Sinon, voir SQL DATE_FORMAT().

  5. #5
    Membre à l'essai
    Femme Profil pro
    Ergonome
    Inscrit en
    Août 2014
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ergonome

    Informations forums :
    Inscription : Août 2014
    Messages : 52
    Points : 24
    Points
    24
    Par défaut
    Merci oui les dates sont au bon format SQL.

    En fait, c'était une erreur de ma part. J'ai mal regardé et les exemples que j'ai donné ne sont pas corrects.
    En fait, ma requête fonctionne parfaitement comme je le souhaite ! :-)
    Merci

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

Discussions similaires

  1. [XL-MAC 2016] Lister sans doublon en fonction d'une condition.
    Par Garex dans le forum Excel
    Réponses: 1
    Dernier message: 23/05/2018, 15h15
  2. comment afficher des données sans doublons
    Par arckaniann dans le forum Requêtes
    Réponses: 8
    Dernier message: 20/06/2013, 12h02
  3. récuperer des données sans doublon et avec date ancienne
    Par faniette dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 23/04/2013, 16h50
  4. [AC-2010] Requête Action Mise à jour des données sans doublons
    Par macakou99 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 12/09/2012, 17h07
  5. [DOM] PHP et XML pour stocker et afficher des données
    Par sasaas dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 22/02/2008, 18h20

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