Blätterfunktion ohne $_GET[''] Variable
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absender
angabe
anzahl
ausgabe
auslese
brauchen
datenbank
datensatz
eintrag
fehler
funktion
inhalt
limit
offset
start
tabelle
update
verbindung
zeigen
zeile
-
Hi,
daher das mein erstes Tutorial ist, hoffe ich, dass ihr nicht zu hart mit mir seit. ;)
Die Tabelle, die ich verwende um die Bl?tterfunktion zu erkl?ren schaut so aus, kann aber nat?rlich auch anders aussehen:
+----+----------------+-----------------------+---------------------+
| ID | Titel | Inhalt | Absender |
+----+----------------+-----------------------+---------------------+
| 2 | Test 3 | und noch einer | Peter |
| 1 | Der zweite | noch ein Eintrag | Mr.x |
| 0 | 1. Eintrag | erster Eintrag | Kudi |
+----+----------------+-----------------------+---------------------+
Um die Daten aus der MySql Datenbank auszulesen, verwenden wir die LIMIT Funktion.
Erkl?rung der Limit Funktion von http://tut.php-q.net :
Mit der LIMIT-Angabe k?nnen wir aus einer Ergebnis-Tabelle nur eine bestimmte Anzahl von Datens?tze auslesen. Die LIMIT-Angabe ist wie folgt aufgebaut.
in SELECT:
LIMIT [offset,]anzahl
in UPDATE und DELETE:
LIMIT anzahl
Die anzahl-Angabe muss immer angegeben werden. Wenn man ab einer bestimmten Stelle die Datens?tze auslesen m?chte gibt man den offset an, getrennt durch Komma. Bei eine UPDATE und DELETE Befehl ist eine Offset-Angabe nicht m?glich. Die Offset-Angabe startet bei 0 f?r den ersten Datensatz.
SELECT .... LIMIT 5
lie?t nur 5 Datens?tze aus
SELECT .... LIMIT 4,6
lie?t 6 Datens?tze aus, starte aber beim Offset 4
also beim 5. Datensatz. Dieser Befehl lie?t also
Datensatz 5 bis 10 aus der Ergebnistabelle aus
(5,6,7,8,9,10 = 6 Datens?tze).
DELETE .... LIMIT 1
Wenn die WHERE Bedingung mehrere Datens?tze erfassen
w?rde, wird dabei aber nur ein Datensatz gel?scht.
UPDATE .... LIMIT 2
Es werden nur 2 Datens?tze ver?ndert, selbst
wenn die WHERE-Bedingung mehrere erfassen w?rde.
Eintr?ge aus der Datenbank auslesen:
<?php
$zeigen = "2";
if(!isset($_POST['hiddenfeldname']))
{
$start = "0";
}
else
{
$start = $_POST['hiddenfeldname'];
}
$link = mysql_connect("MYSQL HOST","NAME","PASSWORT") or die ("Verbindung nicht m?glich : " . mysql_error());
$select = mysql_select_db("DATENBANK", $link) or die ("Kann DATENBANK nicht benutzen : " . mysql_error());
$anzahl = mysql_num_rows(mysql_query("SELECT ID, Titel, Absender, Inhalt from TABELLE", $link));
$result = mysql_query("SELECT ID, Titel, Absender, Inhalt from TABELLE ORDER BY ID DESC LIMIT $start, $zeigen;");
<?php
$zeigen = "2";
In der Variable $zeigen wird gespeichert, wieviele Eintr?ge pro Seite angezeigt werden sollen.
if(!isset($_POST['hiddenfeldname']))
{
$start = "0";
}
else
{
$start = $_POST['hiddenfeldname'];
}
Wenn $_POST[’hiddenfeldname’] nicht gesetzt ist bekommt die Variable $start den Wert 0, ansonsten bekommt $start den wert von $_POST['hiddenfeldname'].
Diesen Teil brauchen wir f?r die LIMIT Funktion.
$link = mysql_connect("MYSQL HOST","NAME","PASSWORT") or die ("Verbindung nicht m?glich : " . mysql_error());
mysql_connect() ?ffnet eine Verbindung zu einem MySQL Server.
Daher wir diese Verbindung ?fters brauchen speichern wir sie in einer Variable($link). Falls mysql_connect keine Verbindung aufnehmen kann, wird der Fehler “Verbindung nicht m?glich : FEHLER“ ausgegeben(mysql_error() ermittelt den Fehler). MYSQL_HOST, NAME und PASSWORT sind zu ersetzen.
$select = mysql_select_db("DATENBANK", $link) or die ("Kann DATENBANK nicht benutzen : " . mysql_error());
mysql_select_db w?hlt die Datenbank von dem MySql Server aus. DATENBANK muss ersetzt werden.
$anzahl = mysql_num_rows(mysql_query("SELECT ID, Titel, Absender, Inhalt from TABELLE", $link));
mysql_num_rows ermittelt wie viele eintr?ge in der TABELLE(muss wieder ersetzt werden) sind.
$result = mysql_query("SELECT ID, Titel, Absender, Inhalt from TABELLE ORDER BY ID DESC LIMIT $start, $zeigen;");
mysql_query() sendet eine Anfrage an die zur Zeit aktive Datenbank. TABELLE muss wieder ersetzt werden. Hier kommt jetzt die LIMIT Funktion zum Einsatz.
Eintr?ge ausgeben:
?>
<html>
<head>
<title>Bl?tterfunktion</title>
</head>
<body>
<?php
while($zeile = mysql_fetch_array($result))
{
?>
<table border="1">
<tr>
<td><?php echo $zeile['Titel']." von ".$zeile['Absender']; ?></td>
</tr>
<tr>
<td><?php echo $zeile['Inhalt']; ?></td>
</tr>
</table>
<?php
}
Die Eintr?ge werden mit der while-Schleife ausgegeben.
Bl?tterfunktion:
if($anzahl>$zeigen)
{
$ausgabe = ceil($anzahl/$zeigen);
echo "<form action=\"".$PHP_SELF."\" name=\"news_formular\" method=\"POST\">\n";
echo "<input type=\"hidden\" value=\"0\" name=\"hiddenfeldname\">\n";
echo "<br>\n<center>\n";
for($i=1;$i<=$ausgabe;$i++)
{
$links_anzeigen = $zeigen * $i - $zeigen;
if($start==$links_anzeigen)
{
echo "<a href=\"#\" style=\"color:#00FF00\" onClick=\"news_formular.hiddenfeldname.value='" .$links_anzeigen. "';document.news_formular.submit();\"> ".$i."</a>\n";
}
else
{
echo "<a href=\"#\" onClick=\"news_formular.hiddenfeldname.value='".$links_anzeigen."';document.news_formular.submit();\"> ".$i."</a>\n";
}
}
echo "</center>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>\n";
}
?>
if($anzahl>$zeigen)
{
Damit wird ?berpr?ft ob es mehr Eintr?ge gibt, als Eintr?ge pro Seite angezeigt werden sollen. Wenn die Abfrage true ist, gibt es eine Bl?tterfunktion.
$ausgabe = ceil($anzahl/$zeigen);
In der Variable $ausgabe wird gespeichert, wie viele Seiten es geben wird. ceil rundet das Ergebnis auf (zb 3,00001 w?re 4)
echo "<form action=\"".$PHP_SELF."\" name=\"news_formular\" method=\"POST\">\n";
echo "<input type=\"hidden\" value=\"0\" name=\"hiddenfeldname\">\n";
Damit die LIMIT Funktion die Daten bekommt brauchen wir ein Formular mit einem hiddenfeld.
echo "<br>\n<center>\n";
for($i=1;$i<=$ausgabe;$i++)
{
Die for-Schleife gibt die Seiten aus.
$links_anzeigen = $zeigen * $i - $zeigen;
Mit dieser "Formel" wird errechnet welcher Wert an die Limit Funktion ?bergeben werden soll.
if($start==$links_anzeigen)
{
echo "<a href=\"#\" style=\"color:#00FF00\" onClick=\"news_formular.hiddenfeldname.value='" .$links_anzeigen. "';document.news_formular.submit();\"> ".$i."</a>\n";
}
else
{
echo "<a href=\"#\" onClick=\"news_formular.hiddenfeldname.value='".$links_anzeigen."';document.news_formular.submit();\"> ".$i."</a>\n";
}
}
Die if-Funktion ermittelt auf welcher Seite man ist und gibt den Link dieser Seite in der Farbe gr?n aus. OnClick bewirkt, dass das Formular mit dem hiddenfeld, welches den Wert der Variable $links_anzeigen hat, abgesendet wird.
echo "</center>\n";
echo "</form>\n";
echo "</body>\n";
echo "</html>\n";
}
?>
Die Tags weder geschlossen und die if_Funktion wird beendet.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Dieses Thema wurde mit folgender Begr?ndung von kenny197902 geschlossen:
Langsam werdens doch zuviele Tutorials zum Schlie?en. Den Grund solltest du anhand der anderen Tutorials hier kennen!
(Dies ist eine automatische Antwort durch das System). -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage