kostenloser Webspace werbefrei: lima-city


PHP + Mysql Kalender - auslese fehler

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    Hallo, habe hier einen kleinen EventKalender, jedoch mit einem kleinen tag/fehler">fehler.
    Tage werden zwar richtig ausgegeben, jedoch nur jeder ersten Tag mit einem Termin, alle anderen Termine werden Ignoriert..
    Hab ich einen auslese fehler drin? ..
    <?php
    $monat = date('n');			
    $jahr = date('Y');			
    $heute = date('d');			
    $first = date("w", mktime(0, 0, 0, $monat, 1, $jahr));   
    $last = date("t", mktime(0 ,0 , 0, $monat, 1, $jahr));     
    $monate = Array("", "Januar", "Februar", "M&auml;rz","April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember");
    $wochentage = Array("So", "Mo", "Di", "Mi", "Do", "Fr", "Sa", "So");
    if($first == 0)
    { 
     $first = 7;                
    }
    echo '<table width="198" border="0" cellspacing="0" cellpadding="0">
              <tr>
                <td bgcolor="#0092df"><table width="100%" border="0" cellspacing="0" cellpadding="0">
                  <tr>
                    <td align="center" class="tc_white"><a href="#" class="tc_white"><b>&laquo;</b></a></td>
                    <td width="50%" align="center" class="tc_white"><b>'.$monate[$monat].' '.$jahr.'</b></td>
                    <td align="center" class="tc_white"><a href="#" class="tc_white"><b>&raquo;</b></a></td>
                  </tr>
                </table></td>
              </tr>
              <tr>
                <td><table width="100%" border="0" cellspacing="0" cellpadding="0">';
    echo "<tr>";
    echo "<th align=\"center\" title=\"Montag\" class=\"kalender-day\">Mo</th>";
    echo "<th align=\"center\" title=\"Dienstag\" class=\"kalender-day\">Di</th>";
    echo "<th align=\"center\" title=\"Mittwoch\" class=\"kalender-day\">Mi</th>";
    echo "<th align=\"center\" title=\"Donnerstag\" class=\"kalender-day\">Do</th>";
    echo "<th align=\"center\" title=\"Freitag\" class=\"kalender-day\">Fr</th>";
    echo "<th align=\"center\" title=\"Samstag\" class=\"kalender-we kalender-day\">Sa</th>";
    echo "<th align=\"center\" title=\"Sonntag\" class=\"kalender-we kalender-day\">So</th>";
    echo "</tr><tr>";
    
    for ($j=1; $j < $first; $j++)
    {
     echo "<td>";
    }
    if(strlen($monat) == 1)
    {
     $sql_m = "0".$monat;
    }
    else
    {
     $sql_m = $monat;
    }
    $abfrage = mysql_query("SELECT * FROM cms_events WHERE datum BETWEEN '".$jahr."-".$sql_m."-01' AND '".$jahr."-".$sql_m."-31'");
    $total = mysql_num_rows($abfrage);
    //echo $total;
    for ($i=1; $i <= $last; $i++)
    {
     $x = $wochentage[date("w", mktime(0 , 0, 0, $monat, $i, $jahr))];
     if($total >= 1)
     {
      if(strlen($i) == 1)
      {
       $sql_i = "0".$i;
      }
      else
      {
       $sql_i = $i;
      }
      $row = mysql_fetch_assoc($abfrage);
      $event_date = $jahr."-".$sql_m."-".$sql_i; 	
      //$event_date2 = "2010-06-23"; 	  
      //echo $row['datum']."<|>";
      if ($event_date == $row['datum'])
      {
       $show_event = "<a href=\"".$row['datum']."\" align=\"center\">".$i."</a>";
       if ($i == $heute)
       { 
        echo "<td align=\"center\" class=\"kalender-today\">".$show_event."</td>";
       }
       else
       {
        echo "<td align=\"center\" class=\"kalender-border kalender-event\">".$show_event."</td>";
       }
      }
      else
      {
       if ($i == $heute)
       {
        echo "<td align=\"center\"class=\"kalender-border kalender-today\">".$i."</td>";
       }
       else
       {
        echo "<td align=\"center\" class=\"kalender-border\">".$i."</td>";
       }
      }
     }
     else
     { 
      if ($i == $heute)
      { 
       echo "<td align=\"center\" class=\"kalender-border kalender-today\">".$i."</td>";
      }
      else
      {
       echo "<td align=\"center\" class=\"kalender-border\">".$i."</td>";
      }
     }
     if($x == "So")
     {
      echo "</tr><tr>";
     }
    }
    echo '</table></td></tr></table>';
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hi daniel!

    ganz zu beginn hast du eine if abfrage " if ( $first == 0 ) ... "
    ich denke du solltest vorher $first zuerst mal deklarieren .. sonst kann er garnicht die bedingung richtig überprüfen ?!
    zb sag doch einfach $first == 0 ... und dann dein ganzes skript .. "$monat = date () " .. .etc
    hm ? =)

    ich muss grad mal zum studiensekretariat .. vllt schau ichs mir danach mal an :)

    grüße von daniel an daniel ! :D
  4. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    Hallo ;)
    also ich habe $first deklarieren.

    $first = date("w", mktime(0, 0, 0, $monat, 1, $jahr));

    da wird ja der erste tag des monats ermittelt..

    kann es bei der mysql schleife ein fehler sein?
  5. ok .. dickes sorry !! .. hab ich wirklich übersehen ..

    hm aber wieso hast du dann diese if abfrage drin ? die springt doch garnicht an!

    ich hab mal vor der abfrage "if $first == 0... " mal ein echo $first gesetzt und es ergab 2 .. also geht deine bedingung niemals in erfüllung .. und ein else hast du nicht drin oder ?

    dann hab ich grad mal VOR dieser eben bedingung $first = 0; gesetzt und dann ergab dein kalender kein sinn mehr .. probiers mal aus .. ;)

    ich hätte es eh anders gemacht .. ich überleg mir grad was ...

    grüße daniel =)
  6. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    $first ist der wochentag als zahl, damit ich weiß wo er anfangen soll mit der eins... ist $first = 0 soll er ihn auf 7 setzen, wegen Sonntag.

    problem gefunden..

    habs in eine array gespeichert.. ;D

    meine frage jetzt nur zusätzlich, wie kann ich die hintergrund farbe von den wochentage, samstag & sonntag ändern? sprich, das die eine andere backgroundcolor bekommen...


    ps: danke daniel!

    Beitrag zuletzt geändert: 24.6.2010 13:28:00 von daniel
  7. Du könntest in der For-Schleife dein $i mit dem Modulo-Operator % auf gerade und ungerade prüfen. Je nachdem ob gerade oder ungerade kannst du eine CSS-Klasse hinzufügen:

    if ($i % 2 == 0)
    {
      // $i ist gerade
      // definiere eine CSS-Klasse oder speichere den Farbcode in eine Variable, die du später verwendest
    }
    else
    {
      // $i ist ungerade
      // definiere eine CSS-Klasse oder speichere den Farbcode in eine Variable, die du später verwendest
    }


    Beitrag zuletzt geändert: 24.6.2010 14:26:16 von wagnerm
  8. Autor dieses Themas

    daniel

    daniel hat kostenlosen Webspace.

    super, konnte es mit $x ermitteln.. habe einfach eine if($x == "So") gemacht und und habe dann eine classe hinzugefügt.. und fertig! super! danke ;D
  9. Achso, da habe ich die Fragestellung falsch verstanden. Ich dachte du möchtest die Hintergrundfarbe der Zeilen abwechselnd darstellen... :angel:

    Aber du hast ja die Lösung dann schließlich selbst gefunden. :thumb:

    Beitrag zuletzt geändert: 25.6.2010 11:15:25 von wagnerm
  10. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!