Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Kalendarz, Problem z pierwszym dniem miesiąca
Barcelona
post
Post #1





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


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.

(IMG:http://iv.pl/images/67517687747651199381.png)

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
Go to the top of the page
+Quote Post
crocodillo
post
Post #2





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


W końcu to pierwszy kwietnia, więc nie ma się co dziwić...
Powód edycji: [piotrooo89]: proszę nie offtopować
Go to the top of the page
+Quote Post
Barcelona
post
Post #3





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Bardzo udany offtopic (IMG:style_emoticons/default/happy.gif)
Ale prosiłbym o pomoc z problemem.
Go to the top of the page
+Quote Post
Piogola
post
Post #4





Grupa: Zarejestrowani
Postów: 151
Pomógł: 36
Dołączył: 1.02.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


  1. $start = date("w", $znacznik)-1;

Spróbuj wstawić zamiast -1 liczbe od -5 do 5
Go to the top of the page
+Quote Post
crocodillo
post
Post #5





Grupa: Zarejestrowani
Postów: 215
Pomógł: 44
Dołączył: 31.07.2011
Skąd: wrocław

Ostrzeżenie: (0%)
-----


no to teraz tak na serio:
  1. ...
  2. $start = date("w", $znacznik)-1;
  3. if ($start<0) $start=6;
  4. ...
Go to the top of the page
+Quote Post
Barcelona
post
Post #6





Grupa: Zarejestrowani
Postów: 322
Pomógł: 15
Dołączył: 29.01.2010

Ostrzeżenie: (0%)
-----


Dzięki, działa.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 15:13