Fehler werden nicht ausgegeben || OOP

  • Hey,


    ich habe ein Formular zu welchem ich einen normale Fehlerbehandlung erstellen will. Nun wird aber kein error ausgegeben, weiß nicht warum.


    Mein script:


    Autoverleih.php

    index.php :


    Warum werden keine Fehler ausgegeben ?

    Findet ihr das setzten von private zu diesen eigenschaften richtig ?


    Und das Überprüfen ob es empty ist oder kein string ist greifen nicht.

    Der Name wird aber ausgegeben wenn man da was einträgt.


    Gruß,

    Stef

  • Du hast vergessen Vorname usw zu setzen. Da kann noch kein Fehler sein.

    Für den Vorname-setter würde ich das hier vorschlagen:

  • Hey,


    ich dödel setze erst den wert wenn kein fehler ist.. Mein Fehler. Danke für den Hinweis.


    Ja die anderen felder setze ich noch, ich wollte aber zuerst diesen fehler beheben.


    Zitat

    Für den Vorname-setter würde ich das hier vorschlagen:

    Warum benutzt du strlen() anstatt empty() oder !isset() ?


    Mit dem preg_match (reguläre ausdrücke heißt das glaub ich) kenne ich mich noch nicht aus. Habe einfach dies mal eingefügt. Jedenfalls kommt trotz eingabe von nur buchstaben immer der error.


    Habe es nun so gelöst :

    Habe überprüft ob der Parameter eine Nummer ist (als String oder auch als int). Und wenn das so ist kommt die fehlermeldung. Und dann noch die eingabe gefiltert und dann der eigenschaft vorname zugefügt.


    Ist das eine gute Vorgehensweise?


    Gruß,

    Stef

  • Ich mag empty nicht so richtig. Ist nicht falsch. Ich vermeide es nur so oft es geht,

    da 0, "", false, null,.... use alles empty ist.


    Zum preg_match - sorry. Ich hab das + vergessen:

    PHP
    preg_match("/^[a-zA-Z]+$/", $vName)

    Pattern:

    Code
    /                    delimiter (start pattern)
        ^                start zeile
            [a-zA-Z]     groß und kleinbuchstaben
            +            und davon 1 oder mehrere
        $                ende zeile
    /                    delimiter (end pattern)


    is_numeric prüft nicht, ob eine Zahl im Wort ist.

  • Hey,


    aso ok. Es funktioniert. Danke für die Beschreibung.


    Ich habe nun folgendes Problem:

    Ich möchte zwischen 2 Datums die differenz der tage ausrechnen, habe es schon mit diff() und weiteren funktionen getestet aber ohne erfolg.

  • DateTime http://php.net/manual/de/datetime.diff.php


    Wenn das nicht funktioniert - wie sieht denn das Format aus von den 2 die Du vergleichen willst?

  • Komisch.... vorhin hat folgendes nicht funktioniert:


    Jetzt werden, bei var_dump, die Datums einfach so ausgegeben. Die Tage werden nicht subtrahiert.


    Hab mir schon überlegt es mit minus zu machen aber das ist schwachsinn, weil wenn man in ein neuen monat geht. Gibts dann krumme ergebnisse.

  • GRRR.........


    wenn man genauer mal hischaut erkennt man schon meinen Fehler... :

    PHP
    $leiheStart = new DateTime($this->gemietetVon);
    $leiheEnde = new DateTime($this->gemietetVon);


    Jetzt klappts...


    PHP
    $leiheStart = new DateTime($this->gemietetVon);
    $leiheEnde = new DateTime($this->gemietetBis);
  • EDIT: Antwort überschnitten :D Ja so ein Dreher passiert.


    Simpler Fehler - zwei mal $this->gemietetVon genutzt.

    :)


    test:

    cottton nachname sie haben vom 2017-06-23 18:09:36 bis zum 2017-06-25 18:09:36 unser Auto, VW Käfer, mit dem Kennzeichen GR-123ABC gemietet. Die Gesamtkosten liegen bei 240€.

  • Ja.. habe jetzt 1 Stunde nach dem Fehler geschaut. Naja bei jedem Fehler lernt man dazu.


    Du mal ne Frage. Habe jetzt die ganze Fehlerbehandlung des Formulares sowie kostenberechnung, zeitberechnung und Speicherung der eingabe in den privaten eigenschaften ja durchgeführt.


    Ist denn dafür ein code in der länge von 270 Zeilen zu lang, für 10 input felder?


    Meine Idee dies kleiner zu machen ist, dass man in einer function alle eingaben erwartet und dann überprüft/validiert/usw....

    Was hälst du davon ?

  • Wird evtl zu unübersichtlich.

    Würde ein steuerscript (Controller) empfehlen (oder wie gehabt das Eingangs Script).

    Der prüft halt eben ,ob es überhaupt Eingaben gibt und

    Wenn ja, dann erstellt er ein neues Objekt von deiner Klasse.

    Dann würde ich ein setData() nutzen, in das Du dann zb die Post Daten rein schickst.


    kann leider kein bsp Code geben. Bin auf mobile momentan.


    Da drin setzt Du alle Werte und nutzt die jeweiligen Setter.

    Zb setName.


    setName ist jetzt alleine verantwortlich den Wert auf die Eigenschaft name zu setzen. Der Setter prüft, ob der Wert valid ist, und setzt ihn dann.

    Wenn nicht valid, dann Exception.


    Wenn alle Setter in setData durch sind, dann kannst du von aussen die Berechnung anstoßen.

    Wobei ich hier einen getter empfehlen würde.

    Im bsp getCosts().

    getCosts würde jetzt die Berechnung durchführen und den Wert returnen.


    Statt setData könnte man auch eine Factory nutzen. Eine Klasse, die die Rohdaten bekommt, evtl paar Optionen,

    Und dann das Objekt erstellt, alle Werte über die Setter setzt,

    und das Objekt returnt.


    Ich werde Mal sehen, ob ich Sontag wieder am PC bin. Dann kann ich auch Beispiele liefern ;D

  • Ja, das stimmt. Habe ich gemerkt.


    Steuerscript ?

    Meinst du damit ein externes PHP-Script welches diese ganzen Eingaben entgegennimmt schon filtert, fehler behandelt. Und dann dieses in das PHP-Hauptscript zu verlinken. Das man dort dann die Verleihung sowie Rückgabe erstellt , inklusive des Preises dann.


    Ok. Würde mich um Beispiele sehr freuen.


    Stef

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!