php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Wo steckt der fehler ?


 
Mundgeruch
30-06-2005, 02:15 
 
Nabend,
sitze schon einige Stunden an einer Blätterfunktion und es funktioniert nun auch einigermaßen, wenn da nicht ein fehler wäre der mir die Einträge klaut.

Ich habe in meiner Datenbank 13 Einträge und ich will pro Seite nur 6 stk. ausgeben. Nur ist das Problem wenn ich ihm sage $maxproseite = 6; bekomme ich auf der ersten Seite 4 Einträge und auf der zweiten erst 6 ...

$sql = ("SELECT * FROM forum_topic");
$eintrage = mysql_num_rows(mysql_query($sql));
$maxproseite = 6;
$seiten = $eintrage / $maxproseite;

$abeintrag = $_GET['page'] * $maxproseite - $maxproseite;
$sql = "SELECT * FROM `forum_topic` ORDER BY `erstellt` DESC LIMIT ".$abeintrag.",".$maxproseite.";";

for($s = 0; $s < $seiten; $s++)

$result = mysql_query($sql);
while($row = mysql_fetch_row($result))
{
bla bla


Weiss jemand wo da der fehler liegt, vielleicht ist es einfach auch nur wieder zu spät :(

 
derHund
30-06-2005, 08:29 
 
- gibt die zweite query das zurück, was du vermutest?
- bist du dir sicher, daß die for-schleife so aussehen soll? sieht irgendwie so sinnlos aus. wozu ist die?
- willst du wirklich ein forum programmieren, wenn du schon am blättern (bzw. - viel schlimmer - am debuggen) scheiterst?

 
Mundgeruch
30-06-2005, 09:18 
 
Naja ein Forum zu schreiben ist ja das einfachste was es gibt, Daten in die Datenbank schreiben und nur wieder rausholen und auswerten. Es ist noch nie ein Meister vom Himmel gefallen und da ich noch nie etwas Blättern musste, fällt es mir auch wesentlich schwerer das hinzubekommen :)

Es Funktioniert eigentlich alles auch das Blättern, aber irgendwie ist da was faul ....

$sql = "SELECT * FROM `forum_topic` ORDER BY `erstellt` DESC LIMIT 0,".$maxproseite.";";

Wenn ich mir von 0 bis 6 alles anzeigen lassen will, bekomme ich nur 4 Einträge angezeigt.

Die for Schleife zählt nur die Seiten die er mir unten anzeigen soll, sieht zwar doof da oben aus aber das funktioniert ohne Probleme. Die Seiten sind auch nicht das Problem die bekomme ich ja angezeigt nur die Einträge stimmen nicht wirklich.

 
RanzigeMilch
30-06-2005, 09:42 
 
Original geschrieben von Mundgeruch
Naja ein Forum zu schreiben ist ja das einfachste was es gibt, Daten in die Datenbank schreiben und nur wieder rausholen und auswerten.

anscheinend nicht...


Wenn ich mir von 0 bis 6 alles anzeigen lassen will, bekomme ich nur 4 Einträge angezeigt.



also so wie dein script da aussieht wirst du noch mehr probleme bekommen als blos die einträge
ich wette du bekommst bei 13 einträgen keine 3 seiten
und wenn doch dann nur weil php versucht einen fehler von dir auszubügeln was dann auch die 4 einträge auf der ersten seite erklären würde
DENN 13 / 6 ergibt keine ganze zahl und wenn du keinen genauen befehl gibst lässts einfach das nach dem komma wegfallen...sprich wenn 3 nicht erreicht wird gibbet auch keine 3 seiten...
daher würds auch ganz gut sein wenn du mal den script teil der ausgabe präsentieren würdest

 
Mundgeruch
30-06-2005, 11:17 
 
Guguck,

Original geschrieben von Mundgeruch
Naja ein Forum zu schreiben ist ja das einfachste was es gibt, Daten in die Datenbank schreiben und nur wieder rausholen und auswerten.
--------------------------------------------------------------------------------



anscheinend nicht...

Seitenzahlen haben wenig mit der Ausgabe zu tun ;) Kann auch ohne Seitenzahlen leben, aber das schaut unprofessionell aus.


Aber ich bekomme 3 Seiten angezeigt, aber nur durch die for Schleife :)

DENN 13 / 6 ergibt keine ganze zahl und wenn du keinen genauen befehl gibst lässts einfach das nach dem komma wegfallen
Japp da wird auch mein Problem liegen, wenn ich feierabend habe schau ich mir das ganze nochmal an.

War gestern auch einfach zu spät und ...

 
RanzigeMilch
30-06-2005, 11:38 
 
öhm eine seitenzahl ist eine ausgabe....
und forum ohne seiten zahl ist für mich kein forum sondern ne baustelle
daher s.o. ...

