Jenny: bestimmte Anzahl Einträge pro Seite....

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

  1. 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

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. 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 :(

      1. 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

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. 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.

          1. $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

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            ->Alles ist gut wenn es aus Schokolade ist
            1. 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

              1. 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

                1. 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

                  --
                  DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                  ->Alles ist gut wenn es aus Schokolade ist
                  1. 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  ;)

                    1. 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

                      --
                      DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
                      ->Alles ist gut wenn es aus Schokolade ist
  2. ich würde es so machen ... also

    $var1 = $limit-$limit+1
    $var2 = $total-$var1

    if $start < $var2

    mfg Till

  3. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday
  4. 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

    --
    bythewaythewebsuxgoofflineandenjoytheday