bestimmte Anzahl Einträge pro Seite....
Jenny
- php
hallo,
ich hab ein Problem undzwar will ich bei einem script nur eine bestimmte anzahl von datenszäten ausgeben, danach soll er immer einen weiter button oder so kommen... und halt zurück...
ich habe folgendes gemacht/probiert.
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 5;
$table = "forumbeitrag";
$resultID = @mysql_query("SELECT COUNT(postid) FROM ".$table);
$total = @mysql_result($resultID,0);
$start = ($start >= $total) ? $total - $limit : $start;
$query = "SELECT * FROM ".$table ." where forumid='$forumid' and threadid='$threadid' order by postid desc LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);
.
.
.
while ($row = mysql_fetch_array($resultID))
{
//Ausgabe
}
if ($start > 0)
{
$newStart = ($start - $limit < 0) ? 0 : ($start-$limit);
echo "<a href=posts.php?start=$newStart&threadid=$row[threadid]&forumid=$row[forumid]>zurück >></a>";
}
if ($start + $limit < $total)
{
$newStart = $start + $limit;
echo "<a href=posts.php?start=$newStart&threadid=$row[threadid]&forumid=$row[forumid]>vor >></a>";
}
bei dem script gibt er zwar das aus was er soll .. doch der link weiter existiert auch immer naja und im link stehen für start zwar die werte aber threadid und forumid nicht...
In der Ausgabe stehen sie aber richtig .. da hab ich sie für jeden datensatz ausgegeben und stimmen... nur in dem link steht immer
threadid=&forumid=
kann mir da wer helfen??
tnx
jenny
Hallo Jenny,
»»href=posts.php?start=$newStart&threadid=$row[threadid]&forumid=$row[forumid]>zurück »»>></a>";
»»href=posts.php?start=$newStart&threadid=$row[threadid]&forumid=$row[forumid]>vor »»>></a>";
threadid=&forumid=
Es muss nicht daran liegen, trotzdem gehören AFAIK um werte in assoziativen arrays hochkommas oder Anführungszeichen
also: $row["threadid"]
ciao
romy
Parse error: parse error, expecting T\_STRING' or T_VARIABLE' or `T_NUM_STRING'
kommt dann... hab auch schon mit $row['forumid'] probiert geht nix :(
sorry hab ich nicht gleich gesehen, die Reaktion ist ja logisch, da Du den link mit einem echo ausgibst...
Bau den String richtig zusammen
a la
echo "<a href=posts.php?start=$newStart&threadid=".$row["threadid"]."&forumid=".$row["forumid"].">vor >></a>";
so hoffentlich hab ich nichts übersehen
ciao
romy
tnx nu ist kein error mehr aber immer noch das problem
-> posts.php?start=5&threadid=&forumid=
so sieht der linkt aus... vorallem hat er nur 5 Einträge zur Ausgabe also dürfte der linkt weiter gar nicht erscheinen aber er tut es :( und dann mit dem oben geschriebenen link und variablen inhalten.
$start = (isset($start)) ? abs((int)$start) : 0;
$limit = 5;
$table = "forumbeitrag";
$resultID = @mysql_query("SELECT COUNT(postid) FROM ".$table);
$total = @mysql_result($resultID,0);
$start = ($start >= $total) ? $total - $limit : $start;
$query = "SELECT * FROM ".$table ." where forumid='$forumid' and
threadid='$threadid' order by postid desc LIMIT ".$start.",".$limit;
$resultID = @mysql_query($query);
mach bitte mal echo $total; echo $start;
$total kann eigentlich nicht 5 sein, da wie Du schon sagtest sonst der link gar nicht angezeigt würde
while ($row = mysql_fetch_array($resultID))
{
//Ausgabe
}
Hier in dieser Schleife, generierst du row, aber wenn Du aus der schleife rauskommst, ist row an einer stelle, wo nichts mehr steht, da es ja abgebrochen hat und somit ins Leere zeigt, deswegen steht nichts drin in den row-Variablen.
Wozu brauchst Du die eigentlich? Dann wird es vielleicht klarer!? ;)
ciao
romy
mit row geb ich die ganzen datensätze aus ... und unten brauch ichs ja um das seiten blättern möglich zu machen... weiß sonst nicht wie ichs anders machen soll.
das ganze ist ein Forum, und das ist die post ausgabe. er bekommt die thread und forum - id mit dem link vorher weitergegeben ... mhh und in dem link nimmt er sie nicht... nur in dem anderen script (thread) hab ich auch im link nicht mit array gearbeitet sondern mit normaler variable.. nur hier geht das soweit ja nicht !??!
*durcheinander nix mehr logisch* ;)
Jenny
Ok erstes Problem hab ich nun gelöst ;)
Also er zeigt die Pfeile mit weiter an und auch richtig gesetzt im link mit Werten.
Aber ich frage mich warum er weiter link setzt obwohl eh nur 4 einträge oder so sind?? also noch net Grenze... ??
ich drück weiter und start is 10 dann is kein eintrag mehr aber weiter auf start 15 und zurück auf start 10 usw..??
aber Tnx schon mal das der erste fehler weg is *G*
Jenny
Hi Jenny
Hast Du den Ausdruck $start-$limit mal in Klammern gesetzt
a la if(($start-$limit) > $total)
wenn das nicht hilt mach mal echo $start-$limit, mal sehen, was da für Mist rauskommt ;)
irgendworan muss es ja liegen, oder :)
ciao
Hmm
erster Wert bei start-limit : 0-2 dann 2-2 ; 4-2; 6-2; usw
hab nun maximal 2 einträge pro seite gemacht ;)
Hi Jenny,
erster Wert bei start-limit : 0-2 dann 2-2 ; 4-2; 6-2; usw
hab nun maximal 2 einträge pro seite gemacht ;)
funktioniert es da jetzt?
Eigentlich wollte ich wissen, was php daraus macht
also: echo ($start-$limit);
in if(($start-$limit) < $total) darf nicht reingegangen werden, wenn $total = 4 ist und Zustand 6-2 eintritt. Also muss irgendetwas anderes rauskommen.
Maximal, dass Du hier ein Zaunslattenproblem hast ;)
d.h er den Wert erst hochsetzt, wenn Du schon in der Schleife bist, also um einen Durchlauf zu spät sozusagen.
wie sieht es aus?
romy
ich würde es so machen ... also
$var1 = $limit-$limit+1
$var2 = $total-$var1
if $start < $var2
mfg Till
Huhu Jenny
echo "<a href=posts.php?start=$newStart&threadid=$row[threadid]&forumid=$row[forumid]>vor >></a>";
um Array-Elemente auszugeben funktioniert obige Schreibweise nicht.
Du musst sie in geschweifte Klammern setzen, oder benutze z.B. folgende
Schreibweise.
echo "<a href=posts.php?start=$newStart&threadid=".$row['threadid']."&forumid=".$row['forumid'].">vor >></a>";
da müssen aber noch die '&'s richtig codiert werden.
IMHO übersichlicher wird es z.B. so
$link_tpl = '<a href="posts.php?start=%s&threadid=%s&forumid=%s">vor >></a>';
printf ($link_tpl, $newStart, $row['threadid'], $row['forumid']);
Viele Grüße
lulu
Huhu Jenny
ich habe noch einen gröberen Schnitzer entdeckt
while ($row = mysql_fetch_array($resultID))
{//Ausgabe
}
Das "while" arbeitet solange bis mysql_fetch_array false zurückliefert.
D.h. $row ist im weiteren Programmablauf false.
Daher sind natürlich auch sämtliche $row['irgendeinindex'] nicht definiert.
Viele Grüße
lulu