+ Antworten
Seite 1 von 2 1 2 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: Datenbankabfrage Seitenweise ausgeben

  1. #1
    Ati
    Ati ist offline
    Neu an Board
    Registriert seit
    11.12.2007
    Beiträge
    22
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Datenbankabfrage Seitenweise ausgeben

    Hallo zusammen,

    dank der Suche habe ich es geschafft schlank und elegant eine Tabelle abzufragen. Allerdings besteht diese Tabelle aktuell aus über 1000 Datensätze, so das ich gerne die Abfrage Seitenweise (10 oder 15 Datensätze pro Seite) ausgeben möchte. Habe es damals mal von Hand gecodet, allerdings kann ich den Code nicht nach Joomla übertragen... Stichwort PHP_Self. Gibt es hier eine Andere Möglichkeit? Aktuell mal mein Code:
    Code:
      <table width ="100%"" border="1" rules="rows" >
      <?php
      //datendefinition für die clientausgabe
    
    $limit = 10;
    $db = &JFactory::getDBO();
    $query = "select * from weanforderungen ORDER BY dat DESC Limit ".$limit;
    $db->setQuery($query);
    $results = $db->loadObjectList();
    echo"<td><b>Vim</b></td><td><b>BENR</td><td><b>Lieferant</td><td><b>Liefertermin</td><td><b>Kunde</td><td><b>Auftrag</td><td><b>Kundentermin</td><td><b>Bemerkung</td><td><b>Datum</td></tr>";
    foreach($results as $result)
    {
       echo"<tr>";
       echo "<td>".$result->vim."</td>";
       echo "<td>".$result->benr."</td>";
       echo "<td>".$result->lief."</td>";
       echo "<td>".$result->lterm."</td>";
       echo "<td>".$result->kunde."</td>";
       echo "<td>".$result->au."</td>";
       echo "<td>".$result->kterm."</td>";
       echo "<td>".$result->bem."</td>";
       echo "<td>".$result->dat."</td>";
       echo"</tr>";
    } 
    
    ?>
      </table>
    Vielen Dank im voraus!

    Ati

  2. #2
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    das nennt sich pagination...
    ich denke, wenn du danach suchst, findest du jede menge infos, auch in vorhandenen komponenten

    sicherlich auch hier http://www.joomlaportal.de/joomla-entwicklung.html

    oder halt tante google fragen

  3. #3
    Ati
    Ati ist offline
    Neu an Board
    Registriert seit
    11.12.2007
    Beiträge
    22
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Entschuldige vielmals das ich das so nicht gefunden habe.

  4. #4
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    Entschuldige vielmals das ich das so nicht gefunden habe.
    sollte keinesfalls ein vorwurf sein!
    ich habe es halt öfters erlebt, das viele nicht wissen, dass diese blätter funktion pagination heißt und daher einige auf dem schlauch stehen, wenn sie sich darüber informieren wollen.
    das selbe problem hatte ich selber und bis ich es mitbekommen habe, dass das suchwort pagination ist habe ich mich dumm und dusselig gesucht.

    entschuldige vielmals, das ich dir die lösung nicht mal nebenbei programmiert, getestet und auf einem silbertablett überreicht habe.

  5. #5
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Die Spannweite der Belastbarkeit der User steigt proportional zur Mitgliederzahl des Forums.

  6. #6
    War schon öfter hier
    Registriert seit
    21.08.2006
    Ort
    Dauchingen
    Beiträge
    113
    Bedankte sich
    36
    1 Danksagung in 1 Beitrag

    Standard

    du meinst: umgekehrt proportional

  7. #7
    Ati
    Ati ist offline
    Neu an Board
    Registriert seit
    11.12.2007
    Beiträge
    22
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    sollte keinesfalls ein vorwurf sein!
    Sorry hatte ich jetzt anders verstanden.

    ich habe es halt öfters erlebt, das viele nicht wissen, dass diese blätter funktion pagination heißt und daher einige auf dem schlauch stehen, wenn sie sich darüber informieren wollen.
    Nun so ist es mir ja jetzt auch ergangen.

    entschuldige vielmals, das ich dir die lösung nicht mal nebenbei programmiert, getestet und auf einem silbertablett überreicht habe.
    War auch nicht gefordert von mir. Habe da einiges gefunden was mir bestimmt weiterhelfen wird. Näheres nachher. Trotzdem Danke!

    Ati

  8. #8
    Ati
    Ati ist offline
    Neu an Board
    Registriert seit
    11.12.2007
    Beiträge
    22
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Wobei ich mir mittlerweile eingestehen muss für einige Sachen einfach zu doof zu sein...wozu dieses hier gehört!!! Ich habe jetzt soviel rumgebastelt das ich wohl den Überbllick verloren habe...so sieht nun mein Code aus:
    PHP-Code:
      <?php
      
    //datendefinition für die clientausgabe
    $limit JRequest::getVar('limit',10,'','int');
    $limitstart JRequest::getVar('limitstart',0,'','int');
    $db = &JFactory::getDBO();
    $query "select * from weanforderungen ORDER BY dat DESC Limit ".$limit;
    $db->setQuery($query);
    $results $db->loadObjectList();
    $resultID = @mysql_query("SELECT COUNT(id) from weanforderungen");
    $total = @mysql_result($resultID,0);
    jimport('joomla.html.pagination');
    $pagination = new JPagination($total$limitstart$limit);
    echo
    "<td><b>Vim</b></td><td><b>BENR</td><td><b>Lieferant</td><td><b>Liefertermin</td><td><b>Kunde</td><td><b>Auftrag</td><td><b>Kundentermin</td><td><b>Bemerkung</td><td><b>Datum</td></tr>";
    foreach(
    $results as $result)
    {
       echo
    "<tr>";
       echo 
    "<td>".$result->vim."</td>";
       echo 
    "<td>".$result->benr."</td>";
       echo 
    "<td>".$result->lief."</td>";
       echo 
    "<td>".$result->lterm."</td>";
       echo 
    "<td>".$result->kunde."</td>";
       echo 
    "<td>".$result->au."</td>";
       echo 
    "<td>".$result->kterm."</td>";
       echo 
    "<td>".$result->bem."</td>";
       echo 
    "<td>".$result->dat."</td>";
       echo
    "</tr>";

    echo 
    $pagination->getListFooter();
    ?>
    Es wird auch alles angezeigt...nur wenn ich auf eine Seite klicke (z.B. Seite 3) werden mir aber nicht die entsprechenden Datensätze angezeigt, sondern nur wieder die gleichen. Kann ja nur ein leichter Fehler sein. Kann mir jemand helfen?

  9. #9
    Ati
    Ati ist offline
    Neu an Board
    Registriert seit
    11.12.2007
    Beiträge
    22
    Bedankte sich
    2
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Also ich hoffe man glaubt mir das ich wirklich versuche das zu begreifen. HAbe meinen Code entsprechend http://docs.joomla.org/Using_JPagina...with_JDatabase
    geändert so das er wie folgt aussieht:
    PHP-Code:
    <?php
    defined
    '_JEXEC' ) or die( 'Ein direkter Zugriff auf diese Datei ist verboten.' );
    ?>
      <table width ="100%"" border="1" rules="rows" >
      <?php
      
    //datendefinition für die clientausgabe
    $db =& JFactory::getDBO();
    $db->setQuery('select SQL_CALC_FOUND_ROWS * from weanforderungen ORDER BY dat DESC');
    $results = &$db->loadAssocList();
    $db->setQuery('Select FOUND_ROWS();');
    $limit $mainframe->getUserStateFromRequest("$option.limit"'limit'14 'int');
    $limitstart JRequest::getVar('limitstart',0,'','int');
    jimport('joomla.html.pagination');
    $pagination = new JPagination$db->loadResult(), $limitstart$limit);
    echo
    "<td><b>Vim</b></td><td><b>BENR</td><td><b>Lieferant</td><td><b>Liefertermin</td><td><b>Kunde</td><td><b>Auftrag</td><td><b>Kundentermin</td><td><b>Bemerkung</td><td><b>Datum</td></tr>";
    foreach(
    $results as $result)
    {
       echo
    "<tr>";
       echo 
    "<td>".$result->vim."</td>";
       echo 
    "<td>".$result->benr."</td>";
       echo 
    "<td>".$result->lief."</td>";
       echo 
    "<td>".$result->lterm."</td>";
       echo 
    "<td>".$result->kunde."</td>";
       echo 
    "<td>".$result->au."</td>";
       echo 
    "<td>".$result->kterm."</td>";
       echo 
    "<td>".$result->bem."</td>";
       echo 
    "<td>".$result->dat."</td>";
       echo
    "</tr>";

    echo 
    $pagination->getListFooter(  );
    ?>
      </table>
    Allerdings ist mein Problem noch das gleiche....egal welche Seite ich anklicke es erscheinen immer die gleichen Datensätze.

  10. #10
    Hat hier eine Zweitwohnung
    Registriert seit
    16.09.2008
    Ort
    Braunschweig
    Beiträge
    1.189
    Bedankte sich
    89
    Erhielt 430 Danksagungen
    in 365 Beiträgen

    Standard

    also, erstmal funzt diese abfrage schonmal nicht
    PHP-Code:
    $db->setQuery('Select FOUND_ROWS();'); 
    da musst du zumindest ne tabelle angeben
    PHP-Code:
    $db->setQuery('Select FOUND_ROWS() FROM weanforderungen'); 
    oder so

    dann wundert es mich, das du keinen präfix angibst, oder haben deine tabellen garkeinen präfix?

    dann müsstest du die globale $mainframe noch als global deklarieren...


    PHP-Code:
    <?php 
        
    global $mainframe;
        
        
    // für ein limit von 10, wobei die 10 natürlich geändert werden kann
        
    $limit $mainframe->getUserStateFromRequest'limit''limit'100);
        
    //oder du nimmst den standart joomla wert aus der configuration.php
        //$limit = $mainframe->getUserStateFromRequest( 'limit', 'limit', $mainframe->getCfg('list_limit'), 0);
        
        
    $limitstart JRequest::getInt('limitstart'0'REQUEST');
        
        
    $db =& JFactory::getDBO();
        
    //zählt die gesamten einträge aus der tabelle
        
    $db->setQuery('SELECT COUNT(*) FROM weanforderungen'); 
        
    $count    $db->loadResult();
        
    //erstellt die pagination
        
    jimport('joomla.html.pagination'); 
        
    $pagination = new JPagination$count$limitstart$limit); 
        
        
    $query 'SELECT * FROM weanforderungen ORDER BY dat DESC'
        
    //erstellt die liste inkl. der pagination begrenzung und gibt dir ein objekt zurück
        
    $db->setQuery$query$pagination->limitstart$pagination->limit );
        
    $results $db->loadObjectList();
        echo 
    '<table width ="100%" border="1" rules="rows" >';
        echo 
    '<td><b>Vim</b></td><td><b>BENR</td><td><b>Lieferant</td><td><b>Liefertermin</td><td><b>Kunde</td><td><b>Auftrag</td><td><b>Kundentermin</td><td><b>Bemerkung</td><td><b>Datum</td></tr>'
        foreach(
    $results as $result
        { 
            echo
    '<tr>'
            echo 
    '<td>'.$result->vim.'</td>'
            echo 
    '<td>'.$result->benr.'</td>'
            echo 
    '<td>'.$result->lief.'</td>';  
            echo 
    '<td>'.$result->lterm.'</td>'
            echo 
    '<td>'.$result->kunde.'</td>'
            echo 
    '<td>'.$result->au.'</td>'
            echo 
    '<td>'.$result->kterm.'</td>'
            echo 
    '<td>'.$result->bem.'</td>';  
            echo 
    '<td>'.$result->dat.'</td>';  
            echo 
    '</tr>'
        }  
        echo 
    '</table>';
        
    //erstellt dir die blätterfunktion
        
    echo $pagination->getPagesLinks(); 
    ?>

  11. Erhielt Danksagungen von:

    Ati

+ Antworten
Seite 1 von 2 1 2 LetzteLetzte

Lesezeichen

Berechtigungen

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