Sortieren auf mehrere Seiten

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

  • Sortieren auf mehrere Seiten

    Hi all

    Folgendes:

    Ich habe eine MySQL Datenbank die z.B. so aufgebaut ist:

    id | titel | datum | position
    =====================
    1 | abcd | 100205 | 234
    2 | bdca | 290305 | 135
    3 | dabc | 020405 | 435
    ... usw...
    35 | cdab | 260605 | 568

    Nun möchte ich, das er mir 10 Datensätze ausgibt, geordnet nach ID. Wenn man jetzt zum Beispiel die Ausgabe auf der Page nach Datum ordnen will, soll das auch auf den nachfolgenden Seiten gemacht werden. Also nicht dass das Script auf der nächsten Seite einfach 10 weitere Datensätze, geordnet nach ID, ausliest und sie anschliessend nach Datum ordnet.

    Weiss jemand was ich meine? Und vielleicht wie man sowas am besten umsetzt?

  • #2
    Re: Sortieren auf mehrere Seiten

    Das ist ne ganz normale blättern-Funktion mit nem zusätzlichen Get-Parameter, such mal im Forum!

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Ich glaub bei den Codeschnipsel gab es was zum Thema Seitenweise Blättern.
      mfg
      Günni


      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
      City-Tiger - Online durch die Straßen tigern...

      Kommentar


      • #4
        Re: Re: Sortieren auf mehrere Seiten

        Original geschrieben von ghostgambler
        Das ist ne ganz normale blättern-Funktion mit nem zusätzlichen Get-Parameter, such mal im Forum!
        nunja mag sein dass das nicht schwer ist aber ich komme einfach nicht dahinter. wenn wir zum beispiel die classe von Wurzel nehmen, müsste man bei der mysql abfrage noch 'order by' einfügen richtig? wenn ich das jetzt so machen würde, bestünde das problem dass er nur die 5 datensätze sortiert und nicht alle datensätze. kann man die mysql abfrage nicht irgendwie umschreiben damit er zuerst sortiert und dann die limite setzt? weil dann würde das ja auch ohne probleme funktionieren oder?

        PHP-Code:
        <?php
        $showPerPage 
        5// datensätze pro seite
        if(!isset($_GET['p']))
            
        $actPage 1;
        else
            
        $actPage $_GET['p'];

        // 1. query für die anzahl
        $sql 'SELECT COUNT(spalte) FROM tabelle';
        $res mysql_query($sql) or die(mysql_error());
        $anz mysql_fetch_array($res);
        $totalPages ceil($anz[0]/$showPerPage);

        // 2. query mit LIMIT um die richtigen datensätze  zu holen
        $sql 'SELECT spalte1, spalte2, spalteX 
                FROM tabelle 
                LIMIT '
        . (($actPage-1) * $showPerPage) .', '$showPerPage .'';
        $res mysql_query($sql) or die(mysql_error());
        while(
        $row mysql_fetch_array($resMYSQL_ASSOC))
        {
            echo 
        $row['spalte1'] .' ___ '$row['spalte2'] .' ___ '$row['spalteX'] .'<br />';
        }

        // pager
        $pa = &new pager();
        $pa->init();
        echo 
        $pa->getPager($totalPages$actPage$linkTo);
        ?>

        Kommentar


        • #5
          Re: Re: Re: Sortieren auf mehrere Seiten

          Original geschrieben von PHPbeginner
          wenn wir zum beispiel die classe von Wurzel nehmen, müsste man bei der mysql abfrage noch 'order by' einfügen richtig? wenn ich das jetzt so machen würde, bestünde das problem dass er nur die 5 datensätze sortiert und nicht alle datensätze. kann man die mysql abfrage nicht irgendwie umschreiben damit er zuerst sortiert und dann die limite setzt?
          Bei mir ist das so
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Jetzt im ernst? bei mir sortiert er erst nach dem auslesen.

            select * from bla limit 10,5 order by irgendwas

            ??

            Kommentar


            • #7
              Häng mal den Dump der Tabelle an

              P.S. Erst ORDER BY, dann LIMIT
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                -- phpMyAdmin SQL Dump
                -- version 2.6.1-pl3
                -- http://www.phpmyadmin.net
                --
                -- Host: localhost
                -- Erstellungszeit: 18. April 2005 um 09:09
                -- Server Version: 4.1.10
                -- PHP-Version: 4.3.10
                --
                -- Datenbank: `test`
                --

                -- --------------------------------------------------------

                --
                -- Tabellenstruktur für Tabelle `news`
                --

                CREATE TABLE `news` (
                `id` int(255) NOT NULL auto_increment,
                `autor` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `date` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `categorie` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `topic` text collate latin1_german1_ci NOT NULL,
                `nationality` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `views` int(255) NOT NULL default '0',
                `squad` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `moretext` varchar(255) collate latin1_german1_ci NOT NULL default '',
                `public` int(1) NOT NULL default '0',
                `headnews` int(1) NOT NULL default '0',
                `comments` int(1) NOT NULL default '0',
                `preview` text collate latin1_german1_ci NOT NULL,
                `body` text collate latin1_german1_ci NOT NULL,
                PRIMARY KEY (`id`)
                ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci AUTO_INCREMENT=23 ;

                --
                -- Daten für Tabelle `news`
                --

                INSERT INTO `news` VALUES (3, '1', '200501261059', '1', 'safdas', 'AT', 0, '0', 'more', 1, 1, 1, 'sdf', 'df');
                INSERT INTO `news` VALUES (4, '1', '200501261100', '1', 'fgf', 'NOC', 0, '0', 'more', 0, 0, 1, 'dfg', 'fg');
                INSERT INTO `news` VALUES (5, '1', '200501261108', '1', 'sadf', 'NOC', 0, '0', 'more', 0, 0, 1, 'asf', 'asf');
                [...]
                INSERT INTO `news` VALUES (22, '1', '200504131712', '1', 'fghfdg', 'NOC', 0, '0', 'more', 0, 1, 1, 'hfdgh', 'dfhg');
                EDIT:
                Hatte es auch schonmal in umgekehrter Reihenfolge versucht aber es funktionierte nicht. Oder muss ich noch irgendwie ein Komma setzen oder sowas?

                Kommentar


                • #9
                  Anhängen ist was anderes

                  Probier's nochmal, mit allen Daten und dem SELECT, dass irgendwie falsch sortiert/limitiert
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Hmm ich häng dir mal den ganzen Code des Scripts ran. Ist ziemlich viel und wahrscheinlich ziemlich komisch gecoded.

                    EDIT:
                    Okay hat sich erledigt.
                    Zuletzt geändert von PHPbeginner; 18.04.2005, 10:58.

                    Kommentar

                    Lädt...
                    X