Avatar billede 13thsky Nybegynder
07. september 2010 - 22:25 Der er 19 kommentarer og
1 løsning

Printe ordrer månedsvis

Jeg har følgende mysql-forsp hvor jeg henter ordrer ud. Men jeg kunne godt tænke mig at resultaterne blev adskilt månedsvis. Dvs. September 2009, oktober 2009 ... osv...


$forsp1 = mysql_query("SELECT id, ordrenummer, navn, adresse, postnummer, bynavn, dato FROM MU10salg WHERE user_id = $user_id ORDER BY dato DESC");

while($forsp2 = mysql_fetch_row($forsp1))
  {
    Her printes resultaterne ud.
  }
Avatar billede majbom Novice
08. september 2010 - 07:07 #1
$month = "";
while($forsp2 = mysql_fetch_row($forsp1))
{
  if($month != date('m', $forsp2['dato'])){
      $month = date('m', $forsp2['dato']);
      echo "Ny måned: $month";
  }
}


det er så forudsat at dit dato-felt er DATE eller DATETIME
Avatar billede jakobdo Ekspert
08. september 2010 - 13:08 #2
Kan du ikke lave en GROUP BY MONTH(dato) og så udskrive dem ?
Så vil du have dem samlet måned for måned.
Avatar billede 13thsky Nybegynder
10. september 2010 - 02:52 #3
Hej splazz
Det ser ikke ud til at virke. Den printer blot Ny måned 01 en gang på trods af at der er poster fra flere måneder.

Jakobo, du har sikkert ret. Men kan du vise mig mig hvordan?

K
Avatar billede 13thsky Nybegynder
10. september 2010 - 03:05 #4
btw, jeg bruger DATETIME i databasen.
Avatar billede majbom Novice
10. september 2010 - 08:22 #5
fetch_row, henter jo kun én række, prøv med fetch_assoc, eller fetch_array :)
Avatar billede jakobdo Ekspert
10. september 2010 - 08:27 #6
mysql_fetch_assoc / row / array gør det samme.
Det er bare resultatet som er forskelligt.
Avatar billede 13thsky Nybegynder
10. september 2010 - 09:21 #7
Det virker stadig ikke:
Min kode ser sådan ud:

$samletbeloeb = 0;
$samletbeloebtext = "";
$user_id = $_SESSION['user_id'];
$month = "";

db_con();
$forsp1 = mysql_query("SELECT id, ordrenummer, navn, adresse, postnummer, bynavn, telefon, email, beloeb, buyers_accept, kommentarer, dato, buyers_accept_rating, oprindelig_beloeb FROM MU10_salg WHERE user_id = $user_id ORDER BY dato DESC ");

while($forsp2 = mysql_fetch_array($forsp1))
  {
  if($month != date('m', $forsp2['dato']))
      {
      $month = date('m', $forsp2['dato']);
      echo "Ny måned: $month";
      }
//Printer noget mere
  }
Avatar billede jakobdo Ekspert
10. september 2010 - 10:56 #8
Virker din sql, hvis du tester den direkte i phpmyadmin ?
Avatar billede 13thsky Nybegynder
10. september 2010 - 11:02 #9
Altså, ja, den henter alt det ud den skal. Men øverst står der blot "Ny måned: 01" - hvorefter den printer posterne ud.
Avatar billede majbom Novice
10. september 2010 - 15:12 #10
-> #6 - mente bestemt den kun hentede den første række... :)

#1 burde virke...

hvad skriver den hvis du udskriver date('m', $forsp2['dato']); for hver række?
Avatar billede 13thsky Nybegynder
10. september 2010 - 16:05 #11
Hvis jeg udskriver date('m', $forsp2['dato']); for hver række skriver den bare 01 hver gang.

- og det samme hvis jeg skriver echo date('m', "2010-09-09");

- og hvis jeg skriver date('Y', "2010-09-09"); skriver den 1970 hver gang.


?
Avatar billede majbom Novice
10. september 2010 - 21:32 #12
hvad hvis du skriver Y i mit eksempel? skriver den så osse 1970 hver gang? for så indeholder $forsp2['dato'] nok ikke et gyldigt timestamp...
Avatar billede 13thsky Nybegynder
11. september 2010 - 09:57 #13
Ja, det gør den. Hvordan sikrer jeg at det er er gyldigt timestamp?
Er der ikke en funktion der bare kan finde ud af at printe måneden og året ud, når den får en dato som streng?
Avatar billede 13thsky Nybegynder
11. september 2010 - 10:01 #14
Kan det have noget at gøre med om php-filen er gemt som utf eller?
Avatar billede majbom Novice
11. september 2010 - 21:51 #15
nej, hvordan smider du datoen i databasen, når du gemmer?
Avatar billede 13thsky Nybegynder
12. september 2010 - 00:41 #16
Jeg bruger funktionen date("Y-m-d H:i:s"); som jeg så gemmer i databasen med
- jeg har også prøvet bare at indtaste en dato manuelt i phpmyadmin.

I databasen har "dato" datatypen DATETIME og kollation og attributter står tomme.
Avatar billede majbom Novice
12. september 2010 - 00:52 #17
sorry, det er mig der sover.

prøv med:

$month = "";
while($forsp2 = mysql_fetch_row($forsp1))
{
  if($month != date('m', strtotime($forsp2['dato']))){
      $month = date('m', strtotime($forsp2['dato']));
      echo "Ny måned: $month";
  }
}
Avatar billede 13thsky Nybegynder
12. september 2010 - 02:07 #18
Nu lykkedes det sq! Yes, tak.
Dog skulle jeg bruge mysql_fetch_array i stedet for mysql_fetch_row.

Takker... Dropper du et svar?
Avatar billede majbom Novice
12. september 2010 - 08:24 #19
ja, når du bruger fetch_row kommer resultaterne ikke med associative indexes, kun nummeriske :)

svar :)
Avatar billede majbom Novice
12. september 2010 - 13:19 #20
tfp :)
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