Datensätze anzeigen über mehrere Seiten

Discman

Mitglied
Hallo, ich hab mich jetzt schon die ganze Zeit umgesehen und bin auch auf relativ viele Arten gestoßen, wie man dieses "Blättern" machen kann, nur leider funktioniert bei mir das noch immer nicht wirklich. Ich glaub ich hab da eher ein Verständnisproblem, wo ich den Code einfügen muss. Ich poste hier unten dann die "glaub ich" Coderelevanten Auszüge. Ich hätte nun gerne unter der Tabelle eine Blätterfunktion mit der man durch die Datensätze durchblättern kann ein einfaches Weiter bzw. Zurück würde mir schon reichen. Meine Frage ist jetzt, ob irgendjemand von euch eine Idee hat wie ich das angehen sollte? Der Code funktioniert bis hierher mal einwandfrei, mir fehlt eigentlich nur noch das Blättern. Schonmal vielen Dank fürs lesen ;)


Das ganze läuft mit einem Textfeld, mit dem man in der Datenbank nach Werten/Texte suchen kann. Hier mal die Abfrage:

PHP:
$query = 'SELECT * FROM wohnung WHERE '; //anfang der abfrage 
for($a=0; $a<count($wohnung_search_array); $a++)
{
$query .= "(wohnung_titel LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_ansprechperson_name LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_beschreibung LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_kategorie LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_bundesland LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_anbieter LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_art LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_stadt LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_groesse LIKE '%".$wohnung_search_array[$a]."%' OR
 wohnung_miete LIKE '%".$wohnung_search_array[$a]."%')";

if($a<count($wohnung_search_array)-1)
{ 
$query .= ' or '; 
} 
}

Dann füge ich alles zusammen und frage ab, wieviele Datensätze nun im $ergebnis gespeichert sind.

PHP:
$ergebnis = mysql_query($query);
$num = mysql_num_rows($ergebnis);

und danach folgt die Ausgabe der Daten in einer HTML Tabelle bzw. auch die Festlegung ob ein Bild vorhanden ist oder nicht, hab es derzeit mit "kein Bild" gemacht, soll ja mal vom Code her funktionieren.

PHP:
echo "<tr> <td>Nr.</td><td>Bild</td><td>Anzeigen-Titel</td><td>Ort</td><td>Zimmer</td><td>Wohnflaeche m²</td><td>Monatsmiete</td><td>Provision</td><td>Genauere Informationen</td></tr>";


for ($i=0; $i<$num; $i++)
{
  $bild      = mysql_result($ergebnis, $i, 'wohnung_bild');
  $titel     = mysql_result($ergebnis, $i, 'wohnung_titel');
  $stadt     = mysql_result($ergebnis, $i, 'wohnung_stadt');
  $zimmer    = mysql_result($ergebnis, $i, 'wohnung_zimmer');
  $groesse   = mysql_result($ergebnis, $i, 'wohnung_groesse');
  $miete     = mysql_result($ergebnis, $i, 'wohnung_miete');
  $provision = mysql_result($ergebnis, $i, 'wohnung_provision');
  $id		 = mysql_result($ergebnis, $i, 'wohnung_id');
  $lf = $i +1;
  
  // Tabellenzeile mit -zellen
  
  if($bild == NULL)
  {
    echo "<tr><td>$lf</td><td>kein bild</td><td>$titel</td><td>$stadt</td><td>$zimmer</td><td>$groesse</td><td>$miete</td><td>$provision</td><td><a href=wohnung_info.php?id=$id target=_blank>Info</a></td></tr>";
}
else
{
   echo "<tr><td>$lf</td><td><img src=$bild height=30 width=30></td><td>$titel</td><td>$stadt</td><td>$zimmer</td><td>$groesse</td><td>$miete</td><td>$provision</td><td><a href=wohnung_info.php?id=$id target=_blank>Info</a></td></tr>";
   
}
echo "</table>";

Vielen Dank!

lg

disc
 
Es gibt verschiedene Versionen wie du das Blättern realisieren kannst.
Ich mache es meistens mit dem SQL LIMIT. Dort kannst du angeben, wie viele Datensätze angezeigt werden. Siehe Limit

Jetzt rechnest du einfach aus, wie viele Seiten du hast. Also, du möchtest 5 Wohnungen auf einer Seite. Du hast 20 Wohnungen. Also brauchst du 4 Seiten. Also zeigst du mal 4 Links an welche alle ein Attribute Page haben. Seite eins hat dann blabla.php?page=1. Seite zwei hat blabla.php?page=2. So weisst du dann, welche Seite angezeigt werden muss und kannst immer dem Limit angeben, welche Datensätze du also benötigst.

War das verständlich?

Übringends, zu dem Thema gibts schon einige Threads im Forum. Suchen kann also auch nicht schaden :)

