HTML Table Pagination

cardinal

Lt. Junior Grade
Registriert
Mai 2010
Beiträge
467
Guten Tag Community,

ich bin relativ neu in der Welt von HTML und PHP und versuche momentan meine schon bestehende Tabelle in Seiten aufzuteilen, damit diese nicht so lang ist. Mein Problem ist, dass ich es einfach nicht gebacken bekomme...
Ich finde zwar einiges dazu im Netz, nur irgenein ordentliches Beispiel ist nicht dabei.

Hier mal der Code meiner Tabelle: (ist nicht unbedingt die beste Lösung, aber es funktioniert wenigstens)

HTML:
<div class="datagrid">
<table>
<thead>
	<tr>
    	<th>Artikelnr.</th>
        <th>Artikelbeschreibung</th>
        <th>Preis in €</th>
        <th>Firmen-Nr.</th>
        <th>Größe</th>
    </tr>
</thead>
<tfoot>
	<tr>
    	<td colspan="5"><div id="paging"><ul><li><a href="#"><span>Zurück</span></a></						li><li><a href="#" class="active"><span>1</span></a></li><li><a href="#"><span>2</span></a></li><li><a href="#"><span>3</span></a></li><li><a href="#"><span>4</span></a></li><li><a href="#"><span>5</span></a></li><li><a href="#"><span>Weiter</span></a></li></ul></div></tr>
</tfoot>
<tbody>

<!-- DB Ausgabe -->
<?php
//header('Content-Type: text/html; charset=UTF-8');
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC)){
	if ($status == 1){
		echo "<tr class='alt'>";
		echo "<td>". $zeile['artnr'] . "</td>";
		echo "<td>". $zeile['artbeschreibung'] . "</td>";
		echo "<td>". $zeile['preis'] . "</td>";
		echo "<td>". $zeile['firmenid'] . "</td>";
		echo "<td>". $zeile['groesse'] . "</td>";
		echo "</tr>";
		$status++;	
	}
	else {
		echo "<tr>";
		echo "<td>". $zeile['artnr'] . "</td>";
		echo "<td>". $zeile['artbeschreibung'] . "</td>";
		echo "<td>". $zeile['preis'] . "</td>";
		echo "<td>". $zeile['firmenid'] . "</td>";
		echo "<td>". $zeile['groesse'] . "</td>";
		echo "</tr>";
		$status--;
	}
}
?>
</tbody>
</table></div>

Im tablefooter würde ich gern die "pagination" haben, nur wie stelle ich das am besten an?? Oder hat jemand eine bereits fertige Tabelle die man benutzen kann?
Den reinen HTML bzw CSS Code der Tabelle habe ich von einem Table Generator.

Für jegliche Hilfe wäre ich dankbar :)

Gruß,
_Lui_
 
Zuletzt bearbeitet:
Der Tabelle sieht man leicht an, dass sie von einem Generator stammt...

Da ich dir hier keine fix und fertige Lösung präsentieren will gebe ich dir mal ein paar Hinweise, auf einen Lösungsweg:

Stell dir vor, wie so eine Seitenanzeige funktioniert. im Prinzip muss die Seitenzahl übergeben werden (GET) und je nach der Seitenzahl ($page) sollen ja verschiedene "limitierte" (LIMIT Funktion von MySQL) Ergebnisse ausgegeben werden.
Also zum Beispiel $page*10-($page+1)*10. Dies würde dazu führen, dass auf der ersten Seite ($page=0) die Seiten 0-10 angezeigt werden. Wenn du jetzt auf Seite 2 ($page=1) gehst werden die Zeilen 10-20 angezeigt.

Eventuell hilft dir das ja schon, das System der pagination zu verstehen. Im Prinzip muss immer die Seitenzahl abgefragt werden und dann je nach dem die Ergebnisse verändert werden. Dies kannst du jetzt entweder rein über php und html oder zusätzlich mit AJAX lösen.
 
ich würde dir noch n framework (z.b. cakephp) ans herz legen. die haben solche features schon eingebaut, lassen sich erweitern und man gewöhnt sich gerade als anfänger an saubere vorgaben.
 
Du kannst die Tabelle doch bevor du sie ausgibst erstmal analysieren ...

Z.B. wie viele Einträge hast du? 20? Willst du maximal 10 pro Seite?
Kein Problem ... Session Variable einrichten, Info für eine zweite Seite einblenden mit einem Link (z.B. als GET index.php?tablepages=2) -. und dort kannst du dann den zweiten Teil der Tabelle darstellen.

Wenn es mehr als nur 2 Seiten gibt oder geben soll, dann musst du dir ein besseres System überlegen.
Viele Seiten berechnen die Tabelle einfach immer wieder neu - anhand des aktuellen Bereichs!
Bei 40 Einträgen mit 10 Einträgen pro Seite werden auf der ersten Seite natürlich nur 1-10 dargestellt.

Zur Übung wäre es aber fast besser wenn du das Ergebnis (alle vorhandenen Einträge) in einem Array in der Session speicherst + PLUS der zuletzt ausgegebenen Stelle (Array-Position quasi).
 
max_1234 schrieb:
Du kannst die Tabelle doch bevor du sie ausgibst erstmal analysieren ...

Z.B. wie viele Einträge hast du? 20? Willst du maximal 10 pro Seite?
Kein Problem ... Session Variable einrichten, Info für eine zweite Seite einblenden mit einem Link (z.B. als GET index.php?tablepages=2) -. und dort kannst du dann den zweiten Teil der Tabelle darstellen.

Wenn es mehr als nur 2 Seiten gibt oder geben soll, dann musst du dir ein besseres System überlegen.
Viele Seiten berechnen die Tabelle einfach immer wieder neu - anhand des aktuellen Bereichs!
Bei 40 Einträgen mit 10 Einträgen pro Seite werden auf der ersten Seite natürlich nur 1-10 dargestellt.

Zur Übung wäre es aber fast besser wenn du das Ergebnis (alle vorhandenen Einträge) in einem Array in der Session speicherst + PLUS der zuletzt ausgegebenen Stelle (Array-Position quasi).

Momentan sind es um die 200 Einträge ;)
Ich gebe mich mal ran und versuche es selbst zu schaffen (ich hatte zwar auf ne fertige Tabelle gehofft wo ich nur noch alles einfügen muss, aber naja :D:D) zu Übungszwecken ist es eh besser so!
Das ist nur ein Projekt meinerseits für meinen Stiefvater, er benutzt noch so ein extrem altes Programm und ich dachte ich versuche ihm was besseres zu machen und bekomme so noch ein wenig Übung
 
Zurück
Oben