blättern in Ergebnisliste
murraene
- php
Das leidige Thema, ich wiess, aber ich komm einfach nicht weiter...
---------search.php----------ANFANG
<html>
<body>
<form action="search.php" method="post">
<?php
include "config.xxx";
if(isset($_POST['submit']) && $submit="Suchen")
{
$erg=mysql_query(SELECT ...);
}
else
{
?>
<------Formular------>
<input type=text name=text>
<input type=submit>
<?php
}
?>
</form>
</body>
</html
---------search.php----------ENDE
So, jetzt meine Frage:
Ich habe selbstverstaendlich mehrere Ergebnisse, moechte aber eines nach dem anderen anzeigen (vorheriges bzw. naechstes)
ABER WIE???
Vielen Dank im Vorraus fuer eure Hilfe
echo $begrüßung;
Ich habe selbstverstaendlich mehrere Ergebnisse, moechte aber eines nach dem anderen anzeigen (vorheriges bzw. naechstes)
ABER WIE???
Da HTTP ein zustandsloses Protokoll ist, hast du also mehrere Requests abzuarbeiten. Jeder Request fragt dabei einen Ausschnitt aus der Ergebnismenge ab. Du müsstest also dem Request mit auf den Weg geben, welcher Ausschnitt gefragt ist. Da du immer genau einen Datensaz haben möchtest, kannst du diese Angabe ohne weitere Berechnung in die LIMIT-Klausel des MySQL-Statements einfließen lassen (vorher prüfen, ob der übergebenen Wert eine Zahl ist, oder dies mit intval() sicherstellen).
echo "$verabschiedung $name";
Hello,
Da HTTP ein zustandsloses Protokoll ist, hast du also mehrere Requests abzuarbeiten. Jeder Request fragt dabei einen Ausschnitt aus der Ergebnismenge ab.
Wenn er nicht darauf achtet, fragt jeder Request sogar eine neue Ergebnismenge ab!
Du müsstest also dem Request mit auf den Weg geben, welcher Ausschnitt gefragt ist. Da du immer genau einen Datensaz haben möchtest, kannst du diese Angabe ohne weitere Berechnung in die LIMIT-Klausel des MySQL-Statements einfließen lassen (vorher prüfen, ob der übergebenen Wert eine Zahl ist, oder dies mit intval() sicherstellen).
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
echo $begrüßung;
Da HTTP ein zustandsloses Protokoll ist, hast du also mehrere Requests abzuarbeiten. Jeder Request fragt dabei einen Ausschnitt aus der Ergebnismenge ab.
Wenn er nicht darauf achtet, fragt jeder Request sogar eine neue Ergebnismenge ab!
Ja, das ist dabei einkalkuliert.
Wenn man die Ergebnismenge ohne LIMIT abfragt und zwischenspeichert, hat man möglicherweise viele Daten im Zwischenspeicher, und der Aufbau desselben braucht gegebenenfalls eine lange Zeit. Dem Anwender vergeht nach der zweiten Seite die Lust, sich durch die Ergebnismenge zu wühlen, und diese bleibt ungenutzt im Sessionspeicher liegen, ganz zu schweigen vom unnötig großen Abfrageaufwand.
Limitiert man die Ergebnismenge schon bei der Abfrage, so könnte sich zwischen zwei Abfragen die (unlimitierte) Menge aufgrund paralleler Bearbeitung durch andere Zugriffsberechtigte ändern. Man sieht also Datensätze bei Einfügungen doppelt oder bei Löschungen gar nicht, wenn diese Vorgänge zwischen Datenanfang (sprich: kleinster Wert einer sortierten Mengen) und aktuellem Ausschnitt passieren.
Beide Varianten muss man im Einzelfall gegeneinander abwägen.
echo "$verabschiedung $name";
Hello,
So, jetzt meine Frage:
Ich habe selbstverstaendlich mehrere Ergebnisse, moechte aber eines nach dem anderen anzeigen (vorheriges bzw. naechstes)
siehe z.B. http://selfhtml.bitworks.de --> Benutzerzähler nach IPs sortiert
Das ist ein Beispiel für Blättern.
Gegenfrage:
Woraus besteht denn Deine Ergebnisliste?
Ist es eine SQL-Abfrage?
Dann musst Due ggf. erst einen Snapshot in der Session ablegen und kannst dann darin sowiel blättern, wie in der Datei vom Beispiel.
Es gibt unterscheidliche Abrage-Arten
der vollständige Snapshot
er friert die gesamte Ergebnismenge nebst Abfrage und allen Ergebnissen
zum Zeitpunkt der Abfrage ein
der relative Snapshot
er friert die IDs der Erbnisse nebst Abrage zum Zeitpunkt der Abfrage ein
die Datensätze können aber ihren Inhalt noch ändern oder sogar gelöscht werden
die dynamische Abfrage
sie führt die Abfrage bei jedem Request (oder Blättern) erneut durch und
stellt durch zusätzliche Maßnahmen beim Blättern fest, welches der "vorige"
oder der "nächste" Datensatz der Ergebnismenge bezogen auf den zuletzt angezeigten
sein müsste. Das ist in dynamischen Datenbeständen nicht ganz leicht.
In der Praxis mischt man daher zwei Abragetypen miteinander
1. Übersichtsliste als vollständiger Snapshot
2. aus der Übersichtsliste können dann die Detaildaten angefordert werden
mit dem Status der Anforderung. Sie können daher bis zur Anforderung auch
schon verändert oder gelöscht sein
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom