CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[SQL] Sélection de record par date

]trichelieu[
]trichelieu[
Niveau 10
24 avril 2011 à 12:40:15

Bonjour à tous :)

Je suis en train de faire une page statistique pour le site d'un ami (que j'ai fait... bref), j'arrive à récolté toutes les infos sur visiteurs uniques et autres à l'aide de MySQL en enregistrant des trucs et notamment la date du passage de la personne.

J'aimerai pouvoir faire en sorte que lorsque l'admin du site sélectionne deux dates, ça envoie une requête sélectionnant toutes les infos entre ces deux dates.

En gros, un truc classique, qui me permettrait d'afficher le nombre de visiteur unique entre deux dates par exemple.

J'ai pensé à tout convertir en timestamp et sélectionné par comparaison... mais j'y suis pas parvenu. Si vous avez des solutions, je suis preneur :)

]trichelieu[
]trichelieu[
Niveau 10
24 avril 2011 à 12:44:32

Erf... je viens d'y repenser, mon problème est mille fois plus grand...

Ppour calculé le nombre de visiteur unique, j'enregistrer les IP des passants dans la BDD et à chaque fois après je comparé les IP pour évité les doublons.

Du coup, ça montrera les IP ayant été enregistré à tel date...

Donc en gros, faudrait que je trouve une fonction... qui... enregistre les ip, et si elle existe qui mette la date à jour... mais à ce moment là si par exemple :
-Le mec passe le 4 juillet.
-Il repasse le 19 Septembre

Si je cherche les stats pour le 4 juillet, il sera plus pris en compte... :fou:

Help :snif2:

Fire_Storm
Fire_Storm
Niveau 10
24 avril 2011 à 14:30:59

Date ou timestamp, et tu fais un simple BETWEEN (entre).

Pour les stats, je te conseillerais de le faire par jour, c'est à dire de ne pas mettre à jour les stats d'il y a 3 mois si le type se connecte avec la même IP, mais par contre le faire si il se connecte le même jour.

Après si tu veux savoir le nombre de visites uniques depuis X temps, là tu rajoutes un GROUP BY sur les IP (en gros si y a 2 IP les mêmes, mais des dates différentes, on groupe les IP qui ne deviennent alors plus qu'une seule, donc compte pour 1).

Maintenant c'est une solution qui me vient à l'esprit, c'est peut être pas la plus optimisée mais je pense qu'elle devrait marcher.

]trichelieu[
]trichelieu[
Niveau 10
24 avril 2011 à 16:30:14

Date ou timestamp, et tu fais un simple BETWEEN (entre).
:d) Je connaissais pas Between :( Merci :)

Pour les stats, je te conseillerais de le faire par jour, c'est à dire de ne pas mettre à jour les stats d'il y a 3 mois si le type se connecte avec la même IP, mais par contre le faire si il se connecte le même jour.
:d) J'ai du mal à te suivre... Ok, la mise à jour de la date c'est pas bon, ça j'ai compris, mais le " si il se connecte le même jour. ", c'est quoi qu'il faut mettre à jour alors ? En gros ça ferait des doublons d'IP avec des dates différentes qui seraient ensuite corrigé par le Group By IP ? :fou: Si je te suis bien ? :(

Fire_Storm
Fire_Storm
Niveau 10
24 avril 2011 à 17:05:07

Non, si tu modifies la date, tes stats vont foirer (puisque que si le type qui s'est connecté le 9 se reconnecte avec la même IP le 24, la stat du 9 disparaît tout simple avec ton système).

Maintenant tu va me dire oui mais si je fais une requete je vais me retrouver avec 2 fois la même adresse donc comptant pour 2 visiteurs uniques, et c'est exact mais il y a la solution du GROUP BY, GROUP BY sert grosso modo à "grouper" les mêmes éléments si il y a plusieurs fois le même et ça sera le cas ici, donc avec le GROUP BY si le type s'est connecté 50 fois sur 50 jours différent mais avec la même IP, il ne comptera que pour 1 visiteur unique et non 50.

]trichelieu[
]trichelieu[
Niveau 10
24 avril 2011 à 17:39:19

" oui mais si je fais une requete je vais me retrouver avec 2 fois la même adresse donc comptant pour 2 visiteurs uniques" :d) je pensais justement à ça oui :noel:

Donc en gros, le schéma serait :
-relève de l'IP
-On regarde si l'IP existe ~si non on l'enregistre avec date et autre
-Si l'IP existe, on regarde la date, si c'est la même qu'aujourd'hui alors on fait rien, sinon on ajoute l'IP avec cette date en laissant l'ancienne.

Et après pour appeller on utiliserait dans la requête Groupe By sur les IP et on prendra choisira les dates avec date() ou timestemp...

je pense avoir comprit ,mais dernière question : quand on prend la date d'aujourd'hui avec now() par exemple, ça prend le jour, le mois et l'année comme on veut, mais aussi l'heure. Comment on va faire pour comparé uniquement la date et pas l'heure ? :(

Fire_Storm
Fire_Storm
Niveau 10
24 avril 2011 à 18:16:10

Bonne question. xP

Je saurais pas te dire si ça va poser problème ou pas (je ne crois pas mais pas certain).

Sinon tu peux utiliser la fonction date (l'avantage est que tu formate comme tu veux la date).

Faudrait que je teste.

]trichelieu[
]trichelieu[
Niveau 10
24 avril 2011 à 18:47:42

Ça va en faite, je pense que je vais faire la requête en mettant DATE_FORMAT, et la date que je comparerai je ferais date('l jS F Y)... en théorie ça devrait marcher :(

]trichelieu[
]trichelieu[
Niveau 10
26 avril 2011 à 03:07:32

Alors, j'ai fait une page avec un formulaire envoyant une valeur date au format 01/01/2000
Sur une autre page, j'ai (enfin, en extrait) ~ C'est du PDO:

$date2 = $_POST['date'];

$date3 = $bdd->prepare('SELECT ID, DATE_FORMAT(Date,\'%d/%m/%Y\') AS Dateip1, IP, Referer, Browser FROM Log WHERE Dateip1 = "$date2" GROUP BY IP');

---
Et ça marche pas. J'ai essayé d'echo $date2, il pose pas problème. J'ai même essayer de le comparer à la date actuelle, en mettant la date actuelle comme valeur dans le formulaire, et tout marche.
En fait, le problème vient de $date3. En effet, cette requête ne renvoie RIEN. J'ai essayé des dates qui existait dans la bdd, et elle renvoie rien. En enlevant -WHERE Dateip1 = "$date2"-, là ça marche et ça m'envoie tout, et sous le bon format (01/01/2000).

Je comprends pas, j'arrive à comparer les dates, j'arrive à les appeler selon le bon format, mais impossible d'utiliser la fonction WHERE... Je pense que je passe à côté de quelque chose, mais je sais pas quoi... :(

Fire_Storm
Fire_Storm
Niveau 10
26 avril 2011 à 10:04:11

Bêtement si tu n'as pas encore essayé: echo de la requête, tu la colles dans phpmyadmin et tu l'exécute, si il y a une erreur il te le dira, sinon c'est qu'il faudra formaté la date je suppose.

]trichelieu[
]trichelieu[
Niveau 10
26 avril 2011 à 13:12:14

Pratique cette console SQL !

Tout marche maintenant, merci infiniment ! :)

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment