Problem mit limit

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit limit

    hallo,
    habe mal wieder ein problem, diese mal mit "limit". ohne limit-begrenzung spuckt er mir alle datensätze aus, wenn ich sie auf eine bestimmte menge begrenze auch noch. sobald ich allerdings eine zweite variable/zahl einsetze, welche den anfangswert bestimmt, bekomme ich nichts mehr ausgegeben. wenn ihr lust habt, könnt ihr mir gerne auch den rest des codes zerreißen.

    PHP-Code:
    include("dbconnect.php");

      
    $pro_seite 30;
      if (!isset(
    $anzahl))
      {
      
    $anzahl 0;
      }
      
    $anzahl_test $anzahl $pro_seite;
      
    $anzahl_minus $anzahl $pro_seite;
      
    $anzahl_plus $anzahl $pro_seite;

      
    $cat $HTTP_GET_VARS["cat"];

      if(
    $cat==all)
      {
      
    $abfrage "SELECT id, title FROM archiv ORDER BY id DESC limit ".$pro_seite.", ".$anzahl."";
      }

    <!-- 
    an dieser Stelle folgen die andern kategorien -->

      
    $ergebnis mysql_query($abfrage);

      
    $n mysql_num_rows($ergebnis);

      while(
    $row mysql_fetch_object($ergebnis))

        {
        echo 
    '<tr><td bgcolor="#ffffcc" colspan="2">'.$row->title.'&nbsp;<a href="archivcomplete.php
    ?id='
    .$row->id.'" class="teaser">...lesen</a><br>';
        }

      echo 
    '</td></tr><tr>';

      if (
    $n>0)
      {
      echo
    '<td bgcolor="#990000" align="left" class="index"><a href="archiv.php?cat='.$cat.'
    ?anzahl='
    .$anzahl_minus.'" class="teaser">Zurück</a></td> ';
      }
      if (
    $anzahl_test<$n)
      {
      echo
    '<td bgcolor="#990000" align="right" class="index"><a href="archiv.php?cat='.$cat.'
    ?anzahl='
    .$anzahl_plus.'" class="teaser">Weiter</a></td>';
      } 

  • #2
    Dein code ist eher uninteressant.

    Wo ist die ausgabe der Query und dein erfahrungsbericht nachdem du die query in myadmin getestet hast???

    Falsches Forum! *verschieb*

    Kommentar


    • #3
      fehler gefunden

      ich habe es einfach falschrum gemacht. habe startwert und grenze verwechselt. es waren allerings zig bugs drin, welche ich mittlerweile weitestgehend ausgebügelt habe. allerdings will es noch nicht ganz so, wie ich es gerne hätte. ist jetzt vermutlich off-topic. kurze zwischenfrage an die mods: ist es jetzt sinnvoller, im thread zu bleiben, oder einen neuen im developer-forum zu eröffnen?

      okay, hier die codeschnipsel, inklusive erklärung und meinem problem.


      zuerst wird die datanbankverbindung aufgebaut, die variablen übergeben und ausgezählt, wie viele einträge in der entsprechenden kategorie zu finden sind.

      PHP-Code:
      include("dbconnect.php");

        
      $cat $HTTP_GET_VARS["cat"];
        
      $anzahl $HTTP_GET_VARS["start"];

        if(
      $cat==all)
        {
        
      $count "SELECT id FROM archiv";
        
      $number mysql_query($count);
        
      $n mysql_num_rows($number);
        }

        else
        {
        
      $count "SELECT id FROM archiv WHERE cat = '".$cat."'";
        
      $number mysql_query($count);
        
      $n mysql_num_rows($number);
        } 
      nun folgt die angabe, wie viele spalten pro seite ausgegeben werden sollen und bei welchem wert die ausgabe beginnt.

      PHP-Code:
        $pro_seite 2;
        if (!isset(
      $anzahl))
        {
        
      $anzahl 0;
        }
        
      $anzahl_minus $anzahl $pro_seite;
        
      $anzahl_plus $anzahl $pro_seite
      anschließend werden die verschiedenen kategorien ausgelesen

      PHP-Code:
        if($cat==all)
        {
        
      $abfrage "SELECT id, title FROM archiv ORDER BY id DESC limit ".$anzahl.", ".$pro_seite."";
        }
        elseif(
      $cat== .... 
      das ergebnis wird gesammelt und ausgegeben

      PHP-Code:
      $ergebnis mysql_query($abfrage);

        while(
      $row mysql_fetch_object($ergebnis))

          {
          echo 
      '<tr><td bgcolor="#ffffcc" colspan="2">'.$row->title.'&nbsp;<a href="archivcomplete.php
      ?id='
      .$row->id.'" class="teaser">...lesen</a><br>';
          } 
      abschließend wird nachgegangen, ob noch einträge folgen, falls ja, wird ein link zu den nächsten $pro_seite einträgen ausgegeben

      PHP-Code:
      if ($anzahl_plus<$n)
        {
        echo
      '<td bgcolor="#990000" align="right" class="index"><a href="archiv_old.php?cat='.$cat.'
      ?start='
      .$anzahl_plus.'" class="teaser">Weiter</a></td>';
        } 
      das selbe dann noch in die andere richtung:

      PHP-Code:
        if ($anzahl>0)
        {
        echo
      '<td bgcolor="#990000" align="left" class="index"><a href="archiv_old.php?cat='.$cat.'
      ?start='
      .$anzahl_minus.'" class="teaser">Zurück</a></td>';
        } 
      Problem: Die Ausgabe funktioniert nur, wenn $anzahl per !isset gesetzt wird, sobald ich die variable per get fülle, wird mein mysql_fetch_object nicht mehr ausgeführt.

      Kommentar


      • #4
        bleib ruhig im thread, ansonsten wäre dieser hier überflüssig.

        wenn $anzahl per !isset gesetzt wird,
        und ich dachte immer isset prüft ob eine variable gesetzt ist. wie setzt du jetzt damit variablen??

        Problem: Die Ausgabe funktioniert nur, wenn $anzahl per !isset gesetzt wird, sobald ich die variable per get fülle, wird mein mysql_fetch_object nicht mehr ausgeführt
        nett, dass du alles so ausführlich beschrieben hast. aber überflüssig!!! ein paar vernünftige testausgaben wären hier wohl viel angebrachter!

        solltest du dir so langsam mal angewöhnen

        Kommentar


        • #5
          ist "all" eine konstante oder eher doch ein string?
          bist du dir sicher, dass $_GET nicht besser, als $HTTP_GET_VARS wäre?
          wenn $anzahl gleich 0 ist, ist $anzahl_minus = -10 oder so. ist es in ordnung?

          Kommentar


          • #6
            ist "all" eine konstante oder eher doch ein string?
            bist du dir sicher, dass $_GET nicht besser, als $HTTP_GET_VARS wäre?
            mag sein, dass es sich dabei um keinen sauberen code handelt, zumindest klappt er. auch in anderen anwendungen.

            wenn $anzahl gleich 0 ist, ist $anzahl_minus = -10 oder so. ist es in ordnung?
            da ich bislang noch nicht soweit bin, dass ich überhaupt ein "zurück" ausgegeben bekommen würde, habe ich mich damit noch nicht so genau auseinandergesetzt.

            und ich dachte immer isset prüft ob eine variable gesetzt ist. wie setzt du jetzt damit variablen??
            ja, isset prüft, und wenn die variable nicht gesetzt ist, wird sie gesetzt. so war es gemeint.

            ein paar vernünftige testausgaben wären hier wohl viel angebrachter!
            und was für welche? ich dachte, eine problembeschreibung könnte mein problem veranschaulichen.

            Kommentar


            • #7
              man ey, alle wollen programmierer sein, haben aber nicht ansatzweise ne idee, was debugging ist! Was soll das? Dann lasst es halt. Entweder ganz oder gar nicht!

              Zu dir, deiner beschreibung habe ich entnommen, das da irgend ne variable nicht den richtigen wert bekommt. TESTAUSGABE!!!

              Kommentar


              • #8
                man ey, alle wollen programmierer sein
                ich für meinen teil habe nicht den anspruch, programmierer zu sein. ich mache ein bisschen learning-by-doing php und html. ganz offensichtlich haben die super-nerds und endprofessionellen nutzer wie du kein interesse daran, so nieten wie mir zu helfen, den scheiß zu verstehen. dann schreib doch als bedingung gleich, dass du nur leuten hilfst, die es mindestens genausogut wie du können. manoman.

                testausgabe: anzahl ist immer 0. das geht ja auch aus der problembeschreibung hervor. aber was solls.
                Zuletzt geändert von niete; 19.12.2004, 20:08.

                Kommentar


                • #9
                  ja, selbstmitleid. vielleicht hilft dir jemand anders. ich bin raus aus der sache.

                  PS: Damit es nicht zu missverständnissen kommt: Ich hab nichts mit den Betreibern zu tun. Was ich mache, passiert in Eigenverantwortung.

                  Kommentar


                  • #10
                    ja, selbstmitleid
                    nö. ablehnung gegen arrogante typen wie dich.

                    PS: Damit es nicht zu missverständnissen kommt: Ich hab nichts mit den Betreibern zu tun. Was ich mache, passiert in Eigenverantwortung.
                    ist korrigiert. entschuldige, gott.

                    Kommentar


                    • #11
                      wenn deine $anzahl immer 0 ist, heisst es, sie wird auf 0 gesetzt (von allein kriegt man nur pickel). das hast du in deinen if(!isset... statements zu verantworten - nicht wahr? d.h., was nicht funktioniert, ist die richtige parameterübergabe.

                      Kommentar


                      • #12
                        hmm,

                        penizillin sagt es ja gerade ..

                        setzt mal error_reporting auf E_ALL.
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          danke für die hilfe. man ersetze ein ? durch ein & und der ganze spaß funktioniert. und dafür so ein aufstand. entschuldigt den datenmüll.

                          Kommentar

                          Lädt...
                          X