Vinzenz Mai: Resultset erzeugen

Beitrag lesen

Hallo Hugo,

Was ist bitte jetzt noch falsch?

viel.

<code>

Wie Du Syntaxhervorhebeung bekommst, steht in der Hilfe:

[ code lang=sprache ]
ohne die Leerzeichen nach der einleitenden
und vor der schließenden eckigen Klammer)
Abschluss (wiederum ohne Leerzeichen) mit
[ /code ]

$now_date = date("Y-m-d", mktime(date("H")+$timezone,date("i"),date("s"),date("m"),date("d"),date("Y")));

Hier beginnt eine Schleife

for ($d=1; $d <= date("t", mktime(0,0,0,($month+1),0,$year)); $d++) {
  // fetch events

# Den Ausdruck
     # mktime(0, 0, 0, $month, $d, $year)
     # benutzt Du im weiteren Code insgesamt dreimal

Es ist daher sinnvoll diesen Wert einer Variablen zuzuweisen
       und im folgenden auf diese Variable zuzugreifen.

  
    # Trenne die Argumente einer Funktion mit Leerzeichen nach dem Komma  
    $aktueller_tag = mktime(0, 0, 0, $month, $d, $year);  
    $datum2        = date("Y-m-d", $aktueller_tag);  
  
    # ist viel besser lesbar als  
  

>   $datum2 = date("Y-m-d",mktime(0,0,0,$month,$d,$year));  

# Hier setzt Du in einer Schleife ein SQL-Statement ab.
     # Ein Statement für jeden Tag

# Viel besser ist es, ein Statement _vor_ der Schleife für den
     # ganzen Zeitraum abzusetzen

# Noch besser ist es, das Statement, dass Du per PHP zusammenbaust
     # zuerst einer Variablen zuzuweisen, die Du zu Debugzwecken auch
     # ausgeben oder mitprotokollieren kannst.

$result3 = db_query("select ID
                         from ".DB_PREFIX."termine
                       where datum like '$datum2' and an=$user_ID") or db_die();

# Ein Skript sterben zu lassen, ist meist keine sinnvolle Fehlerbehandlung
     # [...] WHERE datum LIKE
     # deutet auf einen falschen Datentyp für das Datum hin.
     # Du solltest außerhalb der Schleife mit BETWEEN arbeiten.

$row3 = db_fetch_row($result3);

# durchnumerierte Variablen sind miserable Variablen
     # siehe auch </archiv/2006/5/t130464/#m843335>

// today = red
  if ($now_date == $datum2) {

# Formatiere irgendetwas als irgendwas
         # ich vermisse Kommentare.
         # Du wirst in ein paar Wochen nicht mehr wissen, was Du warum
         # genau so programmiert hast.

$da = "<div style='color:red; background-color:$terminfarbe; font-weight:bold;'>".$d."&nbsp;</div>";

# wäre der Einsatz von CSS-Klassen nicht sinnvoller?

}
  elseif ($row3[0] > 0 and !$view) {
      // days with events = black
      $da = "<div style='color:black; font-weight:bold;'>".$d."&nbsp;</div>";}

// weekend

hier könnten wir wieder die oben eingeführte Variable $aktueller Tag nutzen:

  
     elseif (date('w', $aktueller_tag) == 0 || date('w', $aktueller_tag == 6) {  
  
# statt  
  

>   elseif (date('w', mktime(0,0,0,$month,$d,$year)) == 0 || date('w', mktime(0,0,0,$month,$d,$year)) == 6) {  

$da = "<div style='font-weight:900; color:".$weekend_color.";'>".$d."&nbsp;</div>";}
  // holidays
  else {

# Was bitte kommt jetzt?

select an, datum, event, if(event='Urlaub','$holidays_color','blue') as farbe

[/code]

Unexpected T_String ab else

Hm ja, inzwischen solltest Du es sehen :-)

from termine
  where (an = $an) and (datum = '$year-$month-$d');

  
Was soll mit diesem SQL-Statement, wenn Du es endlich in eine PHP-Zeichenkette  
umgeformt hast, passieren. Noch eine Abfrage innerhalb der Schleife?  
  

> "from termine" ist in einer neuen Zeile, oder fehlt da nur irgendwo ein Semikolon?  
> Sagt jetzt nicht, der Datenbankzugriff in der Schleife, außer ihr wisst, wie man das besser machen kann.  
  
Ja selbstverständlich hast Du völlig unnötig Datenbankzugriffe innerhalb einer  
Schleife. Genau davon haben wir Dir abgeraten.  
  
Zu Deiner Codestruktur  
  
 - Bitte schreibe/male Dir vorher auf altmodischem Papier die Struktur Deines Programmabschnittes auf.  
 - Nutze das Konzept der Funktionen.  
 - Gehe großzügig mit dem Einsatz von Kommentaren um  
  
  
Freundliche Grüße  
  
Vinzenz