Ankündigung

Einklappen
Keine Ankündigung bisher.

Forenränge

Einklappen

Neue Werbung 2019

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

  • Forenränge

    Hallo,
    ich hab nen kleines Denkproblem. Ich hab eine Tabelle mit Rängen für die Anzahl geposteter Beiträge. Die sieht wie folgt aus:


    Code:
    -------------------
    |ID|Name|from|
    -------------------
    Da stehen dann z.B. Ränge drin wie Anfänger (from 0), Fortgeschrittener (from 10) etc.

    Jetzt habe ich z.B. die Anzahl der Posts in der Variable $userposts. Wie bekomme ich jetzt in einer mySQL Abfrage den Rank des Users raus?
    Mir fehlt da irgendwie der Ansatz, weil ich würde das wenn mit mehreren Querys machen aber das muss doch auch bestimmt in einem gehen.


    mfg
    Link
    "Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"

  • #2
    Mal schnell aus dem nicht ausgeschlafenen Kopf:

    SELECT Name FROM forenraenge WHERE from <= "$userposts" ORDER BY from DESC LIMIT 1

    => Hole alle Ränge bei denen From kleiner oder gleich $userposts ist, also alle Ränge dir der Benutzer schon hat(te). Dann sortiere absteigend nach From, damit der Rang mit der größten Postzahl zurückgeliefert wird und zwar nur der eine, sichergestellt durch LIMIT 1.

    Kommentar


    • #3
      Danke, so funktionierts.
      Ich war warscheinlich noch zu schläfrig um das hinzubekommen

      mfg
      Link
      "Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"

      Kommentar


      • #4
        Entweder so, oder man schreibt sich auf, welcher Bereich von $userposts auf welchen Bereich von $from umgeschrieben werden muss und überlegt sich dann eine mathematische Funktion, die Wert $userposts in Wert $from umschreibt.

        Folgendes Beispiel:
        Code:
          0- 49 $userposts -> $from = 1, Anfänger 
         50- 99 $userposts -> $from = 2, Fortgeschrittener 
        100-149 $userposts -> $from = 3, Profi 
          >=150 $userposts -> $from = 4, Gott
        Hierfür wäre die passende Funktion
        Code:
        IF ($userposts < 150) DANN ABRUNDEN ( $userposts / 50 ) + 1 SONST 4
        In MySQL dann direkt
        Code:
        IF (`$userposts` < 150, FLOOR(`$userposts` / 50) + 1, 4)

        Kommentar


        • #5
          Das macht den Code aber unnötig länger. Die andere Methode funktioniert besser.

          mfg
          Link
          "Ein Script ist nur dann gut, wenn es unabhängig von der verwendeten Plattform funktioniert"

          Kommentar


          • #6
            Das funktioniert aber nur bei regelmässigen Abschnitten.
            Nicht jeder Fehler ist ein Bug.

            Kommentar


            • #7
              Das funktioniert mit allem, was sich über eine Funktion abbilden läßt. Zugegebenermaßen ist die von MaMo aber cleverer.

              Kommentar

              Lädt...
              X