Bah mon problème précis c'est que je sais pas rien qu'en français, créer l'algorythme pour ce que je cherche à faire :/
Bonjour :)
J'ai un petit problème de logique algorythmique que j'arrive pas à résoudre, du coup je comptais un peu sur vous pour m'indiquez la voie à suivre.
Chaque connexion à mon site est enregistré dans ma BDD, j'ai ainsi l'IP et la date (en timestamp, je sais, c'est pas très propre mais bon..).
Ce que j'aimerai c'est pouvoir avoir le compteur pour la semaine passé du lundi au dimanche, ainsi que cette semaine, pareil du lundi au dimanche. (J'insiste sur le fait que je veux du lundi au dimanche, et non pas des X derniers jours, peu importe si la semaine est pas finit).
Donc je peux faire un group by des IP déjà pour ne pas compter plusieurs fois la même IP, mais après ça, je sais pas comment mettre en place le système de dates. J'ai beau chercher, la logique ne vient pas.
Après l'idée, c'est de ressortir ça sous la forme [1,4,3,10,0,3,8].
Voilà si vous pouvez m'aider, merci :)
Je reste dispo pour plus d'informations, je peux pas partager de code parce qu'il n'y en a tout simplement pas, vu que je pars de 0 pour ça. Peut-être faut-il sortir une fonction. Je sais pas quelle est la bonne méthode à adopter
6 réponses
Salut,
j'ai cru comprendre que tu n'as pas vraiment besoin d'enregistrer les date en TIMESTAMP.
Tu pourrai les convertir en DATETIME :
http://sql.sh/107-cast-timestamp-date
Comme ça tu peux utiliser "$datetime->format()" :
http://php.net/manual/fr/datetime.format.php
Tous les "formats" sont disponibles ici :
http://php.net/manual/fr/function.date.php
Il me semble que tu va vouloir utiliser : Y, m, d, et N
Ah zut,
eh bien je ne sais pas... Normalement tu t'en sors avec les 3 liens que j'ai donné.
Essaies un peu de prendre en ça en main, fais des tests pour voir comment ça fonctionne, toussa toussa...
Tu vas y arriver.
Et si tu tombes sur un problème précis, reviens ici, on pourra toujours te filer un coup de main.
Oui, je dis juste que les dates sont enregistrées en timestamp dans la bdd, rien ne m'empêche de les convertir pour obtenir mon résultat, mais je bloque toujours autant à ce niveau là
Salut,
Il faut manipuler les dates pour cela :
- Tu récupères le jour courant
- Tu récupères la date du dernier dimanche par rapport à la date actuelle
- Tu récupères la date du lundi d'avant par rapport à ce dimanche
- Tu fais un simple SELECT avec ces 2 dates comme conditions
- Tu boucles sur le résultat afin de ne récupérer que ce qui t'intéresse
Et le tour est joué ;)
Tu peux essayer de manipuler les dates avec CarbonPHP, il est pas mal. Sinon, tu as la classe DateTime de PHP (http://php.net/manual/fr/class.datetime.php).
Bon après des heures et des heures de recherche, à creuser, me torturé le cerveau, testé multitudes de codes foireux, j'ai finalement réussi à écrire le St Graal :
Et après suffit que j'appelle la requête avec getWeeklyCount()["current"] et il me donne mes informations : 4,5,10,2,0,6,6 par exemple.
Bref, sujet résolu, merci à ceux qui ont tenté de m'aider :)