Next side funktion
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansehen
anzahl
ausgabe
beitrag
bild
date
email
ergebnis
first
insert
kategorie
klappe
limit
mengen
null
order
page
result
tabelle
target
-
mein momentaner script ist
<html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <title>Gastbook</title> </head> <body> <?php //Zensur... Geheimedaten// error_reporting(0); include("config.php"); include("connect.php"); if ($_POST[text] != "" && $_POST[author] != "") { $author = addslashes($_POST[author]); $text = addslashes($_POST[text]); $email = addslashes($_POST[email]); $date = addslashes(date("d.m.Y")); $time = addslashes(date("H:i")); $db->sql_query("INSERT INTO "._GASTBOOK_TABLE." VALUES (NULL, '$author', '$email', '$date', '$time', '$text')") or errmsg(join("\n", $db->sql_error())); echo "<center><h3>Article has been posted.</h3></center>"; } else { echo "<h1>Post an article</h1><br>"; echo "<form action=index.php?op=addarticle method=POST>"; echo "<b>Author's name</b>*<input size=40 type=text name=author><br>"; echo "<b>Author's email (optional)</b><input size=40 type=text name=email><br>"; echo "<b>Article text: *</b><br>"; echo "<textarea cols=70 rows=10 name=text></textarea><br>"; echo "<input type=submit value=\"Publish article\">"; echo "</form><br><br>"; } $res = $db->sql_query("SELECT id, author, date, time, text FROM "._GASTBOOK_TABLE." ORDER BY id DESC"); while ($row = $db->sql_fetchrow($res)) { echo "<b>". if ($row[email] == "") { echo "$row[author]"; } else { echo "<a href=\"mailto:$row[email]\">$row[author]</a>"; } ."</b>(am $row[date] um $row[time])<br>$row[text]<br>"; } ?> </body> </html>
nun werden alle beitr?ge untereinander angezeigt ohne limit.... dh. wenn 1.000.000 beitr?ge vorhanden sind l?d die seite sehr langsam...
nun will ich einzelne seiten mit einem beitrags limit 10 oder 20 beitr?ge... habe aber keine ahnung wie ich das anfangen soll ..
kann mir das jemand mal programieren?
Beitrag ge?ndert am 23.07.2006 17:05 von kyokosama -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
limit bekommst du mit limit ^^
$res = $db->sql_query('SELECT id, author, date, time, text FROM '._GASTBOOK_TABLE.' ORDER BY id DESC LIMIT 0,20');
hier im beispiel werden beginnend vom 0. Eintrag insgesamt 20 beitr?ge ausgegeben.
Beitrag ge?ndert am 23.07.2006 20:08 von c0d3c -
Ich hab dir mal ein paar Zeilen aus einem GB, was ich mal programmiert habe kopiert. Damit m?sste das klappen.
Du musst das nur f?r deine Zwecke umschreiben.
$result = mysql_query("SELECT * FROM gb "); $rows=mysql_num_rows($result); $anzahl_page=($rows/10);//hier regulieren, wie viele post pro seite [1] $anzahl_page=round($anzahl_page,0); $glatt=$rows%10; //pr?ft ob Rest vorhanden ist und f?gt gegebennen falls eine weitere Page f?r den Rest hinzu [2] if ($glatt != 0) { $anzahl_page=$anzahl_page+1; } for ($i=0; $i<$anzahl_page;$i++) { $t=$i+1; echo "<a href='inhalt.php?site=gb&page=".$t."'>".$t."</a>"; } //Eintr?ge auf verwschiedene Seu?ten verteilen if ($page=="" OR $page==1) {$lim=0;} else {$lim = ($page-1)*10;}//hier regulieren, wie viele post pro seite [3] //GB wird aus der DB ausgelesen $result = mysql_query("SELECT * From gb ORDER BY datum DESC LIMIT $lim, 10") OR die(mysql_error());//hier regulieren, wie viele post pro seite [4]
Beitrag ge?ndert am 23.07.2006 20:18 von dagar888 -
danke geht jetzt ihr habt mir super geholfen
edit:
es gibt ein problem seht aber selber http://lordstefan.lo.ohost.de/index.php geht mal die seiten durch.... seht ihr es? auf seite 3 ist nix ... dies tritt immer auf wenn eine seite halb belegt ist.... dann wird immer eine unn?tige seite angezeigt in diesem fall [3].. das geht so weiter bis die seite voll ist das ist die seite [3] wieder weg.....
<html> <head> <link rel="stylesheet" href="style.css" type="text/css"> <title>Posting</title> </head> <body> <?php error_reporting(0); ///Zensur($dbhost,$dbuser,$dbpass,$dbname)/// $limit = '15'; $connect_id = mysql_connect($dbhost,$dbuser,$dbpass); mysql_select_db($dbname,$connect_id); if ($page=="" OR $page==1) {$first=0;} else {$first=($page-1)*$limit;} if ($_GET[check]==1) { if ($_POST[author]=="") {echo "Bitte gibt einen Namen an.<br>";} else {}; if ($_POST[email]!="") { if (ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email)) { echo""; } else { echo "Bitte gibt eine korrekte eMail-Adresse an.<br>"; }} else {} if ($_POST[text]=="") {echo "Bitte gibt einen Text an.<br>";} else {}; } else {}; if ( $_POST[text] != "" && $_POST[author] != "" && ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@([a-zA-Z0-9-]+\.)+([a-zA-Z]{2,4})$", $email) OR $_POST[text] != "" && $_POST[author] != "" && $_POST[email] == "" ) { $author = addslashes($_POST[author]); $text = addslashes($_POST[text]); $email = addslashes($_POST[email]); $date = addslashes(date("d.m.Y")); $time = addslashes(date("H:i")); mysql_query("INSERT INTO posting VALUES (NULL, '$author', '$email', '$date', '$time', '$text')") or die(mysql_error()); echo "<center><h3>Article has been posted.</h3></center>"; } else { echo "<h1>Post an article</h1><br>"; echo "<form action=index.php?check=1 method=POST>"; echo "<b>Author's name</b>*<input size=40 type=text name=author><br>"; echo "<b>Author's email (optional)</b><input size=40 type=text name=email><br>"; echo "<b>Article text: *</b><br>"; echo "<textarea cols=70 rows=10 name=text></textarea><br>"; echo "<input type=submit value=\"Publish article\">"; echo "</form><br><br>"; } $res = mysql_query("SELECT id, author, email, date, time, text FROM posting ORDER BY id DESC LIMIT $first, $limit"); while ($row = mysql_fetch_array($res)) { echo "<b>"; if ($row[email] == "") { echo "$row[author]"; } else { echo "<a href=\"mailto:$row[email]\">$row[author]</a>"; }; echo "</b> (am $row[date] um $row[time])<br>$row[text]<br>"; } $res = mysql_query("SELECT * FROM posting"); $row_num = mysql_num_rows($res); $page_num = ($row_num/$limit); $page_num = round($page_num,0); $glatt = $row_num%$limit; if ($glatt != 0) { $page_num = $page_num+1; } for ($i=0; $i<$page_num; $i++) { $t=$i+1; echo "<a href='index.php?page=".$t."'>[".$t."]</a> "; } $res = mysql_query("SELECT * From posting ORDER BY id DESC LIMIT $first, $limit") OR die(mysql_error()); ?> </body> </html>
Beitrag ge?ndert am 26.07.2006 01:54 von kyokosama -
LOL!
Ich hab damals eine Funktion zum Runden benutzt, um die nachkommastellen wegzubekommen :D
Ersetz das hier
$page_num = round($page_num,0);
durch
$page_num = number_format($page_num, 0);
Dann denke ich m?sste das klappen.
-
gut, dass es hier schon so en Thema gibt.... mein Problem ist ein klein bischen anders.... ic habe das mit den Seiten schon, aber ich m?chte gerne noch, dass man sic eine Kategorie und die Anzahl der, in meinem Fall Bilder, aussuchen kann.
geht einfach mal auf http://www.djtechnostyler.de.ms und dann auf Pix ansehen, dann set ihr, was ich meine. ich habe das so eingestellt, dass man zuerst alle Bilder sieht, also ohne Kategorie und wenn man keine Bilderanzahl pro Seite eingegeben hat, werden immer zuerst 10 angezeigt.
Wenn man sich bei der Kategorieennavigation alles aussucht, also entsprecende Kategorie und Bilderanzahl pro Seite, ist das kein Problem. Sobald man aber von Seite 1 auf eine andere Seite wechselt, hat man wieder die Anfangseinstellungen, und ds bereitet mir noch Kopfscmerzem.... hier ist mal mein Script:
$kategorie = $_POST["kategorie"]; $anzahl = $_POST["anzahl"]; echo '<form method="POST" action="picshow.php"> <p align="left"><font size="2">Kategorie w?hlen:</font><select size="1" name="kategorie" style="font-family: Verdana; font-size: 7pt; color: #FFFFFF; border: 1px dotted #2A2A2A; background-color: #2A2A2A; font-weight:bold"> <option selected>'.$kategorie.'</option> <option>Fun</option> <option>Extreme</option> <option>Wallpaper</option> </select> <font size="2">Anzahl Bilder pro Seite:</font> <!--webbot bot="Validation" s-display-name="anzahl" s-data-type="Integer" s-number-separators="x" i-maximum-length="2" --> <input type="text" name="anzahl" size="7" style="font-family: Verdana; font-size: 7pt; color: #FFFFFF; font-weight: bold; border: 1px dotted #2A2A2A; background-color: #2A2A2A" maxlength="2" value="'.$anzahl.'"> <input type="submit" value="GO" name="B1" style="font-family: Verdana; font-size: 7pt; color: #FFFFFF; border: 1px dotted #2A2A2A; background-color: #2A2A2A; font-weight:bold"></p> </form>'; $seite = $_GET["seite"]; //Abfrage auf welcher Seite man ist //Wenn man keine Seite angegeben hat, ist man automatisch auf Seite 1 if(!isset($seite)) { $seite = 1; } //Verbindung zu Datenbank aufbauen $link = mysql_connect("HOST","USER","PASSWORT") or die ("Keine Verbindung moeglich"); mysql_select_db("DATENBANK") or die ("Die Datenbank existiert nicht"); //Eintr?ge pro Seite: Hier 15 pro Seite $anzahl = $_POST["anzahl"]; if($anzahl=="") { $eintraege_pro_seite = 10; } else { $eintraege_pro_seite = $anzahl ; } //Ausrechen welche Spalte man zuerst ausgeben muss: $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite; //Tabelle Abfragen //Tabelle heißt hier einfach: Tabelle if($kategorie=="") { $abfrage = "SELECT bild FROM uploadbilder ORDER BY bilderid DESC LIMIT $start, $eintraege_pro_seite"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo $row->bilderid.'<a title="'.$row->bild.'" target="_blank" href="uploadbilder/'.$row->bild.'"> <img border="0" src="uploadbilder/'.$row->bild.'" width="100" height="110"></a>'; // Hier die Ausgabe der Eintr?ge } } else { $abfrage = "SELECT bild FROM uploadbilder WHERE kategorie LIKE '$kategorie' ORDER BY bilderid DESC LIMIT $start, $eintraege_pro_seite"; $ergebnis = mysql_query($abfrage); while($row = mysql_fetch_object($ergebnis)) { echo $row->bilderid.'<a title="'.$row->bild.'" target="_blank" href="uploadbilder/'.$row->bild.'"> <img border="0" src="uploadbilder/'.$row->bild.'" width="100" height="110"></a>'; // Hier die Ausgabe der Eintr?ge } } //Jetzt kommt das "Inhaltsverzeichnis", //sprich dort steht jetzt: Seite: 1 2 3 4 5 //Wieviele Eintr?ge gibt es ?berhaupt //Wichtig! Hier muss die gleiche Abfrage sein, wie bei der Ausgabe der Daten //also der gleiche Text wie in der Variable $abfrage, bloß das hier das LIMIT fehlt //Sonst funktioniert die Bl?tterfunktion nicht richtig, //und hier kann nur 1 Feld abgefragt werden, also id if($kategorie=="") { $result = mysql_query("SELECT bilderid FROM uploadbilder ORDER BY bilderid DESC"); $menge = mysql_num_rows($result); } else { $result = mysql_query("SELECT bilderid FROM uploadbilder WHERE kategorie LIKE '$kategorie' ORDER BY bilderid DESC"); $menge = mysql_num_rows($result); } //Errechnen wieviele Seiten es geben wird $wieviel_seiten = $menge / $eintraege_pro_seite; //Ausgabe der Seitenlinks: echo "<div align=\"center\">"; echo "<b>Seite:</b> "; //Ausgabe der Links zu den Seiten for($a=0; $a < $wieviel_seiten; $a++) { $b = $a + 1; //Wenn der User sich auf dieser Seite befindet, keinen Link ausgeben if($seite == $b) { echo " <b>$b</b> "; } //Aus dieser Seite ist der User nicht, also einen Link ausgeben else { echo " <a href=\"?seite=$b\">$b</a> "; } } echo "</div>";
Das ist jetzt also genau das Script, wie auf http://www.djtecnostyler.de.ms auf der Kategorie Pix ansehen. Und bevor wieder einer sowas komisches anmerkt.... ich habe selbstverst?ndlich meine MySQL-Daten ge?ndert, damit keiner auf die Idee kommt mir da alles zu l?schen.... also net wundern, wenn bei euch SQL-Feler kommen...
Aber k?nnte mir da einer weiterhelfen? W?re echt nett...
Schonmal Danke im Vorraus... -
@knuddelstreff:
Ich wei? wo du das Seiten script geklaut hast
@kyoko:
Die L?sung von knuddelstreff ist richtig, auch wenn das Tutorial, was dazu geh?rt, das ganze noch etwas allgemeiner und auch auf G?steb?cher bezogen wiedergibt.
Leider finde ich das Tutorial im moment nicht.
Nachtrag:
Habs doch noch gefunden!
http://www.php-einfach.de/tuts_mysql_gb.php
Viel Spa? damit.
-AlienDwarf
Beitrag ge?ndert am 26.07.2006 11:46 von aliendwarf -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage