Ankündigung

Einklappen
Keine Ankündigung bisher.

Blätterfunktion für MySQL, Problem: Unregelmäßige ID's

Einklappen

Neue Werbung 2019

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

  • Blätterfunktion für MySQL, Problem: Unregelmäßige ID's

    Hallo,

    ich hab mir n kleinen PHP script geschrieben, welcher alle Einträge aus einer DB in einer Tabelle anzeigt:

    PHP-Code:
    echo '            <div class="table">
                    <img src="img/bg-th-left.gif" width="8" height="7" alt="" class="left" />
                    <img src="img/bg-th-right.gif" width="7" height="7" alt="" class="right" />
                    <table class="listing" cellpadding="0" cellspacing="0">
                        <tr>
                            <th class="first" width="177">ID</th>
                            <th>Vorname</th>
                            <th>Nachnahme</th>
                            <th>Email</th>
                            <th>Registrierdatum</th>
                            <th>Geburtsdatum</th>
                            <th>Löschen</th>
                        </tr>'
    ;
                        
    $query 'SELECT * FROM Users ORDER BY id';
    $result mysql_query($query);
    while (
    $row mysql_fetch_array($result))
    {
     echo 
    '
                        <tr>
                            <td class="first style2">'
    .$row[0].'</td>
                            <td>'
    .$row[vorname].'</td>
                            <td>'
    .$row[nachname].'</td>
                            <td>'
    .$row[email].'</td>
                            <td>'
    .$row[registerdatum].'</td>
                            <td>'
    .$row[geburtsdatum].'</td>
                            <td class="last"><a href="./user_delete.php?id='
    .$row[id].'"><img src="img/hr.gif" width="16" height="16" alt="" /></a></td>
                        </tr>'
    ;
                        }
                        echo 
    '                </table>
                </div>'

    Problem ist nun: Mal angenommen es sind 1000 Einträge in der DB, werden auch 1000 Zeilen angelegt. Das ist sehr hinderlich, und sehr Userfeindlich

    Daher wäre ne Blätterfunktion nicht shclecht, Problem ist aber:

    Die ID's sind nicht nach dem Format 1,2,3,4,5 o.ä., was man berechnen könnte, sondern zufällige, 6stellige zahlen, z.B. 109202, 902832, 773629 usw.

    Wie krieg ichs nun hin, dass ich nur 20 Einträge pro seite habe und über nen Dropdownmenü die Seiten auswählen kann?

    Lg


  • #2
    Benutz einfach eine externe Blätterfunktion / Klasse.

    Dann brauchst du dich nicht mehr drum kümmern

    Kommentar


    • #3
      Hab schon gesucht, aber problem ist dass die alle von ner ID folge ala 1,2,3,4,5 ausgehen, nicht so wie meine aufgebaut ist... Das ist ja das Problem

      Kommentar


      • #4
        Zitat von DJ Re-DarK Beitrag anzeigen
        Problem ist aber:

        Die ID's sind nicht nach dem Format 1,2,3,4,5 o.ä., was man berechnen könnte, sondern zufällige, 6stellige zahlen, z.B. 109202, 902832, 773629 usw.
        Wenn du dich ein wenig informiert hättest, dann wüsstest du bereits, dass eine ID einzig und allein zur Identifikation eines Datensatzes eingesetzt werden sollte, und für nichts anderes - also insb. auch nicht dazu, eine Sortierung herzustellen.

        Wie krieg ichs nun hin, dass ich nur 20 Einträge pro seite habe und über nen Dropdownmenü die Seiten auswählen kann?
        Definiere ein geeignetes Sortierkriterium - bspw. den (eindeutigen) Zeitpunkt, zu dem ein Datensatz eingetragen wurde.

        Kommentar


        • #5
          Nein, die machen ja meißt einen eigenen Query und ermitteln die Daten

          Kommentar


          • #6
            PHP-Code:
            $start 0;
            if(isset(
            $_GET['start']) && !empty($_GET['start'])) {
                
            $start intval($_GET['start']);
            }
            $query 'SELECT * FROM Users ORDER BY id limit '.$start.', 20'
            www.example.com/index.php?start=0
            www.example.com/index.php?start=20
            www.example.com/index.php?start=40

            etc.
            "Nein, nein das Beste an Zombieland ist: Keine Facebook-Status-Updates mehr.
            'Rob Curtis freut sich schon auf Freitag', wen interessierts?"

            Kommentar


            • #7
              Lass das order by einfach weg und nimm nur das limit by. Du könntest auch eine Datumsspalte hinzunehmen, die beim Erstellen autmatisch gefüllt wird. Nach der könntest Du sortieren.

              Kommentar


              • #8
                Man kann das ORDER BY auch drin lassen, nur müsste das dann bei wirklich großen Datenmengen temp tables benutzen was ein wenig uncool ist. Aber an sich sollte es kein Problem sein, erst zu sortieren und dann zu limitieren.

                Aber eigentlich ist das kein Datenbank Problem sondern ein PHP Problem, das ganze nennt sich auch Pagination und es gibt dafür bereits unzählige fertige Klassen.
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Zitat von xm22 Beitrag anzeigen
                  Lass das order by einfach weg und nimm nur das limit by.
                  Das wäre Quatsch, weil du dann jedes Mal andere Daten bekommen kannst.

                  Kommentar


                  • #10
                    PHP-Code:
                    $start 0;
                    if(isset(
                    $_GET['start']) && !empty($_GET['start'])) {
                        
                    $start intval($_GET['start']);
                    }
                    $query 'SELECT * FROM Users ORDER BY id limit '.$start.', 20'
                    Ich werd mal n bischen mit den Vorgeschlegenen Lösungen rumprobieren, vorallem mit dieser, danke

                    Kommentar


                    • #11
                      ok, problem ist bei dem beispiel nun, dass er wenn ich ne ID angebe, wo er starten soll, garnichts mehr anzeigt

                      Kommentar


                      • #12
                        mit LIMIT gibst du die anzahl der datensätze an, nicht deren ID !!

                        also limit 20 heißt 20 datensätze-..


                        oder was auch immer deine farge war,, präziser werden hilft ungemein ^^

                        Kommentar

                        Lädt...
                        X