Blättern in MySQL Ergebnisliste

  • Hallo Zusammen.

    Ich werde noch Wahnsinnig. Seit einigen Tagen bin ich dran in meine Ergebnisliste eine Blätternavigation einzubauen. Die erste Seite wird auch richtig angezeigt, nur - sobald ich auf den Links mit 2, 3, 4 usw. klicke - kommt eine leere Seite und es werden keine weiteren Daten angezeigt (obwohl vorhanden). OHNE die Blätternavigation sind die Ausgabedaten korrekt.
    Vielleicht hab ich auch nur eine Klammer an der falschen Stelle gesetzt oder es ist nur eine Kleinigkeit. Ich blicke nunmehr nicht mehr durch.

    Hier der Code (aufs nötigste abgespeckt):


    Schon jetzt vielen Dank für jeden Tip!

  • Richtig debuggen

    • Man bemerkt, dass ein Skript nicht das tut, was es soll.
    • Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
    • Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    • Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    • An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    • Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    • Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    • Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    • Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

    Ein brauchbares Tutorial: http://phpforum.de/forum/showthread.php?t=218213

  • Hallo Bandit.

    Danke für deine rasche Antwort. Den Großteill deiner Punkte hatte ich schon gemacht. Auch hatte ich mir an verschiedenen Stellen Variablen und "Test-Text" ausgeben lassen. Dazu kommt halt, dass ich in der PHP-Programmierung noch nicht soooo viel Ahnung habe. Meist kann ich ein Problem zwar eingrenzen, weiß aber dann nicht immer welche Befehle oder Wege ich einsetzen sollte um das Problem zu lösen.

    Allerdings hatte ich die Sache mit "error_reporting..." total 'vergessen' (Ich weiß, ist peinlich). Hab´s jetzt mal eingefügt und hat mir auch ein Stück weiter geholfen.

    Mittlerweile hab ich die untere geschweifte Klammer nach oben versetzt und jetzt werden ab der zweiten Seite auch Daten angezeigt. Allerdings ALLE Daten - nicht die aus der Selektionsmenge.
    Nach dem Abschicken des Selektionsformulars läuft dieser Code:

    PHP
    if (isset($_POST['submit']))
      {
         unset($_POST['submit']);
    ...
    ...

    und danach werden dann per Select die entsprechenden Daten aus der DB geholt. Mir ist jetzt durch einen Test aufgefallen, dass beim Aufruf der zweiten Seite (aus der Ergebnisliste) nicht mehr in die

    PHP
    if (isset($_POST['submit']))

    -Schleife eingesprungen wird, da der Submit-Button ja nur beim ersten Durchlauf gesetzt ist. Ich denke dass das der Fehler ist. Nur weiß ich nicht wie ich den Submit-Button erneut als "geklickt" setzen kann. (Sofern das WIRKLICH der Fehler sein sollte).

  • Wie sollte bei einem Link auch was in $_POST stehen? Da hast du die gewünschten Werte in $_GET. Die Abfrage könntest du in einer Session zwischenspeichern

    Einmal editiert, zuletzt von Bandit (29. Mai 2012 um 14:47)

  • Oh ja, da hast du natürlich recht!
    Hab´s jetzt auf GET umgestellt geht aber auch nicht. Die erste Seite paßt immer, nur ab der zweiten hauts nicht mehr hin. GET kann ich in diesem Fall sowieso nicht verwenden da ich ein Suchformular mit ca. 30 Feldern habe. Das würde die mögliche Länge sprengen.

    Keine Ahnung - ich geb´s auf. Bin schon seit einigen Tagen an der Sache.

  • haste dir mal in prosa aufgeschrieben, wie das funktionieren soll??
    hab ich bei solchen dingern immer mal gemacht, wenn ich hängen blieb, dadurch wird einem das problem etwas sichtbarer, bzw kann man dadurch dann vom prosa den code ableiten :)

  • Hallo synaptic.

    Vielleicht hältst du mich für blöd aber ich hab keine Ahnung was du mit PROSA meinst. Noch nie gehört...

    Weißt du, das komische ist, dass jedes Script für sich alleine wunderbar läuft. Nur wenn ich sie zusammen "baue" hab ich nur auf der ersten Seite die richtige Ergebnisliste. Auf der zweiten Seite kommt entweder NICHTS (das hab ich ja jetzt behoben) oder die Anzeige ALLER Daten aus der DB (nicht die gewünschte, selektierte).
    Ich bin sicher dass es für ein geübtes Auge eine Kleinigkeit ist. Aber da ich noch nicht so viel Erfahrung habe in PHP (jedoch wie ein Verrückter mehrere Stunden jeden Tag lerne) kenn ich halt noch nicht alle Konstellationen und Möglichkeiten dieser mächtigen Sprache. Und dabei bin ich keiner der bei jeder Kleinigkeit gleich ins Forum schreibt. Bevor ich etwas poste hab ich schon tagelang selbst probiert.
    Hab vielen Dank!

  • Nochmal: du musst die Basisabfrage ohne Bedingung in einer Session speichern. Nach Klick auf auf einen Link hängst du dann die Get-Parameter dran.

  • 7even
    Klicke mal auf deinen Link, da kommt u.a.

    Warning: filesize() [function.filesize]: stat failed for downloads/simple- Blaetterfunktion-mit-PHP.zip in /homepages/27/d416283116/htdocs/index/downloads.php on line 56