login  Naam:   Wachtwoord: 
Registreer je!
 Forum

kortere schrijfwijze datums vergelijken

Offline Louis_ - 06/03/2011 15:23 (laatste wijziging 06/03/2011 15:24)
Avatar van Louis_Nieuw lid hey,

Ik heb een script dat datums uit een database haalt, bijvoorbeeld 120 datums.
Al deze datums wil ik met één datum vergelijken, maar dat lukt niet.
Het probleem is dat deze "ene" datum in een for-loop staat en for/while/foreach allemaal rare dingen veroorzaken binnenin de for-loop en erbuiten niet werken..

Code:
  1. function printMaand($maand, $jaar) // Maand laten zien
  2. {
  3. $edag = eersteDagInMaand($maand, $jaar);
  4. $ldag = dagenInMaand($maand, $jaar);
  5. $rest = restDagen($edag, $ldag);
  6. $vandaag = mktime(0,0,0,date('n',time()),date('d', time()), date('Y', time()));
  7. $weekdag = array('ma', 'di', 'wo', 'do', 'vr', 'za', 'zo');
  8.  
  9. $r = mysql_query("SELECT dag FROM reserveringen WHERE status = 0") or die(mysql_error());
  10. if(mysql_num_rows($r) > 0)
  11. {
  12. $i = 1;
  13. while($array = mysql_fetch_array($r))
  14. {
  15. $dagen = $array['dag'];
  16. $day[$i] = $dagen;
  17. $i++;
  18. }
  19. }
  20.  
  21. echo "\n".'<table><tr>';
  22. foreach($weekdag as $dag)
  23. {
  24. echo '<td class="wday">'.$dag.'</td>';
  25. }
  26. echo '</tr><tr>'."\n";
  27. for($i = 0; $i < ($edag+$ldag+$rest ); $i++) // for i is kleiner dan de eerste dag in maand + dagen in de maand + de lege hokjes vergroot i.
  28. {
  29. if($i < $edag || $i >= ( $edag + $ldag )) //i kleiner dan de eerste dag of groter/gelijk aan de eerste dag + het aantal dagen in de maand.
  30. {
  31. echo '<td>&nbsp;</td>'."\n"; //een leeg hokje.
  32. }
  33. else
  34. {
  35. $dag = mktime(0,0,0,$maand,($i - ($edag - 1)),$jaar);
  36. $aqua = '<td class="bezet">'. ($i -($edag - 1)) .'</td>'."\n";
  37. $blue = '<td class="gereserveerd">'. ($i -($edag - 1)) .'</td>'."\n";
  38. $orange = '<td class="vrij">'. ($i -($edag - 1)) .'</td>'."\n";
  39.  
  40. if("bla" == "boe") {}
  41. //dit wil ik dus anders hebben, want ik heb véél meer dan 16 resultaten.
  42. elseif(($day[1]) == $dag) echo $blue;
  43. elseif(($day[2]) == $dag) echo $blue;
  44. elseif(($day[3]) == $dag) echo $blue;
  45. elseif(($day[4]) == $dag) echo $blue;
  46. elseif(($day[5]) == $dag) echo $blue;
  47. elseif(($day[6]) == $dag) echo $blue;
  48. elseif(($day[7]) == $dag) echo $blue;
  49. elseif(($day[8]) == $dag) echo $blue;
  50. elseif(($day[9]) == $dag) echo $blue;
  51. elseif(($day[10]) == $dag) echo $blue;
  52. elseif(($day[11]) == $dag) echo $blue;
  53. elseif(($day[12]) == $dag) echo $blue;
  54. elseif(($day[13]) == $dag) echo $blue;
  55. elseif(($day[14]) == $dag) echo $blue;
  56. elseif(($day[15]) == $dag) echo $blue;
  57. elseif(($day[16]) == $dag) echo $blue;
  58. elseif(($day[17]) == $dag) echo $blue;
  59. elseif(($day[18]) == $dag) echo $blue;
  60. elseif(($day[19]) == $dag) echo $blue;
  61. elseif(($day[20]) == $dag) echo $blue;
  62. elseif(($day[21]) == $dag) echo $blue;
  63.  
  64. else echo $orange;
  65.  
  66. if(($i + 1) % 7 == 0) //controleert of de rest van ($i+1) gedeeld door 7 "nul" is. Ofwel: is ($i+1) deelbaar door 7?
  67. {
  68. echo '</tr><tr>'."\n";
  69. }
  70. }
  71. }
  72. echo '</tr></table>';
  73. }
  74. printMaand($maand,$jaar);

8 antwoorden

Gesponsorde links
Offline Oneday - 06/03/2011 15:43
Avatar van Oneday Nieuw lid
  1. foreach ($day as $key => $value)
  2. {
  3. if ($value == $dag)
  4. {
  5. echo $blue;
  6. }
  7. }


Gewoon dit?
Offline Ibrahim - 06/03/2011 15:45 (laatste wijziging 06/03/2011 15:46)
Avatar van Ibrahim PHP expert Wat probeer je te bereiken eigenlijk en je if / else if constructie is echt angstaanjagend...

hoe kun je $dag[key] vergelijken met dezelfde variable?

edit @hierboven, hij zou eigenlijk gewoon in_array($needle, $haystack) kunnen gebruiken, maar $needle en haystack zijn in zijn geval hetzelfde...
Offline Oneday - 06/03/2011 16:20
Avatar van Oneday Nieuw lid
Ibrahim schreef:
Wat probeer je te bereiken eigenlijk en je if / else if constructie is echt angstaanjagend...

hoe kun je $dag[key] vergelijken met dezelfde variable?

edit @hierboven, hij zou eigenlijk gewoon in_array($needle, $haystack) kunnen gebruiken, maar $needle en haystack zijn in zijn geval hetzelfde...


Kan inderdaad ook met in_array nu je 't zo zegt. En 't zijn niet dezelfde variabelen hoor, 't zijn $daY en $daG. 
Offline ibmos2warp - 06/03/2011 17:24
Avatar van ibmos2warp PHP interesse Je slaat de datum toch wel als DATE op in de database?
Mysql heeft DATE_FORMAT waarmee je data kan formatteren.
De database kan zelf ook vergelijkingen uitvoeren.
Kijk anders ook eens naar PHP.net: datetime
Offline Louis_ - 10/03/2011 15:31
Avatar van Louis_ Nieuw lid De oplossing van Oneday werkt helaas niet..

@ibmos2warp: nee.

Offline Oneday - 10/03/2011 18:04
Avatar van Oneday Nieuw lid
Louis_ schreef:
De oplossing van Oneday werkt helaas niet..

@ibmos2warp: nee.


Laat eens zien hoe je 't in de code hebt geïntegreerd? Vermoedelijk ligt daar dan toch de fout.
Offline avdg - 10/03/2011 23:00
Avatar van avdg PHP gevorderde http://be.php.net/manual/en/function.strtotime.php werkt in veel gevallen magisch 

Gewoon een string geven en die functie verwerkt het in bruikbare seconden
Offline ibmos2warp - 11/03/2011 21:23
Avatar van ibmos2warp PHP interesse
Louis_ schreef:
De oplossing van Oneday werkt helaas niet..

@ibmos2warp: nee.


Nee wat?
Nee is zo onzinnig antwoord. Daar hebben we niks aan.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.226s