dedlfix: Dynamische Datums ermittlung

Beitrag lesen

echo $begrüßung;

Hier mein Script das ich nun gebastelt habe. Ist vllt nicht sehr elegant gelöst aber es funktioniert und das reicht mir :)

Den meisten (oft auch Fortgeschrittenen) scheint es zu reichen, wenn "funktioniert" die Mindestfunktionalität umfasst, die sie sich vorgestellt haben, übersehen aber gern dabei, dass manchmal noch weit mehr möglich ist, und sie sich dessen Auswirkungen nicht vorgestellt haben, geschweige denn sich diese wünschen.

Schaut es euch an... vllt findet Ihr ja noch verbesserungen... Bestimmt findet Ihr welche :)

Natürlich.

//weißt auf einen Datensatz

den Maler anweisen, die Wand zu weißen (Nein, ich werde jetzt nicht alle Rechtschreibfehler in den Kommentaren anschwärzen.)

//Zu Testzwecken auf 25 gesetzt im echt System wird der Eintrag vom system übergen
                 $sid = "25";
          $abfrage = "SELECT Filialeid FROM $tabelle WHERE sid = $sid";

Hier hast du eine SQL-Injection-Lücke. Da der Inhalt von $sid im Nicht-Test-Fall sonstwoher kommt, und du ihn nicht kontrolliert hast, ist das Statement beliebig erweiterbar. Mit intval() wird ein Integerwert erzwungen. mysql_real_escape_string() kann auch helfen, aber dann die Quotes nicht vergessen, sonst bringt das nichts: Siehe https://forum.selfhtml.org/?t=174351&m=1145197

$result = mysql_query($abfrage);
                 while($row = mysql_fetch_array($result))

Auch sehr üblich: Du hast nicht mit einkalkuliert, dass mysql_query() misslingen kann. Es gibt dann false zurück, was aber kein gültiges Argument für mysql_fetch_array() ist und mit einer PHP-Fehlermeldung geahndet wird. Überprüfe jedes Funktionsergebnis auf Fehlerhinweise gemäß den Informationen im PHP-Handbuch und reagiere angemessen, unter anderem auch aus der Sicht des Anwenders. die() ist beispielsweise keine Fehler_behandlung_, schon gar keine anwenderfreundliche.

{
                  $filialid = $row['Filialeid'];
                 }

Warum verwendest du überhaupt eine Schleife zum Abfragen, wenn du nur ein Ergebnis erwartest?

$abfrage = "SELECT tag FROM $tabelle WHERE Filialeid = $filialid";
                 $result = mysql_query($abfrage);

while($row = mysql_fetch_array($result))
                 {
                  $liefer_tag = $row['tag'];
                 }

Das selbe in grün. Beide Anfragen können übrigens in einer zusammengefasst werden. Du holst dir mit der sid die Filialeid, nur um dir von dieser den tag zu holen. Da kannst du dir gleich den tag von der sid holen.

//Differenz wird errechnet

Ein interessanterer Kommentar wäre gewesen, warum sie berechnet werden muss, und auf welcher Grundlage das passiert. Dann kann man sogar als Außenstehender (und das wirst auch du nach ein paar Wochen des Vergessens sein) nachvollziehen, ob diese Rechnung das gewünschte Ergebnis bringt und auch keine Nebenwirkungen hat. Eine fachlich Prüfung der Berechnung überspringe ich deswegen.

//Definiert das Jahr
                 $year  = date("Y");
                 //Definiert das heutige Datum
                 $heute = date("j.n.Y");
                 //Datum wird hochgerechnet
                 $heute = $heute + $zaehler;
                 //das Jahr wird angefügt, da es bei der berechnung irgendwie verloren geht
                 $heute .= ".$year";

Na, das ist ja auch kein Wunder. date() gibt einen String zurück. Es ist nun kein Datum oder Zeitwert mehr, mit dem man rechnen könnte. PHP versucht aus dem String eine Zahl zu erkennen, um dann damit die Addition durchführen zu können. Dass dabei der Teil nach dem zweiten Dezimalpunkt verloren geht, ...

Wenn du heute + x Tage haben möchtest, kannst du in PHP die Funktion strtotime() verwenden. Die liefert dir einen berechneten Timestamp-Wert, den du dann mit date() formatieren kannst. Mit strtotime() sind auch Berechnungen à la "next Thursday" einfach erledigt.

$lieferdatum = $heute;

Ach was! $lieferdatum = berechnung($heute) wäre auch sprachlich sinnvoller gewesen als $heute zu verfälschen.

{
          echo "Es konnte keine Verbindung zur Datenbank Hergestellt werden.";
         }

Na immerhin ein Reagieren auf Fehler. Wenn mir auch als Anwender nur bleibt mit den Schultern zu zucken, und mich woanders nach einen umzusehen, der liefern kann.

Besser fände ich es, nach dem Motto: "Das Lieferdatum kann momentan nicht ermittelt werden. In der Regel beträgt die Lieferzeit jedoch x Tage. Bei Fragen wenden Sie sich bitte an: ..."

echo "$verabschiedung $name";