Wenn eine Aktion fehl schlägt, die andere rückgängig machen

  • Hallo zusammen,


    ich habe folgende Ausgangssituation: Ein Script, bei dem zum einen eine Datei hochgeladen und zum anderen ein Eintrag in eine Datenbank geschrieben wird (beides mit PHP). Die beiden Aktion funktionieren auch schon sehr gut. Nun ist es aber so, dass es auch mal vorkommen kann, aus welchen Gründen auch immer, dass eine der beiden fehlschlägt.


    Da ich noch Anfänger in PHP bin, ist hier mein Latein leider zu Ende und ich brauche Eure Hilfe.

    Ich möchte eine Bedienung oder ähnliches einbauen, die überprüft, ob beide Aktionen durchlaufen und wenn eine fehlschlägt, die andere auch wieder rückgängig macht. Geht sowas?


    Vielen Dank schon einmal im Voraus für Eure Hilfe!

  • Hey,


    Du kannst überprüfen ob der Dateiupload erfolgreich war. Wenn nein dann gibts du der Variable erfolgreich den Wert False.


    Das selbe machst du dann beim Datenbankeintrag. Mit anderer Variable. Oder beides in einem Array.


    Wenn du dies hast, dann überprüfst du mittels einer IF-Abfrage ob diese beiden erfolgreich waren. Wenn ja gibst du dem User die Meldung Upload erfolgreich aus.


    Wenn nicht dann schaust du welcher Prozess nicht funktionierte und löschst entweder den Datensatz oder die Datei und gibst die Meldung aus Upload nicht erfolgreich. Bitte versuchen Sie es erneut!


    Beste Grüße,

    Stef

  • Das klingt logisch. Werde ich gleich mal ausprobieren und dir dann eine Rückmeldung geben. Danke dir!

  • Am besten kann man dazu Hilfestellung geben, wenn Du zeigst, wie Dein Code für den Upload und das Schreiben in die Datenbank aktuell aussieht.

    Das ist noch recht Basic, aber momentan geht es mehr um die Funktion ;)

  • 1st: Such mal im Netz nach "SQL-Injection". Dabei geht es um Sicherheit.

    Nutze Prepared Statements: https://www.php.net/manual/de/pdo.prepared-statements.php

    Nutze nicht ->query().


    ---

    Du hast 2 Abschnitte:

    - $s3->putObject() , was wohl ein Upload zu Amazon ist

    - INSERT INTO ..., was Dir die Infos zu dem File in Deine db schreibt


    Du kannst den Ablauf (in diesem Fall) umdrehen.

  • Ich habe das Ganze jetzt folgendermaßen gelöst: Eine if-Bedingung überprüft als erstes ob der Dateityp stimmt und die Datei im Verzeichnis noch nicht vorhanden ist. Wenn das stimmt wird versucht die Datei auf den Server zuladen und einen Datenbankeintrag zu erstellen. Klappt eines der beiden nicht wird jeweils andere rückgängig gemacht

Jetzt mitmachen!

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