Gruss
X
 
Danke redX für die schnelle Antwort, Suche ist mir bekannt lies ja hier seit 2002 im Forum :rolleyes:
Wie gesagt bin ich aber noch nicht dahinter gekommen wie ich das angehen soll, ich meine ich habe es probiert, nur funktioniert hat es halt leider nie. Deshalb ist das Post entstanden...

Ich hab mich zuerst an das hier gehalten.

Dann hab ich oben das hier vor dem Query definiert.

PHP:
$start = (isset($start)) ? abs((int)$start): 0;
$limit = 1;    //Hab derzeit nur 2 Einträge

Beim Query das hier angehängt(nach der letzten geschlossenen geschwungenen Klammer):

PHP:
$query .= "LIMIT $start, $limit";

Nach der Berechnung von $num (der Anzahl der Datensätze) hab ich das hier angefügt:
PHP:
$start    = ($start >= $num) ? $num - $limit : $start;

Das Vor- und Zurückblättern ist vom Code her dann komplett gleich wie dort, nur gehts nicht ;-(

Deshalb glaube ich, ich baue das irgendwo falsch ein?
 
Es müsste irgendwie so aussehen:

PHP:
$start = $_GET['start'];
$start = (isset($start)) ? abs((int)$start): 0; 
$limit = 1;    //Hab derzeit nur 2 Einträge 

$ergebnis = mysql_query("SELECT count(*) anzahl FROM `wohnung`") or die("Fehler: " . mysql_error());
$ergebnis = mysql_fetch_assoc($ergenis);
$start    = ($start >= $ergenis["anzahl"]) ? $ergenis["anzahl"] - $limit : $start; 

$query .= "LIMIT $start, $limit"; 
$ergebnis = mysql_query($query);

Bei deiner Version hattest du $num erst nach dem Query zur verfügung. Wenn du das Query aber schon abgesendet hast, bringt es nichts mehr $start noch zu verändern :)
Bei der oberen Version habe ich zuerst mal abgefragt, wie viele Datensätze es denn in der DB hat. Nachher $start berechnet und dann das Query gesendet.

Dann habe ich noch $start aus der Variable $_GET["start"] ausgelesen da diese ja warscheilnich über den Link übergeben wird oder?

Das ganze ist ungetestet. Ich hoffe ich habe alles richtig verstanden :rolleyes:

Wenn es nicht geht (und du selber versucht hast das Problem zu lösen und es nicht geschaft hast :p :D), schau dir doch mal das Query an was nun wirlich übergeben wird. Vieleicht stimmt es ja nicht. Und poste es dann mal hier

;)
 
Hallo redX nochmals danke für deine rasche Antwort, werde es gleich mal ausprobieren, ja genau das $num war bzw. ist mein Problem, ich wusste nicht wo ich den Code einfügen sollte, weil ich ja das $num brauche für das Blättern, nur varriert ja $num durch die Abfrage, ist ja eingabeabhängig. In meinem Fall da ich nur 2 Einträge hab kann mein $num ja nur von 0-2 gehen?

Ja, $start wird mit dem Link übergeben.

Ich werds jetzt nochmal probieren vom query her sollte aber alles passen die Ausgabe ist jedesmal korrekt. Wie gesagt mir fehlt nur noch das Blättern dann hab ich geschafft was ich schaffen wollte :p

Ich probier mal deinen Code aus, danke nochmal vielleicht funktioniert es ja, wenn ich es richtig reinstelle :rolleyes:

Vielen Dank!

lg

disc
 

Neue Beiträge

Zurück