Wenn du die Anzahl der Einträge beschränken willst, solltest du LIMIT verwenden.
Google -> MySQL LIMIT Syntax
Hallo,
leider muß ich Euch mit einem leidigen Thema quälen.
Ich habe das das Newssystem http://www.traum-projekt.com/coding/...instieg_in_php erfolgreich nachgebaut und an meine Seite angepasst. Jetzt habe ich noch eine Blätterfunktion hinzugefügt. Die leider nur ansatzweise funktioniert. Soll heißen, dass die Blätterfunktion zwar angezeigt wird aber mir werden weiterhin auch alle Datenätze angezeigt!
Blätterfunktion:
Eine vermutung hätte ich! Muß ich dem Newssystem noch ein LIMIT hinzufügen oder lieg ich damit total falsch?PHP-Code:
<?php
$seite = $_GET["seite"];
if(!isset($seite))
$seite = 1;
$link = mysql_connect("xxx","xxx","xxx") or die ("Keine Verbindung moeglich");
mysql_select_db("xxx") or die ("Die Datenbank existiert nicht");
$eintraege_pro_seite = 5;
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
$abfrage = "SELECT * FROM tp_news LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->id."<br>";
}
$result = mysql_query("SELECT COUNT(*) FROM ID");
$menge = mysql_fetch_row($result);
$menge = $menge[0];
$wieviele_seiten = ceil($menge / $eintraege_pro_seite);
echo "<div align=\"center\">";
echo "<b>Seite:</b> ";
echo blaetterfunktion($seite, $wieviele_seiten);
echo "</div>";
?>
<?php
function blaetterfunktion($seite,$maxseite,$url="",$anzahl=4,$get_name="seite")
{
if(ereg("\?",$url)) $anhang = "&";
else $anhang = "?";
if(substr($url,-1,1) == "&") {
$url = substr_replace($url,"",-1,1);
}
else if(substr($url,-1,1) == "?") {
$anhang = "?";
$url = substr_replace($url,"",-1,1);
}
if($anzahl%2 != 0) $anzahl++;
$a = $seite-($anzahl/2);
$b = 0;
$blaetter = array();
while($b <= $anzahl)
{
if($a > 0 AND $a <= $maxseite)
{
$blaetter[] = $a;
$b++;
}
else if($a > $maxseite AND ($a-$anzahl-2)>=0)
{
$blaetter = array();
$a -= ($anzahl+2);
$b = 0;
}
else if($a > $maxseite AND ($a-$anzahl-2)<0)
{
break;
}
$a++;
}
$return = "";
if(!in_array(1,$blaetter) AND count($blaetter) > 1)
{
if(!in_array(2,$blaetter)) $return .= " <a href=\"{$url}{$anhang}{$get_name}=1\">1</a> ...";
else $return .= " <a href=\"{$url}{$anhang}{$get_name}=1\">1</a> ";
}
foreach($blaetter AS $blatt)
{
if($blatt == $seite) $return .= " <b>$blatt</b> ";
else $return .= " <a href=\"{$url}{$anhang}{$get_name}=$blatt\">$blatt</a> ";
}
if(!in_array($maxseite,$blaetter) AND count($blaetter) > 1)
{
if(!in_array(($maxseite-1),$blaetter)) $return .= "... <a
href=\"{$url}{$anhang}{$get_name}=$maxseite\">letzte</a> ";
else $return .= " <a href=\"{$url}{$anhang}{$get_name}=$maxseite\">$maxseite</a> ";
}
if(empty($return))
return " <b>1</b> ";
else
return $return;
}
?>
P.S.: Bitte nicht knüppeln wegen dem Thema!![]()
Gruss
cachot
Wenn du die Anzahl der Einträge beschränken willst, solltest du LIMIT verwenden.
Google -> MySQL LIMIT Syntax
So aus meinem Kurzurlaub zurück!
Also wie vermutet und von chorn bestätigt war LIMIT ein Volltreffer aber ich habe wirklich erhebliche probleme die Blätterfunktion in das Script einzubinden!
Das Newsscript sieht immoment so aus:
PHP-Code:<?
include ("tpnews/inc/opendb.inc.php"); // DB öffen
// Auslesen der News
$q_select="SELECT * FROM tp_news ORDER BY startdatum DESC, startzeit DESC LIMIT 0,5";
$r_select=mysql_query($q_select);
while ($strAusgabe=mysql_fetch_array($r_select, MYSQL_ASSOC))
{
// Einlesen der Vorlage news.inc.php
$strVorlage="";
$arrVorlageZeilen=file("tpnews/tpl/news.inc.php");
// Zusammensetzen der Vorlage
foreach ($arrVorlageZeilen as $Vorlage) { $strVorlage.=$Vorlage; }
// Datum zusammenstellen
$intDatePart=explode("-", $strAusgabe[startdatum]);
$strDatum=$intDatePart[2].".".$intDatePart[1].".".$intDatePart[0]." ".$strAusgabe[startzeit];
// Ersetzen der Platzhalter ##NAME##
$strVorlage=ereg_replace("##DATUM##",$strDatum,$strVorlage);
$strVorlage=ereg_replace("##AUTOR##",$strAusgabe[autor],$strVorlage);
$strVorlage=ereg_replace("##TITEL##",$strAusgabe[titel],$strVorlage);
$strVorlage=ereg_replace("##NACHRICHT##",$strAusgabe[nachricht],$strVorlage);
// Augabe der News
echo $strVorlage;
}
Meine Blätterfunktion:
Irgendwie Arbeiten die beiden Scripte nicht zu zusammen.PHP-Code:$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;
}
//Einträge pro Seite: Hier 5 pro Seite
$eintraege_pro_seite = 5;
//Ausrechen welche Spalte man zuerst ausgeben muss:
$start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
//Tabelle Abfragen
//Tabelle heißt hier einfach: Tabelle
$abfrage = "SELECT * FROM tp_news LIMIT $start, $eintraege_pro_seite";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->id. "<br>"; // Hier die Ausgabe der Einträge
}
//Wieviele Einträge gibt es überhaupt
$result = mysql_query("SELECT nachricht FROM tp_news");
$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>";
?>
Geändert von cachot (27.08.2010 um 23:21 Uhr)
Gruss
cachot
"Irgendwie Arbeiten die beiden Scripte nicht zu zusammen." ist keine geeignete Fehlermeldung oder -beschreibung wenn du möchtest, dass dir hier jemand hilft. Den Code den du gepostet hast kann man auch nicht lokal testen. Rechne mal nach, was dabei rauskommt, wenn du für $seite die Zahlen -1 bis 10 einsetzen lässt (Einträge pro Seite kann ja erstmal fix bleiben). Danach lässt du dir die Ergebnisse ausgeben
Code:while( $rows[] = mysql_fetch_obeject( $ergebnis ) ){} print_r( $rows );
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)