Ausgabe verschluckt ersten Datensatz

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

  • Ausgabe verschluckt ersten Datensatz

    Ich habe folgendes Problem:

    Irgendwie verschluckt mir diese Ausgabe irgendwo den ersten Datensatz.

    Es ist der aller erste Datensatz der irgendwo verschwindet und der ändert sich je nach dem wie ich Standartsortiern lasse.

    Die Suchfunktion im Forum liefert zwar einige Ergebnisse, jedoch helfen sie mir nicht weiter, bzw kann ich es nicht so einbauen dass es funktioniert.

    Dazu hab ich noch die Fragen:
    Wie baue ich da ab einfachsten eine Suchfunktion ein?
    Und Schafft man einfach eine gute Sortierfunktion einzubauen?
    Wie es geht ohne dieses "blaettern Script" weiss ich, aber nicht wie ich es trotz dem skript tadellos zum laufen bringe.

    PHP-Code:
    <?php
    #ich komm nicht weiter, da ich keine ahnung habe 
    #wie ich sortieren und suchen so einfüge das der rest weiterhin geht, 
    #wo glaub ich zu wissen, & wie ca auch, aber nicht  so dass der rest weiterhin geht

    $link mysql_connect('localhost'meindbuser*g*, 'meinpw*g*');
    $dbname"meinedb*g*";

    if (!
    $step $_REQUEST['step'])
      
    $step10

    $res mysql_db_query($dbname,"select count(*) from artikel"$link)
    or die(
    mysql_error().'<hr />'.$res.'<hr />');
    list(
    $anz) = mysql_fetch_row($res);

    $page max(1,
      
    min($maxpageceil($anz/$step), $_REQUEST['page'])
    );

    $start = ($page-1)*$step+1;
    $ende min($page*$step$anz);

    $linestr "$start bis $ende von $anz";

    $pagestr "Seiten ($maxpage): ". (($page>1)
      ? 
    '<a href="?page='. ($page-1). '">&lt;&lt;<a>'
      
    ''
    );
    for (
    $i=1$i<=$maxpage$i++)
      
    $pagestr .= ($i==$page
        
    " <b>[ $i ]</b>"
        
    ' <a href="?page='$i'">'$i'</a>'
      
    );
    $pagestr .= ($ende == $anz
      
    ''
      
    ' <a href="?page='. ($page+1). '">&gt;&gt;<a>'
    );

    echo 
    "Zeilen $linestr<br>$pagestr<hr>";
    ?>
    <table WIDTH="100%" BORDER="1">
      <tr>
        <td WIDTH="10%"> Artikelname</td>
       </tr>
    <?php
    #nach from artikel ein ORDER BY sortiert, 
    #wie dies aber mit einer variable machen und die wieder auslesen lasen?
    #ein WHERE artikelname(z.B.) like %suchbegriff% nach from artikel aber vor sortierung
    #wie dies aber mit einer variable machen und die wieder auslesen lasen?

    $res mysql_db_query($dbname,"select * from artikel limit $start, "
      
    . ($ende-$start+1), $link)
    or die(
    mysql_error().'<hr />'.$res.'<hr />');
    while (
    $row=mysql_fetch_array($res,MYSQL_ASSOC))
     {
    ?>
        <TR>
          <TD width="10%">
            <?php echo $row["artikelname"?>
          </TD>
       </TR>
    <?php ?>
    </TABLE>
    MfG CH-King, ich danke schon mal im vornherein für antworten

  • #2
    Re: Ausgabe verschluckt ersten Datensatz

    Original geschrieben von CH-King
    list($anz) = mysql_fetch_row($res);
    Was meinst du macht das?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      soviel ich weiss gibt mir dies eine Zahl die der anzahl Datensätze entspricht wieder.

      d.h. Wenn ich den Code so umstelle dass er erst die Daten schreibt und dann die Anzahl ausliest würde es funktionieren?

      Kommentar


      • #4
        Original geschrieben von CH-King
        soviel ich weiss gibt mir dies eine Zahl die der anzahl Datensätze entspricht wieder.
        that's quark, my dear.

        lies es nach: http://www.php.net/manual/de/functio...-fetch-row.php
        du meinst vermutlich mysql_num_rows()
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          @happy, @wahsaga, so wie ich sehe hat

          list($anz) = mysql_fetch_row($res);

          nichts mit dem 2. mysql_db_query zu tun.

          @CH-King, wie hast du denn festgestellt, dass der 1. Datensatz fehlt?

          Kommentar


          • #6
            Re: Ausgabe verschluckt ersten Datensatz

            Ne das haut schon hin. Die erste Query ist ein COUNT(*), mysql_num_rows() würde da 1 liefern, also was falsches.
            PHP-Code:
            <?php
            $res 
            mysql_db_query($dbname,"select count(*) from artikel"$link)
            or die(
            mysql_error().'<hr />'.$res.'<hr />');
            list(
            $anz) = mysql_fetch_row($res);
            // ...
            $res mysql_db_query($dbname,"select * from artikel limit $start, "
              
            . ($ende-$start+1), $link)
            or die(
            mysql_error().'<hr />'.$res.'<hr />');
            while (
            $row=mysql_fetch_array($res,MYSQL_ASSOC))
             {
                
            // ...
             
            }
            Die zweite Query sollte aber ein ORDER BY haben, sonst ist das Ergebnis durch LIMIT unbestimmt.
            Leider verstehe ich den Kommentar darüber nicht.
            EDIT:
            zu langsam
            Zuletzt geändert von onemorenerd; 15.08.2005, 14:03.

            Kommentar


            • #7
              Original geschrieben von asp2php
              @CH-King, wie hast du denn festgestellt, dass der 1. Datensatz fehlt?
              ich weiss ja was ich aulesen will & wenn bei Order BY etwas anderes angebe als standard, dann verschwindert der datensatz der eigentlich als erstes angezeigt werden sollte, ich kann also beeinflussen welcher datenatz verschwindet, jedoch ist es immer derjenige der an erster stelle kommen sollte

              Original geschrieben von onemorenerd
              Die zweite Query sollte aber ein ORDER BY haben, sonst ist das Ergebnis durch LIMIT unbestimmt.
              Leider verstehe ich den Kommentar darüber nicht.
              ob ich dort ein ORDER BY habe oder nicht ergibt die selbe Ausgabe, habe es nun aber mal eingefügt

              der Kommentar ist nur: Das was ich weiss wie ich sortiere/ suche, ich jedoch überfordert bin das so einzubauen dass das Script dann weiterhin läuft
              Zuletzt geändert von CH-King; 15.08.2005, 14:15.

              Kommentar


              • #8
                Kann es sein, dass $start bei dir nicht kleiner als 1 werden kann?

                Sollte dem so sein, musst du da nachbessern, denn LIMIT 1, 5 liefert dir nicht die ersten 5 Datensätze, sondern die Datensätze 2 - 6...
                die ersten 5 würdest du mit LIMIT 0, 5 bekommen
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Die Geänderten zeilen
                  PHP-Code:
                  $start = ($page-1)*$step
                  #...
                  $start1 = ($page-1)*$step+1
                  $linestr "$start1 bis $ende von $anz";
                  #...
                  $res mysql_db_query($dbname,"select * from artikel ORDER BY id limit $start, "
                    
                  . ($ende-$start), $link
                  $start konnte ja nicht unter 1 fallen da punkt vor strich
                  $start = ($page-1)*$step+1;

                  das sollte nun der ersteller des codes von dem ich das abgeleitet habe auch ändern

                  nun ist nur noch das andere "Problem" wie baue ich eine Suchfunktion und eine Sortierfunktion ein

                  Kommentar

                  Lädt...
                  X