Avatar billede discotk Nybegynder
29. december 2009 - 09:57 Der er 4 kommentarer og
1 løsning

While - ændring af rækkefølgen

Hej Eksperter!

Jeg er igang med at et lille statistik system hvor jeg nu skal have skrevet mine data ud på en bestemt måde. Det virker fint, udover at det hele bliver skrevet ud i den forkerte rækkefølge. Her er koden:

<?php
require_once('Connections/cms.php');
mysql_select_db($database_cms, $cms);
$lastmonth =  date("d") . (date("m")-1);
$t = time();
while(date("dm", $t) != $lastmonth)
{
  $t -= (24*60*60);
  $countdate = date("d m Y", $t);
  echo $countdate . "<br/>";
  $counter_query = mysql_query("SELECT COUNT(DISTINCT ip) AS antal FROM counter where DATE_FORMAT(date,'%d %m %Y') = '$countdate' GROUP BY date") or die(mysql_error());
  if(mysql_num_rows($counter_query))
  {
    $row = mysql_fetch_array($counter_query);
    echo $row['antal'] . "<br/>";
  }
  else echo "0<br/>";
}
mysql_close($cms); 
?>

Lige nu skriver koden den nyeste dato først, men den skal skrive den ældste først (altså den for 30 dage siden).

Er forresten åben for forbedringer, ændringer eller anden ny læring, så bare fyr løs :)

På forhånd tak!
Avatar billede showsource Seniormester
29. december 2009 - 10:10 #1
Du henter da kun for den samme dato ?
where DATE_FORMAT(date,'%d %m %Y') = '$countdate'

Men start med at bruge et standard format til din dato:
YYYY-MM-DD

D.v.s lav et nyt felt i din tabel, og lad det være et DATE eller DATETIME felt

DATE = YYYY-MM-DD
DATETIME = YYYY-MM-DD HH:MM:SS

Så er du et godt stykke af vejen, også fremover !
Avatar billede showsource Seniormester
29. december 2009 - 10:14 #2
Der er en masse tid funktioner i mysql:
http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

Og strtotime() i php er anvendelig til at finde tidligere/fremtidige datoer:
http://dk.php.net/manual/en/function.strtotime.php
Avatar billede discotk Nybegynder
29. december 2009 - 11:44 #3
#1
Det er fordi jeg skal have skrevet nogle bestemte værdier ud fra den bestemte dato... I databasen står mine datoer også som YYYY-MM-DD. Men for brugervenlighedens skyld skriver jeg dem ud som DD-MM-YYYY.

2#
Systemet er klart blevet mere brugbart efter jeg udskiftede:

$lastmonth =  date("d") . (date("m")-1);
$t = time();

med:

$lastmonth = date('dmY', strtotime("last month"));
$t = strtotime('now');

Nu er der nemlig mulighed for at lave "last month" og "now" til variabler. Tak

Flere bud? - måske nogen der har løsningen til hvordan jeg arrangerer datoerne i den rækkefølge jeg ønsker, hvordan nyeste dato kommer til sidste og den ældste først?
29. december 2009 - 22:24 #4
discotk, saa er jeg her igen.  Jeg er, som vi har diskuteret, enig i at det kan laves paa mange maader, men hvis dit spoergsmaal er at acceptere den kode du viser bortset fra at vende dato raekkefoelgen om saa er her et svar (som i tidligere indlaeg ret for database forbindelse og navn paa tabel).  Kommentar:  Koden viser ogsaa antal hits for idag.  Hvis du ikke oensker det saa aendre $tomorrow til date("d") . date("m")  (og saa vil du nok kalde den $idag i stedet.)

<?
$link = mysql_connect ('christianjorgensen.be.mysql', 'christianjoygen', 'dnyBKKbe') or die(mysql_erorr());
mysql_select_db('christianjoygen') or die('Could not select database');
$tomorrow = (date("d")+1) . date("m");
$t = time() - (30*24*60*60);
while(date("dm", $t) != $tomorrow)
{
  $t += (24*60*60);
  $countdate = date("d m Y", $t);
  echo $countdate . "<br/>";
  $counter_query = mysql_query("SELECT COUNT(DISTINCT ip) AS antal FROM discotk where DATE_FORMAT(date,'%d %m %Y') = '$countdate' GROUP BY date") or die(mysql_error());
  if(mysql_num_rows($counter_query))
  {
    $row = mysql_fetch_array($counter_query);
    echo $row['antal'] . "<br/>";
  }
  else echo "0<br/>";
}
mysql_close($link); 
?>
Avatar billede discotk Nybegynder
30. december 2009 - 23:04 #5
Works like a charm :)

Tak for hjælpen :) Er der ikke en måde hvor jeg kan ændre:
$t = time() - (30*24*60*60);

til noget der ligner:

$t = strtotime('last month')
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester