Avatar billede jammerlab Nybegynder
27. december 2005 - 17:02 Der er 10 kommentarer og
1 løsning

While loop

Jeg er lidt rusten når det kommer til while loops.
Det er noget kalender halløj. Jeg har 3 variabler der indikere starten på en leje periode $s_dag $s_maa $s_aar og tilsvarende for når den slutter $sl_dag $sl_maa $sl_aar...

Det jeg gerne vil have lavet er en while loop der kører perioden igennem og ligger noget data ind i min mysql for hver dag så dagene bliver booket... så jeg skal "bare" have en while loop der kører fra start dag til slut dag (Hvor den self. tar højde for måned og år)
Avatar billede jammerlab Nybegynder
27. december 2005 - 17:03 #1
$s_d = 1;
$s_m = 1;
$s_aa = 2003;

$l_d = 10;
$l_m = 1;
$l_aa = 2003;


while (???) {

   

}
Avatar billede nizo Nybegynder
27. december 2005 - 18:38 #2
$i = $s_d;
while($i <= $l_d)
{
  //Dine MySQL query's her

  $i++;
}
Avatar billede jammerlab Nybegynder
27. december 2005 - 20:04 #3
$i = $s_d;
while($i <= $l_d)
{
  //Dine MySQL query's her

  $i++;
}

Hvis jeg har forstået den rigtigt så går den jo kun igennem ved dage... den tar ikke hensyn til om den skal ind i en anden månede eller år... så hvis det er den 10/1 og vi skal slutte ved den 11/12 så vil den kun kører en gang.
Avatar billede nizo Nybegynder
27. december 2005 - 23:01 #4
Det er jo bare at sætte nogle flere while-loop paa..


$id = $s_d;
$im = $s_m;
$iaa = $s_aa;



while($iaa <= $l_aa)
{
  while($im <= $l_m)
  {
    while($id <= $l_d)
    {
      //Dine MySQL query's her

      $id++;
    }
  $im++;
  }
$iaa++;
}
Avatar billede nizo Nybegynder
27. december 2005 - 23:09 #5
Men den tæller 10 dage for hver maanede, med nogle matematiske udregninger kan man gøre det rigtigt:


$s_d = 1;
$s_m = 1;
$s_aa = 2003;

$l_d = 10;
$l_m = 1;
$l_aa = 2003;

$all_s_aa = ($s_aa) * 365;
$all_s_m = ($s_m) * 30;
$all_s_d = ($s_d);
$all_s = $all_s_aa + $all_s_m + $all_s_d;


$all_l_aa = ($l_aa) * 365;
$all_l_m = ($l_m) * 30;
$all_l_d = ($l_d);
$all_l = $all_l_aa + $all_l_m + $all_l_d;

$i = $all_s;
while($i <= $all_l)
{
  //Dine MySQL query's her

  $i++;
}
Avatar billede jammerlab Nybegynder
28. december 2005 - 02:37 #6
Ser lækkert ud men jeg kan ikke få det til at fungere... istedet for mysql sætter jeg echo "$i "; ind men den echo'er ikke en daddel... virker den hos dig?
Avatar billede ranglen Nybegynder
28. december 2005 - 02:55 #7
prøv denne

$start = gmmktime(0, 0, 0, $s_m, $s_d, $s_aa);
$slut = gmmktime(23, 59, 59, $l_m, $l_d, $l_aa);

for($day=1; $start < $slut; $start += (60*60*24), $day++){
    echo "Dag $day<br>";
}
Avatar billede nizo Nybegynder
28. december 2005 - 12:48 #8
Hmm.. Jeg fik lavet en rimlig stor fejl, men jeg har lige lavet det lidt om og testet det lokalt:


<?php
$s_d = 1;
$s_m = 1;
$s_aa = 2003;

$l_d = 10;
$l_m = 1;
$l_aa = 2003;

$all_l_aa = ($l_aa - $s_aa) * 365;
$all_l_m = ($l_m - $s_m) * 30;
$all_l_d = ($l_d - $s_d);
$all_l = $all_l_aa + $all_l_m + $all_l_d;
$i = $s_d;
while($i <= $all_l)
{
  //Dine MySQL query's her

  echo $i;
  $i++;
}
?>


Men jeg vil nok anbefale ranglen's da jeg ikke har haft speciel meget erfaring med tid i PHP :o)
Avatar billede jammerlab Nybegynder
29. december 2005 - 13:14 #9
Ranlen's metode ser ihvertfald ud til at fungere :)
Avatar billede nizo Nybegynder
29. december 2005 - 14:30 #10
Min fungerer ogsaa, jeg har testet den ;o)
Men ranlen's virker nok bare bedre..
Avatar billede jammerlab Nybegynder
03. januar 2006 - 20:21 #11
Ranglen smid et svar så deler i
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