ilch Forum » Allgemein » HTML, PHP, SQL,... » 1 Seite zuviel in der Blätterfunktion

Geschlossen
  1. #1
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    Hi,

    folgendes Problemchen:

    Wenn ich die Blätterfunktion von Ilch benutze, habe ich komischerweise 1 Seite zuviel in meiner Blätterfunktion...

    Code:
    // Paging
    $limit = 4;
    $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
    $anfang = ($page - 1) * $limit;
    $MPL = db_make_sites ($page , "" , $limit , '?merkliste' , 'merkliste' );
    
    
    // Ergebnisse Anzeigen, wo KFZ-ID aus Merkliste = ID aus Inserate
    $abfrage_treffer = 'SELECT * FROM prefix_merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id WHERE prefix_merkliste.uid = ' . $uid . '';
    $treffer_ausgabe = db_query($abfrage_treffer);
    $abfrage2 = 'SELECT * FROM prefix_merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id WHERE prefix_merkliste.uid = ' . $uid . ' LIMIT '.$anfang.','.$limit;
    $ergebnis2	 = db_query($abfrage2);
    $tpl->set_out ( 'SITELINK', $MPL, 0);


    Bin hilfreich für jede Hilfe!!
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    blakedj06 gelöschter User
    Ich denke es liegt an der Where Klausel diese muss ebenfalls in die db_make_sites Function.
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    Danke für die Hilfe.

    Leider habe ich das gleiche Ergebnis wie vorher...

    So habe ich das jetzt mal eingebunden:

    // Paging
    $limit = 3;
    $page = ($menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
    $anfang = ($page - 1) * $limit;
    $where = 'WHERE prefix_merkliste.uid = ' . $uid . ''; 
    $MPL = db_make_sites ($page , $where , $limit , '?merkliste' , 'merkliste' );
    
    
    // Ergebnisse Anzeigen, wo KFZ-ID aus Merkliste = ID aus Inserate
    $abfrage_treffer = 'SELECT * FROM prefix_merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id WHERE prefix_merkliste.uid = ' . $uid . '';
    $treffer_ausgabe = db_query($abfrage_treffer);
    $abfrage2 = 'SELECT * FROM prefix_merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id '.$where.' LIMIT '.$anfang.','.$limit;
    $ergebnis2	 = db_query($abfrage2);
    $tpl->set_out ( 'SITELINK', $MPL, 0);


    Komisch ist nur, das mir db_num_rows($abfrage_treffer) -> 8 Ergebnisse liefert und mir dann die $abfrage2 (für die Pagination) trotzdem 4 Seiten liefert, die 4.te Seite ist leer...

    das Limit habe ich auf 3 gesetzt, somit sollten mir 3 Seiten angeboten werden:
    1.te Seite = 3 Ergebnisse
    2.te Seite = 3 Ergebnisse
    3.te Seite = 2 Ergebnisse

    woher kommt jetzt aber die 4.te, leere Seite?
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    blakedj06 gelöschter User
    Ach sehe das jetzt erst. ^^

    mach mal das Join mit rein.

    $MPL = db_make_sites ($page , $where , $limit , '?merkliste' , 'merkliste JOIN prefix_inserate ON prefix_merkliste.kfzid = prefix_inserate.id' );
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    genial! Es funktioniert!
    vielen Dank!


    Zuletzt modifiziert von CeeJay am 17.04.2014 - 14:49:46
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    blakedj06 gelöschter User
    Kein Problem ich habs nur am Anfang übersehen weil ich Joins nicht mit dem kompletten prefix ausschreibe das wirkt zu unübersichtlich.

    Besser wäre

    SELECT a.* FROM prefix_merkliste a JOIN prefix_inserate b ON a.kfzid = b.id '.$where.' LIMIT '.$anfang.','.$limit


    bzw wenn Du auch aus "inserate" etwas auslesen willst dann noch mit b.* also a.*,b.* FROM ....


    Zuletzt modifiziert von blakedj06 am 17.04.2014 - 14:53:50
    1 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    CeeJay Hall Of Fame
    Registriert seit
    23.03.2007
    Beiträge
    2.425
    Beitragswertungen
    18 Beitragspunkte
    hmm... gibt es denn einen Nachteil, so wie ich das jetzt habe? Ich mein es funktioniert und der einzigste Grund für eine Umstellung für mich wäre, das es performance Vorteile mit sich bringt lächeln

    Danke für die Hilfe!
    Nichts ist so sicher, wie die Änderung.
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    blakedj06 gelöschter User
    Nö es gibt nur den in meinen Augen einzigen Vorteil das die Abfrage übersichtlicher wird.

    Krasser fällt es auf wenn man mehrere Joins oder verschachtelte Abfragen hat.

    Aber Jedem seins. lächeln
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten