Zweite Anweisung ausführen in JDatabase

  • Hallo!
    In dem Script wird zuerst ein Eintrag abgefragt, dessen Bedingung ist, dass er in der der Datumsspalte die Ziffer 0 enthält.
    Mit der zweiten Anweisung (Zeile 9 des Codes) möchte ich die ID der ermittelten Zeile übernehmen und sie in der Variablen $ID speichern.


    Wo ist der Code fehlerhaft, da ich immer eine leere Seite erhalte, wenn ich die Zeile 9 aktiviere.



    Danke für die Hilfe im voraus.
    Gruß Dietmar


  • siehe: https://docs.joomla.org/Selecting_data_using_JDatabase


    BTW. Das Datum sollte nicht "0" sein sonder wenn es ein Datum ist $db->getNullDate(); was in MYSQL "0000-00-00 00:00:00" entspricht.

  • Auf das NullDate bin ich beim letzten Mal schon eingeganen, das ist aber anscheinend nicht angekommen, auch der Vorschlag für das chaining nicht.
    Anscheindend steht im Datum die Ziffer 0, der TE alleine weiss, warum.


    Ich könnte noch die performantere Schreibweise vorschlagen (ungetestet):

    Code
    $query->select($db->quoteName(array('autor', 'zungenbrecher', 'id')))
    ->from($db->quoteName('zungenbrecher'))
    ->where($db->quoteName('datum') . '= 0' )
    ->order('RAND()')
    ->limit(1);
    $result = $db->setQuery($query)->loadObject();
    $id =$result->id;
  • Hallo Christiane und Zero,


    vielen Dank für eure Hilfe.
    @ Zero
    Ich habe in meinem Code (Zeile 3) für die Zahl 0 eine Variable verwendet. Ist das nicht möglich?


    @ Christiane

    Code
    Anscheindend steht im Datum die Ziffer 0, der TE alleine weiss, warum.


    Die Ziffer "0" -es könnte auch eine andere Ziffer oder ein Buchstabe sein- ist nur ein Platzhalter, damit zum einen überprüft werden
    kann, welche Zeilen noch nicht ausgelesen wurden und zum anderen, sobald alle Zeilen ausgelesen wurden, alle Einträge der Spalte
    'datum' wieder durch eine "0" ersetzt werden.
    Ablauf:
    Beim ersten Aufruf wählt das Script aus allen Zeilen eine beliebige Zeile aus und ersetzt in der Spalte 'datum' die "0" durch das Tagesdatum.
    Beim zweiten Aufruf überprüft das Script zuerst, ob das aktuelle Tagesdatum bereits in einer Zeile eingetragen ist und wählt für diesen Fall immer diese Zeile aus.
    Am nächsten Tag und den folgenden Tagen wiederholt sich der Vorgang so lange bis in allen Zeilen der Tabelle im Feld 'datum' nicht mehr eine "0" steht. Tritt dieser Fall ein, ersetzt das Script in allen Zeilen die unterschiedlichen Tagesdaten im Feld 'datum' wieder mit einer "0" und dann beginnt der gesamte Ablauf von vorne.


    Derzeit ersetzt das Script nur die Null durch das Tagesdatum, die anderen Abfragen muss ich noch machen. Der Code für das Tagesdatum ist

    Code
    //Tagesdatum festlegen
    $timestamp = time();
    $datum = date("md", $timestamp);
  • Zitat

    Ich habe in meinem Code (Zeile 3) für die Zahl 0 eine Variable verwendet. Ist das nicht möglich?


    Ich antworte hier mal für zero24 - doch das ist möglich. Aber deine Klammern in dem where waren falsch gesetzt - es wäre erstaunlich, wenn das jemals funktioniert hätte.
    Ferner hat dir zero24 zeigen wollen, dass du die id des Satzes ja bereits hast und nicht nochmal holen brauchst.


    Steck doch einfach deine scripte und den export der Tabelle in ein .zip file und poste ihn hier. Mit den Codeschnippseln ist es so mühsam.

  • Hallo Christiane,


    danke für das Angebot. Ich habe die Dateien als zip-Datei beigefügt.


    Beim Testen hatte ich das Problem, dass bei der Datenbankanfrage für 'datum' beim ersten Mal das "Tagesdatum"
    und beim zweiten Mal die Zahl "0" abgefragt wird. Dies führte beim Testen zur Fehlermeldung.


    Gruß Dietmar