Bestellstatus ändern per Cronjob?

Thema wurde von FlorianR, 16. Juli 2021 erstellt.

  1. FlorianR

    FlorianR Erfahrener Benutzer

    Registriert seit:
    20. November 2015
    Beiträge:
    1.319
    Danke erhalten:
    236
    Danke vergeben:
    933
    Helau,

    gerne würde ich nachts per Cronjob alle Bestellungen mit einem bestimmten Status auf einen anderen Status setzen.

    Leider weiß ich nicht, wie ich das anstellen soll und bin dankbar für jede Unterstützung :)

    Danke
    Florian
     
  2. dmun

    dmun Erfahrener Benutzer

    Registriert seit:
    2. Juni 2019
    Beiträge:
    298
    Danke erhalten:
    27
    Danke vergeben:
    6
    Dazu Bedarf es keines externen Cronjobs, denn solche Dinge kann MySQL / MariaDB selbst.
    Nennt sich Ereignis oder Event und dort kannst Du dann die Abfrage eingeben und diese alle 12 Stunden ausführen lassen. Zum Beispiel: Update orders set orders_status = 0815 where orders_status = 666

    Grüße, Dirk
     
  3. Wilken (Gambio)

    Wilken (Gambio) Erfahrener Benutzer

    Registriert seit:
    7. November 2012
    Beiträge:
    18.737
    Danke erhalten:
    7.309
    Danke vergeben:
    2.208
    Das lassen nur viele Hoster nicht zu...

    Da würde ich eher was gegen die API schreiben.
     
  4. Christian Mueller

    Christian Mueller Beta-Held

    Registriert seit:
    4. Juli 2011
    Beiträge:
    3.693
    Danke erhalten:
    885
    Danke vergeben:
    288
    und dann noch den aktuellen Status in die order_status_history schreiben, sonst klemmt es an anderen Stellen.
     
  5. FlorianR

    FlorianR Erfahrener Benutzer

    Registriert seit:
    20. November 2015
    Beiträge:
    1.319
    Danke erhalten:
    236
    Danke vergeben:
    933
    Top! Vielen Dank!

    all-inkl kann das. Läuft perfekt.
     
  6. FlorianR

    FlorianR Erfahrener Benutzer

    Registriert seit:
    20. November 2015
    Beiträge:
    1.319
    Danke erhalten:
    236
    Danke vergeben:
    933
    Ach herrje, wie geht das denn bzw. wie wäre der SQL Befehl dafür? Das, was @dmun da als Vorlage geliefert hat, konnte ich direkt so einbauen und es hat geklappt (Statusnr. habe ich natürlich noch angepasst ;-) )
     
  7. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    1.660
    Danke erhalten:
    1.262
    Danke vergeben:
    300
    @FlorianR Bitte nutze dazu die API, die macht für dich die entsprechenden Einträge in den verknüpften Tabellen, gerade auch was Datenkonsistenz und Integrität angeht, sollte darauf verzichtet werden das direkt in der Datenbank zu machen.
    (Link nur für registrierte Nutzer sichtbar.)
     
  8. dmun

    dmun Erfahrener Benutzer

    Registriert seit:
    2. Juni 2019
    Beiträge:
    298
    Danke erhalten:
    27
    Danke vergeben:
    6
    In dem Event können mehrere Abfragen vorhanden sein, Du kannst also die Änderungen Aufteilen:
    a) Alle Datensätze welche geändert werden sollen in eine Temporäre Tabelle schreiben
    b) Alle Orders ändern welche in der Temp.-Tabelle stehen
    c) Alle Historie-Einträge ändern welche in der Temp.-Tabelle stehen
    d) Temp.-Tabelle löschen

    Es gibt noch zahlreiche andere Wege, lässt sich alles recht kurz und knackig formulieren.

    Wenn Du Dich mit Stored Procedures auskennst, dann könntest Du dies auch in eine SP umsetzen und den Weg mit der Temp.Tabelle einsparen. Dann wird nur die SP auf gerufen vom Event.

    Grüße, Dirk