Probleme mit LIMIT bei Blätterfunktion

Cemil

Erfahrenes Mitglied
Hallo,

habe mir das Tutorial zur Blätterfunktion reingezogen und im grossen und ganzen klappt das script (Treffer werden angezeigt und auch die Einträge von 1-10 usw.).

Meine mySQL-Abfrage sieht so aus:
PHP:
$ergebnis = mysql_query("SELECT * FROM motoren WHERE marke LIKE '%$suchen%'", $verbindung);
Im Tutorial ist eine Abfrage mit LIMIT und ich weiss nicht genau, wie ich dieses in meine jetztige mySQL-Abfrage mit einbeziehen soll.

Im Tutorial sieht die mySQL-Abfrage so aus:
PHP:
$sql="SELECT * FROM motoren LIMIT $start,$proseite";
Kann mir jemand auf die Sprünge helfen, wie das ganze aussehen könnte?

Grüsse
 
Na wieviele Ergebnisse willst Du Dir denn pro Seite anzeigen lassen? Diese Zahl wäre dann $proseite.
Und wenn jemand z.B. die 3. seite sehen will, dann müsstest Du $start auf den Wert setzen, der sich aus (3 (wegen 3. Seite) - 1) * $proseite ergibt.
Und beim ersten Aufruf, also wenn Seite 1 angezeigt wird, müsstest Du limit 0, $proseite nehmen.

redlama
 
Hallo Oliver,
vielen Dank für Deine Antwort.

Das ganze hab ich schon. Meine Frage war, wie ich LIMIT in meine jetzige mySQL-Abfrage mit einbeziehen kann. Das checke ich noch nicht.

Das ganze sieht bei mir folgendermassen aus:
PHP:
<?php

$scriptName = "suchen.php";

?>

<form action="<?=$scriptName;?>" method="Post">
<input type="text" name="suchen" size=25 maxlength=25>
<input type="submit" name="submit" value="Suchen">
</form>

<?php

$verbindung=mysql_connect("localhost","root"); 	
$motorendb=mysql_select_db("motorendb", $verbindung); 
$suchen=$_POST["suchen"];
$ergebnis = mysql_query("SELECT * FROM motoren WHERE marke LIKE '%$suchen%'", $verbindung);
$reihenGefunden = @ mysql_num_rows($ergebnis);
$seiten=ceil($reihenGefunden/$proseite);
$start=$page * $proseite;
$sql="SELECT * FROM motoren LIMIT $start,$proseite";
$proseite=10;
$ende = $start + $proseite;
$start=1;

if($submit) {
if(empty($_POST['suchen'])) {
	echo "<table border='0' cellpadding='0' cellspacing='0'><tr>";
    echo "<td>Bitte geben Sie eine Suchanfrage ein.</span></td>";
    echo "</tr></table>";
	
	exit();
	}

if ($reihenGefunden != 0)
{

echo "<table border=1 cellspacing=0 cellpadding=3>";
echo "<tr><td><b>ID</b></td><td><b>Artikel-Bezeichnung</b></td><td><b>Marke</b></td><td><b>Modell</b></td><td><b>Teile-Nr.</b></td><td><b>Jahrgang</b></td><td><b>Km</b></td></tr>";

while($r=mysql_fetch_array($ergebnis))
{	
   	$id=$r["id"];
   	$artikel=$r["artikel"];
   	$marke=$r["marke"];
   	$modell=$r["modell"];
   	$teile=$r["teile"];
   	$jahrgang=$r["jahrgang"];
   	$km=$r["km"];
   
   	echo "<tr><td>$id</td><td>$artikel</td><td>$marke</td><td>$modell</td><td>$teile</td><td>$jahrgang</td><td>$km</td></tr>";
	}
}
else {
	echo "<table border='0' cellpadding='0' cellspacing='0'><tr>";
    echo "<td>Ihre Suchanfrage ergab keine Treffer.</span></td>";
    echo "</tr></table>";
}
echo "</table>";

if ($ende>$reihenGefunden) { $ende = $reihenGefunden; }
echo "Treffer: $reihenGefunden<BR> \n";
echo "Seite $page - Einträge von $start bis $ende <BR> \n";

if ($page>0) {
	$i=$page-1;
	echo "<a href=\"suchen.php?page=$i\">&lt;previous</A>";
}
for($i=0; $i<=$seiten; $i++) {
	if ($i==$page) {
		echo $i."&nbsp;";
	}
	else {
		echo "<a href=\"suchen.php?page=$i\">$i</A>&nbsp;";
	}
}
if ($page<$seiten) {
	$i=$page+1;
	echo "<a href=\"suchen.php?page=$i\">next&gt;</A>";
}
}

?>

Grüsse
 
Wo genau leigt denn das Problem?
Außerdem, wieso hast Du im 2. select Statement die Where Klausel nicht mit drin?

redlama
 
Hallo redlama,

ich weiss nicht, wie ich das 2. select Statement ansprechen soll, damit das script läuft.

Grüsse
 
Mach's doch anders. Bau das Limit mit in Dein 1. select Statement mit ein.
Überprüfe am Anfang des Scriptes, ob eine Variable "start" übergeben wurde:
PHP:
if(isset $_GET["start"])) 
  $start = $_GET["start"]; 
else
  $start = 0;
Wird die Suchfunktion aufgerufen, dann ist $start = 0.
Jetzt berechnest Du den Startwert:
PHP:
$start = $start * $proseite;
Somit werden die ersten 10 Datensätze angezeigt.
Ruft dann jemand die 2. Seite mit den Ergenissen auf, dann lädst Du die suchen.php neu und übergibst ihre die Variable start mit einem Wert, der um 1 niedriger ist, als die Seite, die er sehen will:
PHP:
header("Location: suchen.php?start=...");
wobei ... für den Wert steht.
Alles klar?

redlama
 
Nochmals eine Frage:

Wie könnte meine 1. mySQL-Abfrage mit der LIMIT Klausel aussehen? Hättest Du mir einen Tipp?
 
PHP:
$ergebnis = mysql_query("SELECT * FROM motoren WHERE marke LIKE '%$suchen%'", $verbindung LIMIT $start,$proseite);

redlama
 
Zurück