theresa: monatskalender rechnet falsch, aber nur bei erster woche

hi leute!

ich versuch mich gerade an einem kalender, beginne mit der monatsfunktion.

hier der code:
<?
//Monatskalender
if (isset($_GET['monthno'])) $monthno = $_GET['monthno'];
if (isset($_GET['year'])) $year = $_GET['year'];
if (!isset($monthno)) {
    $monthno=date(n);
}
if (!isset($year)) {
    $year = date(Y);
}

$monthfulltext = date(F, mktime(0, 0, 0, $monthno, 1, $year));
$monthshorttext = date(M, mktime(0, 0, 0, $monthno, 1, $year));
$day_in_mth = date(t, mktime(0, 0, 0, $monthno, 1, $year)) ;
$day_text = date(D, mktime(0, 0, 0, $monthno, 1, $year));
?>
<table bgcolor="#000000" border="0" cellpadding="0" cellspacing="1" width=800>
<tr><td colspan=7 bgcolor=#FFFFFF><? echo $monthfulltext." ".$year ?></td></tr>
<tr>
<td bgcolor=#FFFFFF>Mo</td><td bgcolor=#FFFFFF>Di</td><td bgcolor=#FFFFFF>Mi</td><td bgcolor=#FFFFFF>Do</td><td bgcolor=#FFFFFF>Fr</td><td bgcolor=#FFFFFF>Sa</td>
<td bgcolor=#FFFFFF>So</td>
</tr>
<tr>
<?
$day_of_wk = date(w, mktime(0, 0, 0, $monthno, 1, $year));

if ($day_of_wk <> 0){
   for ($i=0; $i<$day_of_wk; $i++)
   { echo "<td bgcolor=#FFFFFF>&nbsp;</td>"; }
}

for ($date_of_mth = 1; $date_of_mth <= $day_in_mth; $date_of_mth++) {
//wenn tag ist montag, zeile beginnen
    if ($day_of_wk = 0){
   for ($i=0; $i<$day_of_wk; $i++);
   { echo "<tr>"; }
}
    $day_text = date(D, mktime(0, 0, 0, $monthno, $date_of_mth, $year));
    $date_no = date(j, mktime(0, 0, 0, $monthno, $date_of_mth, $year));
    $day_of_wk = date(w, mktime(0, 0, 0, $monthno, $date_of_mth, $year));
//Wenn aktueller tag gleich heutiger tag
   if ( $date_no ==  date(j) &&  $monthno == date(n) )
     {  echo "<td bgcolor=#CCCCCC>".$date_no."</td>"; }
//Alle restlichen Tage des monats
   else{
   echo "<td bgcolor=#FFFFFF>".$date_no."</td>";  }
//Wenn Sonntag, dann tabelle abschließen
   If ( $day_of_wk == 0 ) {  echo "</tr>"; }
//wenn tag alles unter samstag UND monatstag noch existent
   If ( $day_of_wk < 6 && $date_of_mth == $day_in_mth ) {
   for ( $i = $day_of_wk ; $i < 6; $i++ ) {
     echo "<td bgcolor=#FFFFFF>&nbsp;</td>"; }
      echo "</tr>";
      }
 }
?>
</table>

und das ergebnis:
<table bgcolor="#000000" border="0" cellpadding="0" cellspacing="1" width=800>
<tr><td colspan=7 bgcolor=#FFFFFF>November 2005</td></tr>
<tr>
<td bgcolor=#FFFFFF>Mo</td><td bgcolor=#FFFFFF>Di</td><td bgcolor=#FFFFFF>Mi</td><td bgcolor=#FFFFFF>Do</td><td bgcolor=#FFFFFF>Fr</td><td bgcolor=#FFFFFF>Sa</td>
<td bgcolor=#FFFFFF>So</td>
</tr>
<tr>
<td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>1</td><td bgcolor=#FFFFFF>2</td><td bgcolor=#FFFFFF>3</td><td bgcolor=#FFFFFF>4</td><td bgcolor=#FFFFFF>5</td><td bgcolor=#FFFFFF>6</td></tr><td bgcolor=#CCCCCC>7</td><td bgcolor=#FFFFFF>8</td><td bgcolor=#FFFFFF>9</td><td bgcolor=#FFFFFF>10</td><td bgcolor=#FFFFFF>11</td><td bgcolor=#FFFFFF>12</td><td bgcolor=#FFFFFF>13</td></tr><td bgcolor=#FFFFFF>14</td><td bgcolor=#FFFFFF>15</td><td bgcolor=#FFFFFF>16</td><td bgcolor=#FFFFFF>17</td><td bgcolor=#FFFFFF>18</td><td bgcolor=#FFFFFF>19</td><td bgcolor=#FFFFFF>20</td></tr><td bgcolor=#FFFFFF>21</td><td bgcolor=#FFFFFF>22</td><td bgcolor=#FFFFFF>23</td><td bgcolor=#FFFFFF>24</td><td bgcolor=#FFFFFF>25</td><td bgcolor=#FFFFFF>26</td><td bgcolor=#FFFFFF>27</td></tr><td bgcolor=#FFFFFF>28</td><td bgcolor=#FFFFFF>29</td><td bgcolor=#FFFFFF>30</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td><td bgcolor=#FFFFFF>&nbsp;</td></tr></table>

kann mir das jemand erklären? ich hab irgendwo was mit sonntag als wochenbeginn verpatzt, aber ich sehs einfach nicht, verflixt...

DANKE!!!
die theresa

  1. hi,

    $monthfulltext = date(F, mktime(0, 0, 0, $monthno, 1, $year));
    $monthshorttext = date(M, mktime(0, 0, 0, $monthno, 1, $year));
    $day_in_mth = date(t, mktime(0, 0, 0, $monthno, 1, $year)) ;
    $day_text = date(D, mktime(0, 0, 0, $monthno, 1, $year));

    Zahlt dir irgendjemand eine Provision für jedes Mal, wo du

    mktime(0, 0, 0, $monthno, 1, $year)

    aufrufst?

    Andernfalls wäre es vielleicht nicht verkehrt, wenn du dir das Ergebnis dieses Aufrufs _einmal_ in einer Variablen ablegst, und diese dann als Parameter für die folgenden date()-Aufrufe benutzt.

    und das ergebnis: [...]
    kann mir das jemand erklären?

    Nein.
    Findest du nicht, dass Hinklatschen des Codes und eines Tabellenwustes als "Problembeschreibung" ein wenig dürftig ist?

    Also, neuer Versuch - bitte mit Erklärung, was dein Code machen soll, und was stattdessen geschieht.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Liebe theresa,

    ich versuch mich gerade an einem kalender, beginne mit der monatsfunktion.

    soll das in etwa soetwas werden?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.