0251 / 590 837 15
info@a-coding-project.de
;

Tabellen auflisten mit Unterseiten

Code & Blog Logo

Code & Blog Logo

Bei vielen Tabellen in der Datenbank, hat der Datenbank-Manager unseres CMS Verbindungprobleme. Deswegen werden wir nun statt alle Tabellen auf eine Seite zu Packen, das Ganze auf Unterseiten aufteilen.

Heute geht es erstmal darum, nur die bestimmten Datensätze auszugeben. Die Menü kommt dann nächstes mal dran.

Trotzdem Zählen wir mit der Eigenschaft countTables schonmal wieviele Tabellen vorhanden sind.

Da es sich bei dem Befehl SHOW TABLES nicht um Select handelt, gibt es dort meines Wissens auch kein Limit, so dass wir das Ganze in einer Schleife abfangen müssen.

Die Funktion getTables bekommt nun 2 Parameter: Einmal der Startindex und einmal die Anzahl der Elemente. Die komplette neue MySQL-Klasse (/system/classes/mysql.php) sieht dann so aus:

<?PHP
  class MySQL{
    public static $countTables = 0;

    function getTables($from, $count){
      $res = mysql_query("SHOW TABLES");
      while($row = mysql_fetch_row($res)){
        if($from > 0){
          $from--;
        }
        else{
          if(sizeof($tables) < $count or !$count){
            $tables[] = $row[0];
          }
        }
        self::$countTables++; 
      }
      return $tables;
    }

    function countTableEntries($table){
      $res = mysql_query("SELECT COUNT(*) FROM ".mysql_real_escape_string($table));
      $row = mysql_fetch_row($res);
      return $row[0];
    }

  }
?>

Nun geht’s zu Anzeige der /admin/includes/db.php. Hier wird es nachher den Parameter dbpage geben, der die Seitennummer angibt (auf 0 basierend). Wir müssen dort nur eine kleine Zeile dafür ändern:

...
foreach(MySQL::getTables($_GET['dbpage'] * 20,20) as $table){
...

Übrigens: Daniel hat sich ein bisschen mit dem Dateisystem des CMS beschäftigt, davon wird es dann bald auch noch was geben. Zuerst aber die Datenbank 😉

Kommentare

Daniel Busch schrieb am 08.09.2009:

So soll das bei solch einem Projekt doch wohl auch sein, bei dem eine Community drumherum aufgebaut werden soll. Ich wollte mich nur aktiv und konstruktiv beteiligen, aber Danke trotzdem für die Erwähnung meiner Wenigkeit. ;-) MfG Daniel