Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankabfrage in einer Schleife mit DB-Abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datenbankabfrage in einer Schleife mit DB-Abfrage

    Hallo,
    ich bin neu hier, als bitte nicht gleich schlagen, wenn ich mich hier noch etwas einfach ausdrücke. ... übrigens tolles Forum !!

    Ich habe mir heute den ganzen Abend mein Hirn zum brodeln gebracht wie ich ein Problem lösen könnte.

    Es geht um eine Forumplattform, welche ich ständig erweitert habe aber nun an gewisse Grenzen gestossen bin:

    Über jedes Thema läuft eine Schleife um die Anzahl der geschriebenen beiträge auszulesen und anzuzeigen: (logisch)

    Code:
    $DB->query("SELECT fid, ftype, fhide, fcontent FROM pfields_data");
    			
    while ( $r = $DB->fetch_row() )
    {
    Nun möchte ich innerhalb dieser Schleife im Memberbereich jedes Beitrags ein Zufallsbuchempfehlung erscheinen lassen.
    Dazu muss ich nun eine weitere DB-Abfrage starten.

    Sobald ich nun folgendes aufrufe:
    Code:
    $DB->query("SELECT id, link, imageurl, info FROM random_books ORDER BY RAND() LIMIT 1");
    $random = $DB->fetch_row();
    ...wird nur immer ein Posting angezeigt

    Das Ergebnis ist nun leider immer nur ein Beitrag pro Thema
    Was passiert da genau? Wird durch diese DB-Abfrage nur die Anzahl der arrays gelöscht oder auch der Inhalt überschrieben?

    Ich habe sehr viel in der doc gewühlt nur leider keinen Tip gefunden.

    Könnt Ihr mir einen Tip geben, wie ich sowas angehen muss.
    Ich poste hier nicht um eine komplette Lösung hingezaubert zu bekommen, aber eine kurze Hilfe, was ich hier falsch mache würde mich vielleicht schon zum richtigen pfad führen.

    Evtl. DB-Abfragen lokal definieren? Kann man sowas, evtl. ausserhalb?

    verzweifelte Grüße,
    Franklin


  • #2
    hahahahah... die datenbank-klasse ist ja genial.

    ja, deine vermutung scheint richtig.

    entweder die 'entwickler' des forums waren sehr klug und haben das ganze extra so gebaut, dass es nicht möglich ist, auf diese weise verschachtelte abfragen zu starten, oder sie waren zu blöd, um eine richtige datenbank-klasse zu entwerfen.

    also:
    entweder überlegst du ein wenig und machst aus den zwei abfragen eine (stichwort JOIN), oder du tauschst die klasse aus und liest dir die API genauer durch.

    welches board isses denn?

    Kommentar


    • #3
      Hallo axo,

      Danke für den Hinweis

      welches board isses denn?
      Es handelt sich dabei um das Invisionboard!

      entweder überlegst du ein wenig und machst aus den zwei abfragen eine (stichwort JOIN),
      Aber mit Join komme ich doch auch nicht weiter, denn ich möchte ja innerhalb der while mit random in jedem Posting eine andere Grafik anziehen... Also muss ich diese Verschachtelung irgendwie beibehalten, nur wie.... Wieder eine ganze Nacht getüftelt, aber ich bin auf dem Holzweg

      oder du tauschst die klasse aus
      Austausch der Klassen, kannst Du dies etwas genauer beschreiben?

      Franklin

      Kommentar


      • #4
        Erstmal, das Invisionboard ist das genialste Board überhaupt. Nur eigentlich ist die Datenbankklasse nicht dafür gedacht, dass man sie so einsetzt wie du es machst (ich geh mal vom Quelltext von 1.3 aus Nachfolger kenn ich keinen Quellcode mehr). Man gibt Querys nicht einfach über $DB->query(); ein sondern speichert sie entweder in der query Cache Datei und ruft sie dann vom Cache aus auf. Oder man konstriert sie mit $DB->construct(); In jedem Fall solltest du aber Joins benutzen.

        Kommentar

        Lädt...
        X