Wert auslesen und Nr. zuordnen

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

  • Wert auslesen und Nr. zuordnen

    Hallo,
    ich würde gerne wissen, wie man einen Column auslesen kann und dabei jeweils die Nr. des auslesens mitgegeben wird.
    Das soll heissen, das wir beispielsweise einen Wert auslesen, z.B. so:

    PHP-Code:
    SELECT userid,username,userposts FROM bb".$n."_user_table ORDER BY userposts DESC 
    Nun soll aber immer eine Zahl von 1 aufwärts mit zugeordnet werden, damit man eine Art Position in der Rangliste ermitteln kann.
    Der mit den meisten Userposts wird durch den Query oben ja als erstes ausgelesen, also soll er eine 1 zugeordnet bekommen, der der als zweites ausgelesen wird (der mit den zweitmeisten Posts) soll eine 2 bekommen u.s.w.

    Zweck der Sache soll sein, das man später im Profil eines Users seine Position in der "Rangliste der TopPoster" ausgeben kann...

    Hat jdm. dazu vielleicht einen Lösungsansatz ?

    MfG, KTJ

  • #2
    da du keine where bedingung drin hast, kriegst du ja eh alle datensätze und musst die in php abarbeiten, dann mach doch in der ausgabe schleife nen zähler, den du um eins erhöhst. $i++ ist dein freund
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Ja, aber wie genau muss ich das machen?
      Ich habs mal so probiert:
      PHP-Code:
      $prl $db_zugriff->query("SELECT userid,username,userposts FROM bb".$n."_user_table ORDER BY userposts");
      while (
      $topposter mysql_fetch_array($prl)):
          
      $ausgabe++;
      endwhile; 
      Ausgabe soll die Nr. liefern, liefert aber immer nur die Anzahl der insgesamt ausgelesenen Datensätze...wahrscheinlich ist der Code sowieso ganz falsch...da fehlt denke ich was...ich weiss nur nicht was

      Kommentar


      • #4
        PHP-Code:
        while ($topposter mysql_fetch_array($prl)):

            
        $ausgabe++;
            echo 
        $ausgabe.'<br />';

        endwhile; 
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Mhh, grade ist mir aufgefallen, das es so ziemlich schwierig werden kann...ich will ja
          1) nicht, das alle Ränge sofort ausgegeben werden => es soll ja durch eine im Profil-Template eingebettete Variable gesehen
          und
          2) Will ich ja im Profil des Users immer nur seine Position in der Rangliste und nicht die Ganze...
          Also geht man auf das Profil von xyz, dann steht dort z.B.:
          xyz's Rang in der Topposterliste: $ausgabe
          Also soll nicht alles auf einmal ausgegeben werden...aber geht das ohne eine WHERE-Clause dann überhaupt?

          Kommentar


          • #6
            eventuell indem du die anzahl der beiträge des bestimmten users abfragst und dann in nem zweiten statement schaust, wieviele leute mehr beiträge haben

            edit:
            sollte auch in einem statement gehen
            PHP-Code:
            $sql='select (count(a.userid)+1) AS Position 
            from bb'
            .$n.' a 
            inner join bb'
            .$n.' b 
            on a.userposts > b.userposts and a.userid=35'

            Zuletzt geändert von mrhappiness; 02.04.2003, 20:26.
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              Danke für dein Beispiel, aber es würde glaube ich auch nichts anderes bewirken als das was ich in der Zwischenzeit entworfen habe:
              PHP-Code:
              $thread_prl $db_zugriff->query_first("SELECT userposts FROM bb".$n."_user_table WHERE userid='$posts[userid]'");
              $prl $thread_prl[userposts];
              $prl2 $db_zugriff->query_first("SELECT COUNT(userid) AS number FROM bb".$n."_user_table WHERE userposts > '$prl'");
              $ausgabe = ($prl2[number]+1); 
              Das ist dann wohl die ausführliche Variante...

              Es geht auch soweit, nur ein Problem: Nehmen wir an es gibt mehrere User auf dem Board die gleichviel Posts haben (z.B. Nullposter)...
              Sie hätten demnach alle den gleichen Rang...verflixt

              Kommentar


              • #8
                Original geschrieben von KTJ
                Danke für dein Beispiel, aber es würde glaube ich auch nichts anderes bewirken als das was ich in der Zwischenzeit entworfen habe
                stimmt, aber is eine abfrage weniger *g*
                Nehmen wir an es gibt mehrere User auf dem Board die gleichviel Posts haben (z.B. Nullposter)...
                Sie hätten demnach alle den gleichen Rang...verflixt
                und? is doch usus so oder?

                4 leute:
                der 1. hat 3 punkte
                der 2. hat 5 punkte
                der 3. hat 3 unkte
                der 4. hat 1 punkt

                dann ist die reihenfolge so:
                1. Platz: Nummer 2
                2. Platz: Nummer 1
                2. Platz: Nummer 3
                4. Platz: Nummer 4

                is auch im sport so afair
                Ich denke, also bin ich. - Einige sind trotzdem...

                Kommentar


                • #9
                  Original geschrieben von KTJ
                  Es geht auch soweit, nur ein Problem: Nehmen wir an es gibt mehrere User auf dem Board die gleichviel Posts haben (z.B. Nullposter)...
                  Sie hätten demnach alle den gleichen Rang...verflixt
                  dann würde ich die einfach alphabetisch anordnen, düfte das 'fairste' sein.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    In Oracle heißt das "rownum" ... nur das Entwicklerteam von MySQL ist zu dösig zu verstehen was das macht ... ich und andere Teilnehmer der MySQL-Mailinglisten haben bereits mehrfach angeregt "rownum" oder ein equivalent inzuführen ... aber irgendwie rallen die's nicht ... nicht mal den Sinn der Sache ...
                    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 wahsaga
                      dann würde ich die einfach alphabetisch anordnen, düfte das 'fairste' sein.
                      das heißt wenn beim 100m-Sprint der erste 9.8 sec läuft und der zweite und dritte laufen beide 9.98sec, dann kriegt der die silbermedallie der im alphabet weiter vornesteht?

                      da bin ich ja ziemliech gearscht, wenn mein nachname mit w oder ähnlichem anfängt
                      Ich denke, also bin ich. - Einige sind trotzdem...

                      Kommentar


                      • #12
                        Original geschrieben von mrhappiness
                        stimmt, aber is eine abfrage weniger *g*und? is doch usus so oder?

                        4 leute:
                        der 1. hat 3 punkte
                        der 2. hat 5 punkte
                        der 3. hat 3 unkte
                        der 4. hat 1 punkt

                        dann ist die reihenfolge so:
                        1. Platz: Nummer 2
                        2. Platz: Nummer 1
                        2. Platz: Nummer 3
                        4. Platz: Nummer 4

                        is auch im sport so afair
                        Ja, wär auch gut wenn es so wär, aber so ist es ja halt nicht. Wenn User 1 und User 3 gleichviel Punkte haben, dann gibt es für beide auch die gleiche Anzahl an User die mehr Posts haben und für beide kommt der selbe Platz raus...
                        Ein ORDER BY username ASC könnte helfen es alphabetisch zu ordnen, aber wo soll ich das denn einfügen, wenn du Ausgabe aus der Useranzahl die mehr Posts hat+1 errechnet wird?
                        Weil wenn ich es in der Abfrage einbaun würde, würde es ja nichts nützen...

                        Kommentar


                        • #13
                          user 1: 25 posts
                          user 2: 30 posts
                          user 3: 27 posts
                          user 4: 25 posts
                          user 5: 17 posts

                          wie soll das denn ausgegeben werden?
                          welche(r) user auf welchem platz?

                          mein vorschlag würde zu folgendem ergebnis führen:

                          Platz 1: User 2
                          Platz 2: User 3
                          Platz 3: User 1 und User 4
                          Platz 5: User 5
                          EDIT:
                          ich find die lösung toll, liegt aber wahrscheinlich daran, dass es mein vorschlag is *g*
                          Zuletzt geändert von mrhappiness; 03.04.2003, 20:25.
                          Ich denke, also bin ich. - Einige sind trotzdem...

                          Kommentar


                          • #14
                            Ja, das macht die Funktion bis jetzt ja auch, aber ich finde es etwas sinnlos, das dann auch alle 0-Poster den selben Rang haben...ich mein bei wenn beispielsweise 100 User nie gepostet haben (soll vorkommen), dann hätten auch 100 User den gleichen Rang da stehen und das finde ich nicht so sehr sinnvoll...
                            Eine alphabetische Lösung wär schon ganz gut, aber als erstes könnte man ja den User, der sich früher regstriert hat den Vorrang geben (order by regdate DESC) und falls es dort dann immernoch mehrere User gibt, die das selbe Ergebnis vorbringen (sich am selben Tag registriert haben), dann könnte man eine alphabetische Anordnung (oder by username ASC) nehmen...
                            Frage ist nur die Umsetzung, also wie kann ich die User noch derartig sortieren, wenn ich das Ergebnis eigentlich schon in einer Variablen habe ?

                            Kommentar


                            • #15
                              mit meiner abfrage oben ermittelst du die position die ein user mit x beiträgen hat, danach lässt du dir die namen der user ausgaben, die x beiträge haben und kannst da sortieren wie du lustig bist

                              aber:
                              2) Will ich ja im Profil des Users immer nur seine Position in der Rangliste und nicht die Ganze...
                              Also geht man auf das Profil von xyz, dann steht dort z.B.:
                              xyz's Rang in der Topposterliste: $ausgabe
                              wozu willst du dann denn noch sortieren? dann steht doch eh bloß ein eintrag da oder?
                              Ich denke, also bin ich. - Einige sind trotzdem...

                              Kommentar

                              Lädt...
                              X