ORDER BY 'Punke': Gleiche Platzierung möglich?

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

  • ORDER BY 'Punke': Gleiche Platzierung möglich?

    Hallo zusammen!
    Habe ein kleines Problemchen beim Coden einer Meisterschaftstabelle:

    Meine MySQL-Tabelle wird nach der Gesamtpunktzahl sortiert und dann in einem Array ausgegeben (nix besonderes ^^).

    Die Platzierung habe ich in der Ausgabe bis jetzt mit $i++ festgelegt, allerdings gibt es dann ja bei zwei Personen die die gleiche Punktzahl haben immer nur einen, der 'vorne liegt'...

    Gibt es eine Funktion, bei der es z.B. zwei zweite Plätze geben kann oder muss man dies dann SQL-Intern mit einer extra-Spalte machen? - Und wenn ja: Wie??

    Ich wäre um eure Hilfe sehr dankbar,
    Grüße, Ben

    Link zur Tabelle: http://www.slt-media.de/projects/kcc/
    Zuletzt geändert von ; 08.10.2005, 14:43.

  • #2
    Re: ORDER BY 'Punke': Gleiche Platzierung möglich?

    Original geschrieben von sunworker
    Gibt es eine Funktion, bei der es z.B. zwei zweite Plätze geben kann oder muss man dies dann SQL-Intern mit einer extra-Spalte machen? - Und wenn ja: Wie??
    wozu? speichere die punkte in einer hilfsvariablen (in der while-schleife) und überprüfe, ob du den zähler weiterstellen musst oder nicht ... indem du vergleichst.
    Kissolino.com

    Kommentar


    • #3
      Vielleicht mags ja daran liegen, dass ich heute morgen mit dem falschen Bein aus dem Bett gestiegen bin, aber: Mit welchem Code soll ich die Variablen vergleichen?

      Es wäre echt nett, wenn mir jemand den zugehörigen Code erstellen könnte, denn ich komme wirklich nicht weiter...


      Mein bisheriger Code (vereinfacht):
      PHP-Code:

      $data 
      "SELECT * FROM `championship` ORDER BY PUNKTE DESC, NAME";
      $data mysql_query($data);
      $platz "1";

      while(
      $row mysql_fetch_object($data))
        {
          echo(
      $platz.". ".$row->NAME." - ".$row->PUNKTE."<BR><BR>");
          
      $platz++;
        } 
      Zuletzt geändert von ; 08.10.2005, 14:43.

      Kommentar


      • #4
        Datenbank nach Punkten sortieren - zwei gleiche Plätze möglich?!

        Sorry, dass ich dieses Thema nochmal poste, aber leider habe ich keine für mich brauchbare Antwort bekommen - und wenn der Thread bereits auf der dritten Seite steht liest ihn sich leider niemand mehr durch

        Wie gesagt: Ich habe immernoch ein kleines Problemchen beim Coden meiner Meisterschaftstabelle:

        Meine MySQL-Tabelle wird nach der Gesamtpunktzahl sortiert und dann in einem Array ausgegeben (nix besonderes ^^).
        Die Platzierung habe ich in der Ausgabe bis jetzt mit $i++ festgelegt, allerdings gibt es dann ja bei zwei Personen die die gleiche Punktzahl haben immer nur einen, der 'vorne liegt'...

        Gibt es eine Funktion, bei der es z.B. zwei zweite Plätze geben kann oder wie kann ich das anstellen? - Und wenn ja: Wie??

        Einen Tipp hab ich bereits bekommen, allerdings werde ich aus ihm nicht so recht schlau...
        Wie kann man denn überprüfen, ob der Zähler weiterzustellen ist oder nicht???

        speichere die punkte in einer hilfsvariablen (in der while-schleife) und überprüfe, ob du den zähler weiterstellen musst oder nicht ... indem du vergleichst.
        Ich wäre um eure Hilfe - wenn möglich auch direkt um einen Codeansatz - sehr dankbar.
        Grüße, Ben


        Link zur Tabelle: http://www.slt-media.de/projects/kcc/

        Mein bisheriger Code (vereinfacht):
        PHP-Code:

        $data 
        "SELECT * FROM `championship` ORDER BY PUNKTE DESC, NAME";
        $data mysql_query($data);
        $platz "1";

        while(
        $row mysql_fetch_object($data))
          {
            echo(
        $platz.". ".$row->NAME." - ".$row->PUNKTE."<BR><BR>");
            
        $platz++;
          } 
        Zuletzt geändert von ; 13.10.2005, 18:12.

        Kommentar


        • #5
          Ist im Prinzip auch sowas wie ein Gruppenwechsel

          Setze vor der Schleife $platz auf 0 und initialisiere eine Variable namens $punktzahl mit -1.
          Darüberhinaus brauchst du noch eine weitere Variable namens $pos, setze sie auf den Wert von $platz

          In der Schleife erhöhst du $pos immer um 1.
          Danach vergleichst du $punktzahl mit der Punktzahl der aktuell ausgelesenen Mannschaft; sind die beiden Werte unterschiedlich, setzt du $platz auf den Wert von $pos und speicherst die neue Punktzahl in $punktzahl.

          Alles klar?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            PHP-Code:
            $data "SELECT * FROM `championship` ORDER BY PUNKTE DESC, NAME";
            if ( 
            $data mysql_query($data) ) {

                
            $platz 0;
                
            $punkte = -1;
                
                while(
            $row mysql_fetch_object($data)) {
                    if ( 
            $punkte != $row->PUNKTE ) {
                        
            $platz++;
                        
            $punkte $row->PUNKTE;
                    }
                    
            printf("%3d. %s - %d<br/><br/>"$platz$row->NAME$row->PUNKTE);
                }
                
                
            mysql_free_result($data);
                

            oder
            PHP-Code:
            $data "SELECT * FROM `championship` ORDER BY PUNKTE DESC, NAME";
            if ( 
            $data mysql_query($data) ) {

                
            $platz "";
                
            $pos 1;
                
            $punkte = -1;
                
                while(
            $row mysql_fetch_object($data)) {
                    if ( 
            $punkte != $row->PUNKTE ) {
                        
            $punkte $row->PUNKTE;
                        
            $platz sprintf("%d"$pos);
                    } else 
            $platz "";
                    
            printf("%3s. %s - %d<br/><br/>"$platz$row->NAME$row->PUNKTE);
                    
            $pos++;
                }
                
                
            mysql_free_result($data);
                

            Ohne Gewähr ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Hey - VIELEN DANK!
              Darauf wär ich jetzt irgendwie überhaupt nicht gekommen und dabei is es doch relativ einfach

              Naja, vielen Dank nochmal für die Wiederaufnahme des Threads,
              Euer sunworker

              Kommentar


              • #8
                Wenn du's so machst, kriegst du als Ergebnis bspw.

                1. Mannschaft C - 17
                2. Mannschaft X - 9
                2. Mannschaft A - 9
                2. Mannschaft F - 9
                3. Mannschaft X - 8


                Wenn das ok ist, sei froh.

                Wenn du das so willst:
                1. Mannschaft C - 17
                2. Mannschaft X - 9
                2. Mannschaft A - 9
                2. Mannschaft F - 9
                5. Mannschaft X - 8
                musst du's anders machen als goth vorgeschlagenhat
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  oh stimmt...
                  ist mir jetzt wo dus sagst erst aufgefallen - aber wie mach ich das?
                  ich guck ma ob ichs selbst rausbekomme, ihr könnt mir aber gern nen tipp geben

                  p.s.: trotzdem danke an goth!

                  EDIT:
                  Habs nach der Anleitung in deinem Beitrag geschafft *freu*

                  Aktuelle Liste nochmal zum "drüberschauen" auf http://www.slt-media.de/projects/kcc/
                  Wenn noch jemandem irgendwas auffällt - bitte melden ^^

                  Zuletzt geändert von ; 14.10.2005, 12:13.

                  Kommentar


                  • #10
                    Original geschrieben von mrhappiness
                    Wenn du's so machst, kriegst du als Ergebnis bspw.

                    1. Mannschaft C - 17
                    2. Mannschaft X - 9
                    2. Mannschaft A - 9
                    2. Mannschaft F - 9
                    3. Mannschaft X - 8


                    Wenn das ok ist, sei froh.

                    Wenn du das so willst:
                    1. Mannschaft C - 17
                    2. Mannschaft X - 9
                    2. Mannschaft A - 9
                    2. Mannschaft F - 9
                    5. Mannschaft X - 8
                    musst du's anders machen als goth vorgeschlagenhat
                    Du hast schon mitbekommen das sich die beiden Vorschläge unterscheiden??
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Original geschrieben von goth
                      Du hast schon mitbekommen das sich die beiden Vorschläge unterscheiden??
                      Ich habe den zweiten Vorschlag nicht mitbekommen...
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Original geschrieben von mrhappiness
                        Ich habe den zweiten Vorschlag nicht mitbekommen...
                        OffTopic:
                        jetzt gibt goth schon ausnahmsweise hier den poser und du liest noch nicht mal alles ... pfui spinne, schäm dich
                        Kissolino.com

                        Kommentar


                        • #13
                          ich hab den zweiten vorschlag von goth zwar gesehen, aber den unterschied zu spät bemerkt - sry!!
                          dann vielen dank an euch beide - problem ist jetzt auf jeden fall mit der zweiten version von goths code gelöst ^^

                          liebe grüße, vielen dank
                          der sunny
                          Zuletzt geändert von ; 14.10.2005, 13:57.

                          Kommentar


                          • #14
                            OffTopic:
                            Hey ... ich glaub', dass irgendwas nicht stimmt mit Goth, seitdem er seinen geliebten Audi verkauft hat ... er gibt sonst nie kompletten Code, und sogar in 2 Varianten

                            Kommentar


                            • #15
                              OffTopic:
                              also ich finds ausgesprochen nett von ihm!

                              Kommentar

                              Lädt...
                              X