alphabetische Sortierung bei php nuke

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

  • alphabetische Sortierung bei php nuke

    Hallo!

    ich experimentiere gerade mit php nuke und wühle mich gerade durch den gesamten Code.

    Im Moment bin ich gerade dabei eine Art Reviews Sektion zu verändern, in der man die Möglichkeit hat über eine Alphabetleiste ( A | B | C | D....1 | 2 | 3 | 4...) eine Selektierung der reviews, die mit dem jeweiligen Buchstaben oder der jeweiligen Zahl beginnen zu erreichen und sich anzeigen zu lassen.


    http://www.risingdarkness.de/php/htm...p?name=Reviews



    Dabei werden soweit ich gekommen bin über eine Select Case Anweisung der Funktion zum Anzeigen der Reviews die entsprechenden Parameter für die Sortierung übergeben:

    Für alle reviews die mit 1 oder 2 beginnen:

    PHP-Code:
    ...

     case 
    "1":
            
    reviews(1$field$order);
            break;

     case 
    "2":
            
    reviews(2$field$order);
            break;

    ... 
    Bei Klick auf die Eins wird also der Funktion reviews als Sortierwert die 1 zugeordnet und eine Liste mit allen Reviews die mit 1 beginnen wird angezeigt.
    Was ich nun gerne ändern würde ist, das alle Reviews die mit 1,2,3...9 beginnen zusammen angezeigt werden können, also das ich die Alphabetsleiste folgendermaßen umändere:

    A | B | C.... |1-9 |


    Bei klicken auf 1-9 werden alle reviews die mit einer Zahl am Anfang beginnen angezeigt.

    Ich habe bisher immer mit der case Anweisung experimentiert und versucht ob es da eine Möglichkeit gibt, hab es aber nicht hin bekommen.

    Ich wäre dankbar wenn jemand einen Tipp oder eine Möglichkeit für mich hätte, als Anhang noch die gesamte index.php datei mit dem kompletten Code!

    Vielen Dank jetzt schon!

    Grüße!

    martin
    Angehängte Dateien

  • #2
    Mhn, eventuell so:


    reviews(0, $field, $order);
    reviews(1, $field, $order);
    reviews(2, $field, $order);
    reviews(3, $field, $order);
    reviews(4, $field, $order);
    reviews(5, $field, $order);
    reviews(6, $field, $order);
    reviews(7, $field, $order);
    reviews(8, $field, $order);
    reviews(9, $field, $order);


    phpNuke hat bestimmt auch eigene Supportforen, da bist du bestimmt besser aufgehoben


    Floriam
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Kommentar


    • #3
      Hallo!

      Hab vielen Dank für Deine Mühen!

      Klappt leider nicht, hatte ich schon versucht:-(

      In den Nuke Foren konnte man mir leider auch nicht helfen, daher hab ich es hier probiert!

      Ich denke man müsste das Ganze so lösen, das alles was nicht mit einem Buchstaben beginnt zusammen angezeigt werden soll, aber da hab ich mir wohl für meine Kenntnisse zuviel vorgenommen!

      Vielen Dank trotz allem!

      Grüße!

      martin
      Zuletzt geändert von martin.s; 25.04.2004, 10:06.

      Kommentar


      • #4
        ich hab den eindruck, du verrennst dich da etwas ... das sollte doch ausreichen:
        PHP-Code:
        if(is_numeric($_GET['rop']))
            
        reviews('number'$field$order);
        else
            
        tue_was_anderes(); 
        Kissolino.com

        Kommentar


        • #5
          Hallo!

          Vielen Dank erst mal für Deine Hilfe!

          Muss ich das denn dann in den Case Anweisungen einbauen oder in die Funktion zum Anzeigen der Reviews direkt?
          Wenn ich damit in den case Anweisungen zu arbeiten versuche gibt er immer aus, das keine Reviews die mit "number" beginnen vorhanden sind, er nimmt das Number dann als Begriff selbst!

          Kommentar


          • #6
            Anmerkung zu Wurzels Vorschlag:

            Natürlich muss man auch noch prüfen, ob die Zahl in dem richtigem Bereich ist..
            PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

            Kommentar


            • #7
              @martin
              natürlich musst du die reviews-funktion anpassen, schliesslich willst du
              alle zahlen haben. demzufolge brauchst du eine andere query als bei der
              buchstabenabfrage. ist aber imho nur eine bedingung innerhalb der
              funktion. den switch kannst du dann weglassen.

              @floriam
              da die zahlen-query fest definiert ist - essollen ja ALLE zahlengeholt
              werden -, sollte das nicht unbedingt notwendig sein, bei den buchstaben
              sieht das anders aus
              Kissolino.com

              Kommentar


              • #8
                Hallo!

                Also ich stelle mich glaub ich ziemlich blond heute an!

                Ich sitze vor der Reviews Funktion und versuche die Änderung einzubauen.
                Verstehe ich das richtig, das ich in den einzelnen Case Anweisungen in der Reviewsfunktion, also z.B. in dieser:



                PHP-Code:
                 case "reviewer":
                        
                $result sql_query("SELECT id, title, hits, reviewer, score
                 FROM "
                .$prefix."_reviews WHERE UPPER(title) LIKE '$letter%' $querylang 
                ORDER by reviewer 
                $order"$dbi);
                        break; 

                jeweils die sql_query abändern muss?

                Ich stehe da einfach voll auf dem Schlauch!

                Kommentar


                • #9
                  Mhn, sag erstmal was du genau machen willst..
                  PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

                  Kommentar


                  • #10
                    Hallo!

                    Also ich hab mir die gesamte Reviews Funktion function reviews($letter,
                    $field, $order) mal genauer angesehen. In der Funktion gibt es ja noch
                    einmal ein case Unterteilung, je nachdem welche Sortierreihenfolge man
                    haben möchte. In jeder dieser case Anweisungen findet eine sql_query
                    statt, die die entsprechenden Daten aus der Datenbank abruft in der
                    gewünschten Filterung und Sortierreihenfolge.

                    Ich dachte nun, das ich hier eingreifen muss und unterteilen, ob die
                    Filterung nach den Buchstaben ($letter) wie bisher möglich abläuft oder ob
                    eben nach allen Zahlen gefiltert wird. Und genau da hänge ich! Wie kann
                    ich dort noch einmal unterscheiden zwischen Zahlen und Buchsrtaben,
                    bzw. wie kann ich das Ganze dann mit der Case Anweisung beim Aufruf mit
                    dem Wunsch alle Zahlen angezeigt zu bekommen versorgen!

                    Oder müsste man eine zweite Funktion, meinetwegen reviews2 schaffen
                    und die komplett auf die Zahlen umschreinben und dann in der Select
                    Case Anweisung bei klick auf die Zahl diese Funktion aufrufen?

                    Kommentar


                    • #11
                      Hallo!

                      Nachdem nun viel Zeit vergangen ist und ich es immer wieder versucht habe mein Problem zu bewerkstelligen bitte ich Euch noch einmal zu meinem Thema um Hilfe!

                      Ich versuche nach wie vor mein Problem mit dem herausselektieren aller, mit Zahlen beginnenden Beiträge zu lösen!

                      Ich habe viel mit Hilfe des Ansatzes von Wurzel probiert, komme aber auf keinen grünen Zweig, da ich es einfach nicht hin bekomme die Reviews Funktion in der richtigen Weise zu modifiziren!

                      Ich habe in den letzten Tagen immer wieder versucht Wurzels Ansatz vor die Switch Funktion einzusetzen, aber ich bekomme einfach keine Ergebnisse!

                      Ich wäre Euch wahnsinnig dankbar, wenn Ihr Euch mein Problem noch einmal ansehen würdet und mir noch einmal zur Hand gehen könntet!

                      Vielen Dank jetzt schon und viele Grüße!

                      martin

                      Kommentar


                      • #12
                        so schwer ist das doch nicht:

                        regeln:
                        - "A"-"Z" übergeben den jeweiligen buchstaben
                        - "1-9" übergibt einen zahlenwert (zB "1")

                        PHP-Code:
                        // statt des switch():
                            
                        $result reviews($_GET['derWert'], $field$order); 
                        die reviews-funktion sähe dann so zB aus:
                        PHP-Code:
                        function reviews($derWert$field$order)
                        {
                            if(
                        is_numeric($derWert))
                                 
                        $sql "suche alle werte, die mit einer ZIFFER beginnen";
                            else
                                 
                        $sql "suche alle werte, die mit einem BUCHSTABEN beginnen";
                            
                        $res mysql_query($sql) or die(mysql_error());
                            ...

                            return 
                        $output;

                        ... eine fehlerbehandlung musst du ´noch einbauen, aber im groben kann es so aussehen.
                        Kissolino.com

                        Kommentar


                        • #13
                          Hallo!

                          Hab wieder vielen Dank für Deine Hilfe!

                          Also verstehe ich das richtig, das ich es vom Prinzip folgendermaßen umsetzen müsste:



                          PHP-Code:
                           function reviews($letter$field$order) {
                              global 
                          $bgcolor4$sitename$prefix$multilingual$currentlang$dbi;
                              include (
                          'header.php');
                              if (
                          $multilingual == 1) {
                              
                          $querylang "AND rlanguage='$currentlang'";
                              } else {
                              
                          $querylang "";
                              }
                              
                          OpenTable();
                              echo 
                          "<center><b>$sitename "._REVIEWS."</b><br>";
                              echo 
                          "<i>"._REVIEWSLETTER." \"$letter\"</i><br><br>";
                              
                              
                              
                          $result reviews($_GET['letter'], $field$order );

                              
                              If(
                          is_numeric ($letter))

                              
                          $sql "suche alle werte, die mit einer Ziffer beginnen";


                              else

                              
                          $sql ="suche alle Werte, die mit einem Buchstaben beginnen";
                              
                              
                          $res mysql_query ($sql) or die (mysql_error());


                              return 
                          $output;



                              }
                              
                          $numresults sql_num_rows($result$dbi);
                              if (
                          $numresults == 0) {
                                  echo 
                          "<i><b>"._NOREVIEWS." \"$letter\"</b></i><br><br>";


                          .... 


                          Ich muss also dann nur noch

                          $sql = "suche alle werte, die mit einer Ziffer beginnen";

                          ersetzen durch eine entsprechende Datenbankabfrage, die alle mit Ziffern behaftete Datensätze extrahiert?



                          Viele Grüße!

                          martin

                          Kommentar


                          • #14
                            hm ... ich ahne böses ...

                            du hast zwar meinen vorschlag übernommen, aber nicht wirklich verstanden, was du da tust oder? ...

                            der aufruf
                            PHP-Code:
                            $result reviews($_GET['letter'], $field$order ); 
                            gehört NICHT IN die funktion, es sei denn, du willst, dass dein script sich totläuft. da es aber nicht ausserhalb der funktion steht, kann nix schiefgehen, da sie ja garnicht aufgerufen wird.

                            das "return" liefert einen wert aus der funktion zurück, der in deinem fall nicht existiert, da $output keine wertzuweisung erfahren hat ... wenn, dann wäre $res ein möglicher/richtiger rückgabewert.

                            "$numresults = sql_num_rows($result, $dbi);" benutzt $result (was auch immer dadrin stehen soll) ... dasselbe problem wie mit $output.

                            "echo" innerhalb einer funktion ist auch nicht die feine englische.

                            tipp: bevor du anfängst, fremden code zu überarbeiten OHNE den komplett verstanden zu haben, solltest du dein grundlagenwissen auf vordermann bringen:
                            - www.schattenbaum.net
                            - www.php.net => manual => function
                            Kissolino.com

                            Kommentar


                            • #15
                              Original geschrieben von martin.s
                              Ich muss also dann nur noch

                              $sql = "suche alle werte, die mit einer Ziffer beginnen";

                              ersetzen durch eine entsprechende Datenbankabfrage, die alle mit Ziffern behaftete Datensätze extrahiert?
                              das wäre wohl zumindest empfehlenswert, wenn die KI deiner DB noch nicht so stark ausgeprägt ist, dass sie auch umgangssprachliche formulierungen versteht, sondern sie dummerweise immer noch auf altmodischem, syntaktisch korrektem SQL besteht ...

                              *scnr*
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X