PHP Anzeige aus Datenbak in Seiten von A-Z teilen

nissl

Lt. Commander
Registriert
Sep. 2008
Beiträge
1.031
Hallo,

Ich bins mal wieder mit einem Brainfucker in PHP :D
ich hoffe aus dem Titel wird klar was ich erreichen möchte.

Eine Datenbankabfrage mit einer Aufteilung in Seiten wenn man nur eine bestimmte Anzahl pro seite haben will, habe ich bereits hinbekommen.

Jetzt möchte ich noch einen oben drauf setzen und das nach Buchstaben gliedern.

Also die Seiten von 1...27 habe ich oberhalb vom Inhalt, und darüber würde ich gerne noch die Buchstaben in dem Format haben:

# A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Alles als links.

Wenn man nun also die Datensätze mit A haben will, klickt man auf 'A' und da meine Einstellung 2x6 Elemente pro Seite ist sollte je nach Notwendigkeit die Seitenaufteilung stattfinden. Es kann aber auch sein, dass es nicht mehr als 12 Elemente mit einem bestimmten Buchstaben (vielleicht Q oder so) gibt.

Hat da einer eine Herangehensweise für mich. Mit Google komme ich hier nicht weiter, oder ich bin zu blöd die richtigen Keywords zu benutzen.

Bis dato sieht das so aus.

Code:
<?php
class MyDB extends SQLite3
{
    function __construct()
    {
        $this->open('MyDB.db');
    }
}
$db = new MyDB();

$seite = $_GET["seite"];  //Abfrage auf welcher Seite man ist

//Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1
if(!isset($seite))
   {
   $seite = 1;
   }
//Einträge pro Seite: Hier 15 pro Seite
$eintraege_pro_seite = 12;

//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;


$count = $db->query("SELECT  COUNT(*) as count FROM movie");
$count = $count->fetchArray();
$total  = $count[count];

//Errechnen wieviele Seiten es geben wird
$wieviel_seiten = $total / $eintraege_pro_seite;

//Ausgabe der Seitenlinks:
$query = "SELECT a.*,b.dateAdded,b.readCount FROM table AS a, files AS b WHERE b.idFile = a.idFile ORDER BY b.dateAdded DESC LIMIT $start, $eintraege_pro_seite";
$ergebnis = $db->query($query);
while($arr_zeile = $ergebnis->fetchArray()) {
?>

Hoffe mir kann jemand weiterhelfen .
 
eine, aus meiner Sicht, recht simple Lösung
Du fügst ein RegEx ein, wo du die Auswahl nimmst und darauf prüfst
der RegEx hierfür wäre zB für A: ^(A|a).*
Erklärung:
Fängt mit A oder a an und der . steht für beliebige Zeichen und der * sagt, dass 0-unendlich viele Zeichen kommen dürfen
 
Du brauchst Abfragen für...:
alle Buchstaben und deren Häufigkeit: select Count(*) from movie Group by upper(left(Name,1))
Anzahl der Einträge für einen Buchstaben: select Count(*) from movie where upper(left(Name,1)=upper(:Buchstabe)
Die Einträge [x,y] für den Buchstaben: select * from movie where upper(left(Name,1))=upper(:Buchstabe) Limit :x,:y
Und schon sollte es funktionieren. Wie du Sonderzeichen behandelst, ist eine Kunst für sich :D.
 
Uff ja klingt ja logisch :freak:

Wie google ich nach sowas? Muss ja irgendwo ein tutorial geben mit dem ich das hinbekomme :D
 
Zurück
Oben