Vinzenz Mai: Resultset erzeugen

Beitrag lesen

Hallo

# 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.
Wie jetzt?

$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.

Dafür kann ich nichts, so war es original.

Ja und? Wenn Du es neu schreibst, dann mach es besser.
Das hier ist katastrophale Codequalität.

Between geht nicht,

Selbstverständlich geht BETWEEN. Wenn die DB ein schlechtes Design aufweist,
dann muss man halt zu Konvertierungen greifen. Geht auch.

da man ja jeden Tag abfragen muss, auch in anderen Monaten, daher wurde die Schleife hier höchstwahrscheinlich so eingesetzt.

das ist überhaupt gar kein Problem, definitiv nicht in diesem Codeabschnitt.

[...]

# Was bitte kommt jetzt?
Abfrage der Datenbank, ob für den User ein event 'Urlaub' gespeichert ist und Festlegung der Darstellungsfarbe in der Variable 'farbe'

Nein, kommt nicht.
Hier, mitten in PHP steht

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

Was bitte soll das sein?
Eine Abfrage an die Datenbank?

Wo sendest Du ein SQL-Statement an die Datenbank?
Nirgends.

Da steht etwas, was ähnlich wie ein SQL-Statement aussieht, mitten im PHP-Code.

Es gibt die Fehlermeldung:

Unexpected T_String ab else

Du solltest Dein SQL-Statement als Zeichenkette an mysql_query() übergeben.
Wo machst Du das?
Habe ich da etwas übersehen?

Ja selbstverständlich hast Du völlig unnötig Datenbankzugriffe innerhalb einer
Schleife. Genau davon haben wir Dir abgeraten.
Da das auf einem lokalen Server läuft, ist das doch eh egal.

Mit diesem Argument kannst Du jede Verbesserung abwürgen.
Dein Code ist schlecht strukturiert.

Es ist grundsätzlich eine schlechte Idee, völlig unnötig eine Vielzahl von DB-Zugriffen in Schleifen vorzunehmen, wenn eine einzige reicht.

Nochmals: solche Zugriffe sind verdammt teuer.
Nein, ich weiß den genauen Faktor nicht.
Aber gewöhne es Dir besser von Anfang an an, es richtig zu machen.

Das da mag funzen[tm], mehr auch nicht. Gib Dich damit nicht zufrieden.

  • Nutze das Konzept der Funktionen.
  • Gehe großzügig mit dem Einsatz von Kommentaren um

Das wären zumindest Möglichkeiten für die Zukunft.

Bitte setze in Zukunft bei Deinen Postings Leerzeilen großzügiger ein.
Sie machen Deine Beiträge viel leichter lesbar.

Freundliche Grüße

Vinzenz