Update JDatabase

  • Hallo,


    ich will in meinem Code einen zufälligen Datenbankeintrag auslesen, dessen Datumsspalte leer ist und
    anschließend in die Datumsspalte das Tagesdatum mit "update" eintragen.


    Kann ich bei der Abfrage nach der leeren Zelle IS NULL oder == " " verwenden?
    Fügt JDatabase automatisch danach das Datum in den aktuellen Datensatz ein oder muss ich den
    Datensatz erneut mit "select" bestimmen?



    Gruß Dietmar

  • @jdgf willst du deine Datenbankstruktur posten? Dann könnte man dir gezielter helfen und dein Query exakt zusammenbauen. Ich habe jetzt nur auf deine IS NULL Abfrage geschaut - das sieht aus als wäre das Datum als string gespeichert, was nicht gut ist.


    Du machst zuerst ein Select, dann ein update. Stehen die beiden in einem Zusammenhang? Machst du das Select um dann irgendwas mit den Daten zu machen und machst später ein update? Oder möchtest du nur ein Update machen?

  • Hallo Christiane,
    danke für deine Hilfe.


    Zitat

    jdgf willst du deine Datenbankstruktur posten? Dann könnte man dir gezielter helfen und dein Query exakt zusammenbauen.


    Es ist eigentlich nur eine Tabelle, bestehend aus vier Spalten (id, text, autor, datum).


    Zitat

    Du machst zuerst ein Select, dann ein update. Stehen die beiden in einem Zusammenhang? Machst du das Select um dann irgendwas mit den Daten zu machen und machst später ein update? Oder möchtest du nur ein Update machen?


    Die Spalten 1 bis 3 (id, text und autor) der Tabelle ändern sich nicht. Die vierte Spalte 'datum' dient dazu, sicherzustellen, dass nicht an zweimal derselbe Text veröffentlicht wird.
    Mit dem der Select-Anweisung wird überprüft, ob die Datumsspalte leer ist. Für diesen Fall wird zum Beispiel der Text A veröffentlicht und anschließend in die vierte Spalte das Tagesdatum mit "Update" eingetragen werden. Dadurch kann dieser Text beim nächsten Mal nicht mehr veröffentlicht werden.

  • Da du nicht angibst wie dein datum definiert ist - hier ist ein Beispiel für eine update-Anweisung. Es ist Pseudocode. Anpassen musst du es selbst.


    Code
    $query = $db->update($db->qn('#__verzeichnis))
              ->set($db->qn('datum') . ' = NOW()')    /* oder wie das jetzt-datum bei dir aussieht */
              ->where($db->qn('datum') . ' = ' . $db->q($db->getNullDate())) /* oder wie das null-datum bei dir aussieht */
              ->where($db->qn('id') . ' = ' . (int) $id)  /* falls du einen bestimmten Satz ändern möchtest dessen id du hast */