+ Antworten
Ergebnis 1 bis 7 von 7

Thema: JPagination

  1. #1
    Neu an Board
    Registriert seit
    11.09.2008
    Beiträge
    8
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard JPagination

    Hallo ThomasF hier,
    schon seit zwei Tagen plage ich mich mit der JPagination herum und komme einfach nicht weiter! Problem: DIe Blätter Funktion tut es nicht. Es setzt mir am Ende nur eine # an den Link. Die Komponente läuft im Backend.

    Hiermal leicht abgeänderter Code;
    PHP-Code:
            global $mainframe;

                
    // für ein limit von 10, wobei die 10 natürlich geändert werden kann
                
    $lim $mainframe->getUserStateFromRequest'lim''lim'100);
                
                
    $lim0 JRequest::getInt('lim0'0'REQUEST'); 
                 
                
    $db =& JFactory::getDBO();

                
    $query 'SELECT COUNT(*) FROM joomla.jos_modules';
                
    $db->setQuery($query);
                
    $total=$db->loadResult();
                
                
    jimport'joomla.html.pagination' );
                
    $pageNav = new JPagination($total$lim0$lim);
                
                
    $query 'SELECT * FROM joomla.jos_modules';
                
    $db->setQuery$query$pageNav->$lim0$pageNav->$lim );
                
    $rows $db->loadObjectList();
                        
    //Hier würde eine Ausgabe folgen
                
    echo $pageNav->getPagesLinks()

                       
    //Link wird so ausgegeben: http://localhost/joomla/administrator/index.php?option=com_test&controller=statistik# 
    Mir wird die Leiste fürs Weiterblättern angezeigt, doch wie gesagt bekommen ich nur beim klicken Aktuelle Url + #.
    Wenn ich händisch die Url um &lim0=10 erweitere wird mir die zweite Seite angezeigt.

    Ich hoffe sehr mir kann da jemand helfen.

    Mit aller freundlichen Grüßen,
    ThomasF
    Geändert von ThomasF. (24.08.2010 um 13:38 Uhr)

  2. #2
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  3. Erhielt Danksagungen von:


  4. #3
    Neu an Board
    Registriert seit
    11.09.2008
    Beiträge
    8
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Guten Morgen,

    erstmal danke Elkuku für deine Hilfe aber leider bin ich durch die Doc kein Stück weiter.

    Hier ist einmal der Angepasste Quellcode:

    PHP-Code:
            global $mainframe$option;
      
                
    $db =& JFactory::getDBO();
                
    $lim   $mainframe->getUserStateFromRequest("$option.limit"'limit'14'int');
                
    $lim0  JRequest::getVar('limitstart'0'''int');
                
                
    $db->setQuery('SELECT SQL_CALC_FOUND_ROWS * FROM joomla.jos_modules ',$lim0$lim);
                
    $rL $db->loadAssocList();

                
    $db->setQuery('SELECT FOUND_ROWS();');
                
    jimport('joomla.html.pagination');
                
    $pageNav = new JPagination$db->loadResult(), $lim0$lim );
                            
                echo 
    $pageNav->getListFooter(); 
    Leider bleibt der Fehler noch immer vorhanden. Mir wird die Leiste mit Seite 1 und Seite 2 angezeigt. Doch die Url wird wieder nur mit ein # erweitert.

    Das händische Erweitern der Url mit &limitstart=14 funktioniert.
    Ich hoffe sehr mir kann da jemand meinen Fehler zeigen oder mir Helfen.

    Mit aller freundlichen Grüßen,
    ThomasF.

  5. #4
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Arbeite mal folgende Punkte ab, dann sollte es funktionieren:
    1. Datenbeschaffung (=MySQL Queries) und Ausgabe (echo) gehören getrennt (siehe MVC)
    2. "global" sollte nicht mehr genutzt werden, alternativ kann man z.B. das $mainframe Objekt mit JFactory::getApplication() holen.
    3. Die Pagination hat folgende Funktionsweise:
      • Zuerst zählt man die Anzahl der Einträge, die insgesamt existieren (Select COUNT(*) From foo)
      • Danach definiert man sich den Start ($limitstart) und die Anzahl der gezeigten Einträge auf einer seite ($limit)
      • Mit diesen drei Werten erzeugt man ein neues JPagination Objekt
      • Mittels diesem JPagination Objekt erzeugt man nun die normale Datenbankabfrage für die Einträge

    Hier siehst du ein Beispiel, wie ein solches Model funktioniert (bisschen runter scrollen, aber prinzipiell dürfte dich die ganze Seite interessieren). Hälst du dich an diese Reihenfolge, dann schreibst du a) besseren Code und b) funktioniert auch deine Pagination.

  6. Erhielt Danksagungen von:


  7. #5
    Neu an Board
    Registriert seit
    11.09.2008
    Beiträge
    8
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Guten Nabend,

    erstmal danke dir bembelimen für deine Hilfe! Doch auch jetzt noch bleibt der Fehler bestehen. Ich habe Code nach MVC gecodet, doch leider auch nur wieder ein # am Ende der Url.

    Langsam beschleicht mich das Gefühl, das etwas im Joomla Core nicht funktioniert. Hoffe mir kann jemand helfen. Sollte der MVC Code gebraucht werden, bitte einfach sagen, doch bin ich mir 100% sicher keine Fehler in dem Code zu haben.

    Mit freundlichen Grüßen,
    ein verzweifelter ThomasF.

  8. #6
    Verbringt hier viel Zeit
    Registriert seit
    24.01.2006
    Beiträge
    594
    Bedankte sich
    108
    Erhielt 359 Danksagungen
    in 203 Beiträgen

    Standard

    Ah, hab gerade erst gelesen, dass es im Backend läuft. Da ist es normal, dass der Link nur aus '#' besteht. dort funktioniert die Pagination nur mittels Javascript und in einem Formular.

    Häng doch einfach mal deine Komponente als ZIP an den Beitrag an

  9. #7
    Neu an Board
    Registriert seit
    11.09.2008
    Beiträge
    8
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo allesamt,

    das Problem habe ich nun lösen können. Kurz und knapp für das JPagination wird das adminForm benötigt.

    PHP-Code:
    <form name="adminForm" id="adminForm" Act....>
    // Übriger Code in der Default
    echo $pageNav->getListFooter();  
    </
    form
    Nun klappt meine Komponente einwand frei im Administrator Backend. Nochmals Danke für die Hilfe.

    Mit aller freundlichen Grüßen,
    Thomas F.

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein