Blätterfunktion mit reduzierter Anzeige

formmad

Mitglied
Hallo,

ich benötige ein wenig Hilfe. Ich habe eine SQL Blätterfunktion auf meiner Seite, hier der Code:

PHP:
<?php
if (!isset($_GET['page'])) {
	$_GET['page'] = 0;
}

if (!isset($_REQUEST['proseite'])) {
	$_REQUEST['proseite'] = 30;
}

$sql = "SELECT * FROM table1";
$sqlresult = mysql_query($sql, $db);
$number = mysql_num_rows($sqlresult);

$seiten = ceil($number/$_REQUEST['proseite']);
$start = $_GET['page'] * $_REQUEST['proseite'];

$query = "SELECT * FROM table2 LIMIT $start, $_REQUEST[proseite]";
$result = mysql_query($query, $db);

$ende = $start + $_REQUEST['proseite'];

if ($ende > $number) {
	$ende = $number;
}

?>

Einträge pro Seite
<select name="proseite" id="proseite" onChange="this.form.submit();">
<option value="30" <? if ($_REQUEST['proseite'] == 30) { echo "selected"; } ?>>30</option>
<option value="60" <? if ($_REQUEST['proseite'] == 60) { echo "selected"; } ?>>60</option>
<option value="90" <? if ($_REQUEST['proseite'] == 90) { echo "selected"; } ?>>90</option>
<option value="120" <? if ($_REQUEST['proseite'] == 120) { echo "selected"; } ?>>120</option>
<option value="150" <? if ($_REQUEST['proseite'] == 150) { echo "selected"; } ?>>150</option>
</select>
<?php
	if ($_GET['page'] > 0) {
		$i = $_GET['page'] - 1;
		echo "<a href=\"viewstat.php?page=$i&proseite=".$_REQUEST['proseite']."\">« zurück</a>";
	} else {
		echo "<b>« zurück</b>";
	}
	
$tttest = $_GET['page'] + 1;
$nochda = ($seiten - 1);

for ($i = 1; $i <= $_GET['page']; $i++) {
	echo " <a href=\"viewstat.php?page=".($i - 1)."&proseite=".$_REQUEST['proseite']."\">".$i."</a> ";
}
$k = 0 + $_GET['page'];
for ($i = ($tttest); $i <= $seiten; $i++) {
	if ($_GET['page'] == $k) {
		echo " <b class=\"red\">$i</b> ";
	} else {
		echo " <a href=\"viewstat.php?page=$k&proseite=".$_REQUEST['proseite']."\">$i</a> ";
	}
	$k++;
}

if ($tttest < $seiten) { 
	if ($_GET['page']<$seiten) {
    	$i=$_GET['page']+1; 
    	echo "<a href=\"viewstat.php?page=$i&proseite=".$_REQUEST['proseite']."\">weiter »</a>"; 
    }
} else {
	echo "<b>weiter »</b>";
}
?>

Nun möchte ich, wenn mehr als 20 Einträge zu sehen sind das nur die ersten 5 und die letzten 5 angezeigt werden.

Momentan sieht es dann so aus: « zurück 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 weiter »

Es sollte so aussehen: « zurück 1 2 3 4 5 ... 41 42 43 44 45 weiter »

Die Seite welche gerade angesprungen wird (im Beispiel 9) sollte in der mitte stehen der 5 Punkte.
Beispiel: « zurück 7 8 9 10 11 ... 41 42 43 44 45 weiter »

Gruß + Danke
 
Hallo,

toll... die Suchfunktion benutzen ... Habt ihr auch mal nen anderen Spruch?

Ich habe es selber hinbekommen...

PHP:
<?php
if (!isset($_GET['page'])) {
	$_GET['page'] = 0;
}

if (!isset($_REQUEST['proseite'])) {
	$_REQUEST['proseite'] = 30;
}

$sql = "SELECT * FROM table1";
$sqlresult = mysql_query($sql, $db);
$number = mysql_num_rows($sqlresult);

$seiten = ceil($number/$_REQUEST['proseite']);
$start = $_GET['page'] * $_REQUEST['proseite'];

$query = "SELECT * FROM table2 LIMIT $start, $_REQUEST[proseite]";
$result = mysql_query($query, $db);

$ende = $start + $_REQUEST['proseite'];

if ($ende > $number) {
	$ende = $number;
}

$mitte = $number / 2;

if ($_GET['page'] <= $mitte) {
    $links_start = 0;
} else {
    $links_start = $_GET['page'] - $mitte;
}

?>

Einträge pro Seite <?= $links_start ?>
<select name="proseite" id="proseite" onChange="this.form.submit();">
<option value="30" <? if ($_REQUEST['proseite'] == 30) { echo "selected"; } ?>>30</option>
<option value="60" <? if ($_REQUEST['proseite'] == 60) { echo "selected"; } ?>>60</option>
<option value="90" <? if ($_REQUEST['proseite'] == 90) { echo "selected"; } ?>>90</option>
<option value="120" <? if ($_REQUEST['proseite'] == 120) { echo "selected"; } ?>>120</option>
<option value="150" <? if ($_REQUEST['proseite'] == 150) { echo "selected"; } ?>>150</option>
</select>
<?php

if ($_GET['page'] > 0) {
	echo "<a href=\"viewstat.php?page=0&proseite=".$_REQUEST['proseite']."\">‹ Anfang</a> ";
	$i = $_GET['page'] - 1;
	echo "<a href=\"viewstat.php?page=$i&proseite=".$_REQUEST['proseite']."\">« Zurück</a>";
} else {
	echo "<b>‹ Anfang </b>";
	echo "<b>« Zurück</b>";
}
	
$tttest = $_GET['page'] + 1;
$k = 0 + $_GET['page'];

for ($i = 1; $i <= $_GET['page']; $i++) {
	if ($_GET['page'] > ($i+5)) {

	} else {
	if ($i > 1) {
		if ($i == ($_GET['page']-5)) {
			echo " ... ";
		}
	}
	echo " <a href=\"viewstat.php?page=".($i - 1)."&proseite=".$_REQUEST['proseite']."\">".$i."</a> ";
	}
}	

for ($i = $tttest; $i <= $seiten; $i++) {
	if ($_GET['page'] == $k) {
		echo " <b class=\"red\">$i</b> ";
	} else {
		if ($_GET['page'] > ($k-6)) {
			echo " <a href=\"viewstat.php?page=$k&proseite=".$_REQUEST['proseite']."\">$i</a> ";
		}
		if ($_GET['page'] == ($k-6)) {
			echo " ... ";
		}
	}
	
	$k++;
}

if ($tttest < $seiten) { 
	if ($_GET['page']<$seiten) {
    	$i=$_GET['page']+1; 
    	echo "<a href=\"viewstat.php?page=$i&proseite=".$_REQUEST['proseite']."\">Weiter »</a>"; 
    }
	echo "<a href=\"viewstat.php?page=".($seiten-1)."&proseite=".$_REQUEST['proseite']."\"> Ende ›</a> ";
} else {
	echo "<b>Weiter »</b>";
	echo "<b> Ende ›</b>";
}

?>
 
Hi.

An alle. Ich habe auf die letzten Satz von hubeR83 geantwort, nur der wurde wahrscheinlich vom MOD gelöscht. Warum auch immer.

Also hier nochmal meine Antwort auf:

Jetzt bleibt die Frage, wie, wodurch hast du es hinbekommen? Evtl durch Suchen?

Der Spruch ist nur nachvollziehbar, wenn die Leute hier jeden Tag die gleichen Fragen bekommen, ist es nur logisch solche "Sprüche" abzulassen!

:nospam:
 
An alle. Ich habe auf die letzten Satz von hubeR83 geantwort, nur der wurde wahrscheinlich vom MOD gelöscht. Warum auch immer.
Richtig. Und Deine "Antwort" wurde deshalb geloescht weil sie absolut sinnfrei war.
In Deinen Augen mag zwar auch der Hinweis auf die Suchfunktion wenig Sinn haben, aber diese Themen laufen hier nunmal oefter auf, und anstatt jedes Mal alles von vorn durchzukauen kann man besser auf die Suchfunktion verweisen, denn die gewuenschten Infos lassen sich halt darueber finden.
Wenn Dir das nicht passt, dass Du aufgefordert wirst diese Funktion zu nutzen, warum auch immer, dann ist das Dein Problem, denn jeder der hier schon eine Weile dabei und regelmaessig im PHP-Board unterwegs ist wird wissen, dass es das Thema bereits gab und somit auf die Suchfunktion verweisen, oder, wenn Du etwas Glueck hast, in einem Anflug unglaublicher Langeweile diese selbst bemuehen und Dir gleich die Links zu den Themen servieren.
 
Zurück