irgendwie seh ich in dem script aber keine schleife
ich dachte immer schleifen haben eine Bedingung in ()
und dann das zu wiederholende in {}
wo sind deine {}s abgebliebn?:confused:

wiegesagt der teil zur ausgabe wär ma ganz hilfreich...

 
Mundgeruch
30-06-2005, 12:01 
 
Jaja hast recht :)

Bis 18 Uhr muss ich noch arbeiten, danach werde ich mich weiter um das Problem kümmern und ggf. euch weiter nerven :p

 
RanzigeMilch
30-06-2005, 12:56 
 
hihi
dann sitz ich aber net mehr im büro:p

 
Mundgeruch
30-06-2005, 21:33 
 
Hast du es gut Surfen und nebenher arbeiten, dazu finde ich leider kaum Zeit. Bin aber nun zuhause und bastel seit 18 Uhr an dem Blättern und bin etwas weiter aber da stimmt noch immer etwas nicht.

$sql = ("SELECT * FROM forum_topic WHERE topic_id = '1'");
$eintrage = mysql_num_rows(mysql_query($sql));
$maxproseite = 7;
$seiten = $eintrage / $maxproseite;
$seiten = ceil($seiten);

$abeintrag = $_GET['page'] * $maxproseite;
echo " $abeintrag / $maxproseite";
$sql = "SELECT * FROM `forum_topic` ORDER BY `erstellt` DESC LIMIT ".$abeintrag.",".$maxproseite.";";

$result = mysql_query($sql);
while($row = mysql_fetch_row($result))
{
if ($row[1] == "1") #damit er nur die Foren der ID 1 rausholt
{
bla bla

Die Seitenzahl stimmt immer, ich habe nun 13 einträge und diese werden mir als Seitenzahl korrekt angezeigt. Wenn ich das Forum öffne ist $_GET['page'] immer 1.

Bei echo " $abeintrag / $maxproseite";

bekomme ich auf der ersten Seite die ausgabe 7 / 7 und auf der zweiten Seite 14 / 7. Eigentlich müsste ich ja erste Seite 0 / 7 haben oder ist das egal?

So wie ich das versteh holt er sich die Einträge von 7 bis 14 ... aber ich habe auf der ersten Seite trotzdem 7 Einträge und auf Seite zwei 1 von insg. 13.

Versteh ich alles nicht wirklich :(

 
Mundgeruch
30-06-2005, 22:58 
 
So bin etwas weiter gekomme und einige Fragen haben sich doch noch geklärt.

Habe nun



$sql = "SELECT * FROM forum_topic WHERE topic_id = '1'";
$eintrage = mysql_num_rows(mysql_query($sql));
$maxproseite = 12;
$seiten = ceil($eintrage / $maxproseite);

$abeintrag = $_GET['page'] * $maxproseite - $maxproseite;

echo " $abeintrag / $maxproseite / $seiten / $eintrage";
$sql = mysql_query("SELECT * FROM `forum_topic` ORDER BY `erstellt` DESC LIMIT ".$abeintrag.",".$maxproseite."");

while($row = mysql_fetch_row($sql))
{
if ($row[1] == "1") #damit er nur die Foren der ID 1 rausholt
{
bla bla

Problem ist nun das ich zwar alle meine Einträge ausgelesen bekomme, aber von den 13 Einträgen in der Datenbanl werden mir nur 10 auf der ersten Seite angezeigt und auf der zweiten Seite die restlichen 3 obwohl

echo " $abeintrag / $maxproseite / $seiten ";

ausgabe

0 / 13 / 1

ist, also auslesen von 0 bis 13 ... weiss nur nicht wieso ?

 
onemorenerd
01-07-2005, 00:36 
 
Irgendwie paßt der Code nicht zu deiner Aussage/Ausgabe.

Das if() kannst du dir übrigens sparen, wenn ...

SELECT * FROM forum_topic WHERE topic_id = 1 ORDER BY erstellt DESC LIMIT $abeintrag,$maxproseite

 
Mundgeruch
01-07-2005, 00:54 
 
Moin,
joh stimmt die if ist überflüssig, das mit dem Code versteh ich ehrlich gesagt auch nicht. Ich bekomme alles richtig ausgegeben, aber dennoch ist da der wurm drin.

Habe mal $maxproseite = 3; gemacht so das eigentlich bei 13 Einträge 5 Seiten sind.

Diese 5 Seiten habe ich auch, aber

Seite 1 = 2 Einträge
Seite 2 = 2 Einträge
Seite 3 = 3 Einträge
Seite 4 = 3 Einträge
Seite 5 = 3 Einträge

macht zusammen zwar auch 13 Einträge aber die sind irgendwie komisch verteilt.

 
Mundgeruch
01-07-2005, 00:59 
 
Nachtrag: Mist es lag an der If Abfrage, die habe ich die ganze Zeit überlesen und vergessen zu löschen.

Blättern klappt nun einwandfrei, Danke :D


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:18 Uhr.