Zum Inhalt springen

Abfrageergebnis auf mehrere Seiten verteilen bei eigenem PHP-Skript

Erstellt am 30. Mai 2008 · 2 Antworten · letzte Antwort am 31. Mai 2008

Tags: PHP, Frage

freddys ·

Hallo,

ich habe ein PHP-Skript geschrieben, welches dafür sorgt, dass die Ergebnisse aus meiner Datenbankabfrage auf mehreren Seiten verteilt werden und man sich durch die Seiten durchklicken kann (wie auch bei diesem Forum der Fall).

<?php 


$dblink=mysql_connect("localhost", "root", "");

mysql_select_db(DATENBANK, $dblink);




$Zeilen_pro_Seite = 20;

if (!isset($Anfangsposition)) {
  $Anfangsposition = 0;
}

$sql="select * from TABELLE
limit $Anfangsposition,$Zeilen_pro_Seite";

$result=mysql_query($sql);
$result1=mysql_query("select FELD from TABELLE");

$Anzahl=mysql_num_rows($result1);

while ($row=mysql_fetch_array($result)) {
    $feld1=$row["FELD"];
    echo "".$feld1."";
}

if($Anfangsposition > 0) {
  echo "<a href="http://localhost/typo3/fileadmin/php/test.php?Anfangsposition=0">[erste Seite]</a>";
  $back=$Anfangsposition-$Zeilen_pro_Seite;
  if($back < 0) {
    $back = 0;
  }
  echo "<a href="\" http:localhosttypo3fileadminphptestphpanfangsposition="">[eine Seite zurück]</a>";
 }

if($Anzahl>$Zeilen_pro_Seite) {
  $Seiten=intval($Anzahl/$Zeilen_pro_Seite);
  if($Anzahl%$Zeilen_pro_Seite) {
    $Seiten++;
  }
}

for ($i=1;$i<=$Seiten;$i++) {
  $fwd=($i-1)*$Zeilen_pro_Seite;
  echo "<a href="\" http:localhosttypo3fileadminphptestphpanfangsposition="">$i</a>";
}

if($Anfangsposition < $Anzahl-$Zeilen_pro_Seite) {
  $fwd=$Anfangsposition+$Zeilen_pro_Seite;
  echo "<a href="\" http:localhosttypo3fileadminphptestphpanfangsposition="">[eine Seite weiter]</a>";
  $fwd=$Anzahl-$Zeilen_pro_Seite;
  echo "<a href="\" http:localhosttypo3fileadminphptestphpanfangsposition="">[letzte Seite]</a>";
}

?>

Das funktioniert soweit, wenn ich das Skript unabhängig von TYPO3 aufrufe. Jetzt will ich es als PHP-Page-Content in TYPO3 einbinden. Dafür habe ich die URLs angepasst ("http://localhost/typo3/index.php?id=[ID der Seite, in der der PHP Page Content liegt]&Anfangsposition=$fwd"), habe nun aber das Problem, dass die URL sich in der Adresszeile zwar ändert (z.B. "http://localhost/typo3/fileadmin/php/test.php?Anfangsposition=320"), sich an der Ausgabe aber nichts ändert, d.h es werden nach wie vor nur die ersten 10 Einträge (die der ersten Seite) angezeigt.

Weiß jemand Rat?

Danke und beste Grüße,

Freddy

susanne ·

Hallo Freddy,

eigentlich wundert es mich sehr, dass dein Skript überhaupt läuft. Ich nehme an du arbeitest noch lokal und wahrscheinlich auch noch unter Windows, oder ?

Bei jedem Provider, den ich kenne ist die PHP-Konfigurationsvariable register_globals auf off gesetzt und somit könntest du auf deine Variable nur per
$_GET['Anfangsposition'] zugreifen.

Lass dir $Anfangsposition mal ausgeben. Ich wette da steht nix drin.

Wenn du also irgendwann mal online gehst, bekommst du so auch ohne Typo3 Probleme.

Sollte dieses Skript nicht nur ein Test oder ein Einzelfall sein, solltest du dich erst einmal mit Typo3-Extension Programmierung auseinandersetzen, denn du programmierst ja nun völlig an Typo3 vorbei.

Da ich leider nicht recht überblicke, wie du das Skript einbindest, kann ich dir deine ursprüngliche Frage wohl nicht beantworten.

Tschau Susanne

freddys ·

Hallo Susanne,

leider kann ich nicht allzu aus deinem Post entnehmen. Nochmal: Rufe ich das Skript außerhalb von Typo3 auf, so funktioniert dies; $Anfangsposition wird korrekt ausgegeben. In TYPO3 habe ich das Skript über die Extension 'PHP Page Content' als Inhaltselement eingebunden. Das Problem war jetzt, dass die Übergabe der $Anfangsposition nicht funktioniert (sie bleibt immer 0), sich an der Ausgabe dementsprechend nichts ändert.

Woran liegt es also, dass die Variable in TYPO3 nicht übergeben wird (bzw. wie kann ich das erreichen) - ganz unabhängig davon, dass das Skript an TYPO3 'vorbeiprogrammiert' ist.

Über Vorschläge, wie man die Fragestellung ansonsten in TYPO3 umsetzen könnte, würde ich mich natürlich freuen. Vielleicht gibt es ja einen einfachen Weg - trotz Beschäftigung mit der T3-Dokumentation überschaue ich das leider noch nicht.

Gruß, Freddy

Anmerkung: ja, ich arbeite lokal, nein, nicht unter windows, sondern linux.