Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kalendarz
Forum PHP.pl > Forum > Przedszkole
Barcelona
Witam, na stronie mam zastosowany kalendarz, który fabrycznie pokazywał tydzień od niedzieli do soboty. Trochę mi to nie pasowało, więc przerobiłem bo żeby pokazywał od poniedziałku do niedzieli.
Myślałem że wszystko dobrze zrobiłem, ale jak zobaczyłem miesiąc "Kwiecień" to zacząłem drapać się po głowie.



W kwestii wyjaśnienia 1 kwietnia przypada w niedziele.

Zamieszczam kod

  1. function kalendarz($ile) {
  2. $znacznik = mktime(0, 0, 0, date("m")+$ile, 1);
  3. $iledni = date("t", $znacznik);
  4. $start = date("w", $znacznik)-1;
  5. $miesiac = date("m", $znacznik);
  6. $rok = date("Y", $znacznik);
  7. $brygada = $_SESSION['brygada'];
  8. $miesiace = array(
  9. "Styczeń", "Luty", "Marzec", "Kwiecień", "Maj", "Czerwiec",
  10. "Lipiec", "Sierpień", "Wrzesień", "Październik", "Listopad", "Grudzień"
  11. );
  12. $od = date("Y-m-d", mktime(0, 0, 0, $miesiac, 1, $rok));
  13. $do = date("Y-m-d", mktime(0, 0, 0, $miesiac, $iledni, $rok));
  14. $uzyte = array();
  15.  
  16. $wynik = mysql_query("SELECT DATE(data) AS data FROM produkcja
  17. WHERE brygada='$brygada' AND data BETWEEN '$od' AND '$do' GROUP BY DATE(data)");
  18. while($wynik and $dane=mysql_fetch_assoc($wynik)) $uzyte[] = $dane['data'];
  19.  
  20. echo "<table border='0' cellspacing='0' cellpadding='2' id='rounded-corner'><thead><tr><th scope=\"col\" class=\"rounded-company\">";
  21. echo "<a href='index.php?strona=raport&podstrona=tygodniowy&week=".$_GET['week']."&ile=".($ile-1)."'>&lt;&lt;</a>";
  22. echo "</th><th scope=\"col\" colspan='5' align='center'>";
  23. echo $miesiace[$miesiac-1]." $rok</td><th align='right' scope=\"col\" class=\"rounded-q4\">";
  24. echo "<a href='index.php?strona=raport&podstrona=tygodniowy&week=".$_GET['week']."&ile=".($ile+1)."'>&gt;&gt;</a>";
  25. echo "</th></tr><thead>";
  26. echo "<tr><td>Pn</td>
  27. <td>Wt</td><td>Śr</td><td>Cz</td><td>Pt</td><td>So</td><td>Nd</td></tr>";
  28. echo "<tr align='right'>";
  29. if ($start>0) echo "<td colspan='$start'>&nbsp;</td>";
  30. else $pierwszy=true;
  31. for ($i=1;$i<=$iledni;$i++) {
  32. $dzien = date("w", mktime(0, 0, 0, $miesiac, $i-1, $rok));
  33. if ($dzien==0 and !$pierwszy) echo "</tr><tr align='right'>";
  34. $pierwszy = false;
  35. // tu jest wersja dla uzytej i pustej daty:
  36. if (in_array(date("Y-m-d", mktime(0, 0, 0, $miesiac, $i, $rok)), $uzyte)) {
  37. echo '<td><b><a href="index.php?strona=raport&podstrona=dzienny&data='.date("Y-m-d", mktime(0, 0, 0, $miesiac, $i, $rok)).'">'.$i.'</a></b></td>'; // uzyta
  38. } else {
  39. echo "<td>$i</td>"; // pusta
  40. }
  41. }
  42. $koniec=7-($start+$iledni)%7;
  43. if ($koniec<>7) echo "<td colspan='$koniec'>&nbsp;</td>";
  44. echo "</tr>
  45. <tfoot>
  46. <tr>
  47. <td colspan='6' class=\"rounded-foot-left\"><em>Brygada ".$brygada."</em></td>
  48. <td class=\"rounded-foot-right\">&nbsp;</td>
  49. </tr>
  50. </tfoot>
  51. </table>";
  52. }


Gdzie robię błąd? Pozdrawiam
crocodillo
W końcu to pierwszy kwietnia, więc nie ma się co dziwić...
Barcelona
Bardzo udany offtopic happy.gif
Ale prosiłbym o pomoc z problemem.
Piogola
  1. $start = date("w", $znacznik)-1;

Spróbuj wstawić zamiast -1 liczbe od -5 do 5
crocodillo
no to teraz tak na serio:
  1. ...
  2. $start = date("w", $znacznik)-1;
  3. if ($start<0) $start=6;
  4. ...
Barcelona
Dzięki, działa.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.