| | | | |
| | |
| Benutzer Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse: Anfänger ![]() | hallo zusammen, ich brauche eure hilfe!... folgendes problem: habe auf meiner homepage eine sammlung von sprüchen, die aus einer sql-datenbank ausgelesen werden. die datenbank enthält 3 tabellen, die ich bei der ausgabe miteinander verknüpfe. die struktur der datenbank stellt sich wie folgt dar: Tabellen: 1. user spalten: user_id / nutzername / email / website 2. sprueche spalten: sprueche_id / autor / kategorie / spruch / user /eingetragen_am 3. autor spalten: autor_id / vorname / nachname / wikipedia die verknüpfung und anschließende ausgabe funzt auch gut... dafür verwende ich folgenden code: Code: <?php
mysql_connect("Privider","Datenbank","Kennwort");
mysql_select_db("Datenbank");
$sql = "SELECT
sprueche.autor AS spruecheid,
sprueche.kategorie,
sprueche.spruch,
sprueche.eingetragen_am,
autor.autor_id AS autorid,
autor.vorname,
autor.nachname,
autor.wikipedia,
user.user_id AS userid,
user.nutzername,
user.email,
user.website
FROM
sprueche
INNER JOIN
autor
ON
sprueche.autor = autor.autor_id
INNER JOIN
user
ON
sprueche.user = user.user_id
WHERE
sprueche.kategorie like '%" . $_POST["kategorie"]."%'
ORDER BY
sprueche.eingetragen_am DESC";
$res = mysql_query($sql);
$num = mysql_num_rows($res);
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<small><small>";
echo "Beitrag von ". $dsatz["nutzername"] ." | ";
if ($dsatz["email"] != "")
{
echo "<a href=mailto:". $dsatz["email"] ."><small>". $dsatz["email"] ."</small></a>";
echo " | ";
}
if ($dsatz["website"] != "")
{
echo "<a href=\"http://". $dsatz["website"] ."\" target=_blank><small>". $dsatz["website"] ."</small></a>";
echo " | ";
}
echo "eingetragen am ". $dsatz["eingetragen_am"] ."";
echo "</small></small>";
echo "<br>";
echo "<big><b>". $dsatz["spruch"] ."</b></big>";
echo "<br>";
if ($dsatz["vorname"] || $dsatz["nachname"] != "")
{
if ($dsatz["wikipedia"] != "")
{
echo "<a href=\"http://". $dsatz["wikipedia"] ."\" target=_blank><big>". $dsatz["vorname"] ." ". $dsatz["nachname"] ."</big></a>";
}
else
{
echo $dsatz["vorname"]," ",$dsatz["nachname"];
}
}
else
{
echo "<small><small>Autor nicht bekannt</small></small>";
}
echo "<br><br><br>";
}
?>
Soweit so gut... jetzt möchte ich aber pro seite nur 10 (verknüpfte) datensätze ausgeben und am seitenanfang und -ende eine weiter- bzw. rückleitung zur nächsten bzw. vorherigen seite realisieren. gleichzeitig sollen an dieser stelle auch die noch verfügbaren seiten angezeigt werden, damit man auch direkt dahin verlinken kann. ich hoffe ganz sehr, dass mir jemand helfen kann!!! vielen dank! ihr rettet mein weihnachten viele grüße ramon |
| |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | ||
| Benutzer Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse: Anfänger ![]() | Zitat:
irgendwie bekomme ich das als php-frischling nicht so richtig hin. vielleicht könntest du mir auf die sprünge helfen, an welcher stelle ich in meinem skript was einfügen muss. wäre ganz toll von dir! danke und vg ramon | |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 19.03.2007
Beiträge: 176
![]() | Zitat:
Also ich werd nochmal deutlicheren Code schreiben. Wie/Wo du das einfügen musst müsstest du aber eigentlich selbst rauskriegen können. Schritt 1 ist die gesamtanzahl Datensätze zu holen. Genau genommen hast du das in deinem Script sogar schon gemacht - du verwendest es nur nicht. PHP-Code: Schritt 2 ist die Ausgabe der Seitenauswahl. Den Code hab ich ja eigentlich schon gepostet, der ist auch prinzipiell ganz einfach PHP-Code: Im Endeffekt erzeugt der Code dann eine solche Ausgabe: Code: <a href="dieseseite.php?start=0">1</a> <a href="dieseseite.php?start=20">2</a> <a href="dieseseite.php?start=40">3</a> <a href="dieseseite.php?start=60">4</a> Schritt 3: Die Sprüche ausgeben. Eigentlich ganz einfach. Dazu benutzt du $start und gehst von $start 20 Datensätze weiter. Musst halt noch dafür sorgen das bei fehlendem $start eine 0 angenommen wird und $start nicht größer sein kann als $num-20 aber prinzipiell ... PHP-Code: Wählt er Seite 1 (start=0) wird vom ersten Datensatz aus gelesen. Wählt er Seite 2 (start=20) kriegst du Spruch 20 bis Spruch 40 zurück ... usw. Ich hoffe das war verständlich. Wichtig dabei ist halt das du dir anschaust was LIMIT macht (google -> "mysql limit") und die for-schleife musst du halt verstanden haben. mfg | |
| |
| | ||
| Erfahrener Benutzer Registriert seit: 05.09.2007
Beiträge: 5.044
![]() | Um nur die Anzahl zu bestimmen, ist Zitat:
Dazu sollte man besser Count() oder in diesem Fall FOUND_ROWS() verwenden. | |
| |
| | ||
| Benutzer Registriert seit: 25.12.2008
Beiträge: 35
PHP-Kenntnisse: Anfänger ![]() | Zitat:
theorie hab ich verstanden... die veränderungen hab ich auch vorgenommen, nur wie ich denke an den falschen stellen ... kannst du da dem php-grünling noch bissel auf die sprünge helfen?der code sieht jetzt so aus (und funzt nicht Code: $start = 0;
$sql = "SELECT
sprueche.autor AS spruecheid,
sprueche.kategorie,
sprueche.spruch,
sprueche.eingetragen_am,
autor.autor_id AS autorid,
autor.vorname,
autor.nachname,
autor.wikipedia,
user.user_id AS userid,
user.nutzername,
user.email,
user.website
FROM
sprueche
INNER JOIN
autor
ON
sprueche.autor = autor.autor_id
INNER JOIN
user
ON
sprueche.user = user.user_id
WHERE
sprueche.kategorie like '%" . $_POST["kategorie"]."%'
ORDER BY
sprueche.eingetragen_am DESC
LIMIT ".$_GET['start'].",20";
$res = mysql_query($sql);
$num = mysql_num_rows($res);
for ($page=0;$page*20 < ($num-20);$page++)
{
echo '<a href="test.php?start='.$page*20.'">'.($page+1).'</a>';
}
while ($dsatz = mysql_fetch_assoc($res))
{
echo "<small><small>";
echo "Beitrag von ". $dsatz["nutzername"] ." | ";
if ($dsatz["email"] != "")
{
echo "<a href=mailto:". $dsatz["email"] ."><small>". $dsatz["email"] ."</small></a>";
echo " | ";
}
if ($dsatz["website"] != "")
{
echo "<a href=\"http://". $dsatz["website"] ."\" target=_blank><small>". $dsatz["website"] ."</small></a>";
echo " | ";
}
echo "eingetragen am ". $dsatz["eingetragen_am"] ."";
echo "</small></small>";
echo "<br>";
echo "<big><b>". $dsatz["spruch"] ."</b></big>";
echo "<br>";
if ($dsatz["vorname"] || $dsatz["nachname"] != "")
{
if ($dsatz["wikipedia"] != "")
{
echo "<a href=\"http://". $dsatz["wikipedia"] ."\" target=_blank><big>". $dsatz["vorname"] ." ". $dsatz["nachname"] ."</big></a>";
}
else
{
echo $dsatz["vorname"]," ",$dsatz["nachname"];
}
}
else
{
echo "<small><small>Autor nicht bekannt</small></small>";
}
echo "<br><br><br>";
}
?>
gruß ramon | |
| |
| | |
| Erfahrener Benutzer Registriert seit: 19.03.2007
Beiträge: 176
![]() | naja, an sich ist das nicht direkt falsch, aber: du wendest mysql_num_rows() auf die mysql-query an die LIMIT enthält. sprich du sagst in der mysql-query "bitte nur 20 datensätze zurückgeben" und fragst dann per mysql_num_rows() nach "wieviel datensätze hab ich bekommen?" - sprich in $num wird immer 20 stehen. du musst 2 anfragen an die mysql-datenbank machen. eine ohne limit, auf die du mysql_num_rows() anwendest und nachher eine mit LIMIT, aus der du die sprüche ziehst die du ausgibst. und btw: ja, COUNT(*) wäre eine bessere möglichkeit, allerdings wollt ich jetzt nicht noch mehr neues reinbringen ^^ mfg |
| |
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [Erledigt] Header Location funktioniert nicht, wenn div's oder span's auf der Seite s | phpels | PHP Tipps 2008 | 24 | 01.12.2008 00:16 |
| Hilfe, Seite im Internet Explorer Buggy | trowman | HTML, Usability und Barrierefreiheit | 4 | 15.09.2008 08:32 |
| Bei richtiger Eingabe Daten an nächste Seite versenden | xx_heidi_xx | PHP Tipps 2008 | 49 | 27.05.2008 14:56 |
| Krieg kein Objekt zurück auf includeter Seite | NONNNNN | PHP Tipps 2008 | 5 | 28.03.2008 19:25 |
| Eintrag in DB und Wechsel zu anderer Seite | Darson | PHP Tipps 2008 | 25 | 14.01.2008 16:46 |
| Ausgabe von PHP Variablen-Wert in HTML Seite | Ladbroke | PHP Tipps 2006 | 23 | 24.04.2006 15:49 |
| Ausgabe von Datensätzen | stefan-miti | PHP Tipps 2007 | 13 | 17.11.2005 17:50 |
| Seite wird nicht angezeigt, untersch. Fehler bei IE/FF/Safar | PHP-Fortgeschrittene | 19 | 31.05.2005 14:52 | |
| [Erledigt] Seite in Seite | PHP-Fortgeschrittene | 3 | 15.03.2005 19:27 | |
| Seite zwischenspeichern | Sirke | PHP Tipps 2004 | 2 | 12.10.2004 22:27 |
| [Erledigt] Sortierung der Ausgabe | PHP-Fortgeschrittene | 3 | 08.10.2004 09:22 | |
| php+Seite kann nicht angeziegt werden, Seite existiert aber | Server, Hosting und Workstations | 2 | 09.09.2004 08:21 | |
| Datenbank Ausgabe auf mehrere Seite verteilen | PHP Tipps 2004 | 8 | 01.08.2004 17:51 | |
| Funktion zum Teilen von großen Datensätzen auf mehrere Seite | Off-Topic Diskussionen | 6 | 21.07.2004 17:03 | |
| Seite nicht mit content="3600" im Cache gespeicher | scheibo | PHP Tipps 2004 | 0 | 19.07.2004 14:49 |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| pro datensatz eine seite, 10 pro seite php, sql begrenzte ausgabe, php datensätze pro seite, http://www.php.de/php-tipps-2009/50075-begrenzte-ausgabe-von-datensaetzen-pro-seite.html, nur die ersten 1000 datensätze holen, datensatz pro seite, php tutorial begrenzte ausgabe, pro datensatz eine seite ohne code, sql begrenzte anzahl ausgeben, mysql begrenzte ausgabe, php liste datensatz pro seite, datensätze pro seite, php begrenzte anzahl datensätze pro seite, datensätze pro seite php, sql ergebnisse begrenzte seiten, php datensatz pro seite, sql begrenzte anzahl datensätze pro seite, php script zurück, weiter 1,2,3 begrenzte anzeige daten sql datenbank, pro datensatz eine berichtsseite |