Einen Rang ausrechnen anhand von Counterdaten

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

  • Einen Rang ausrechnen anhand von Counterdaten

    Hallo Leute,

    ich baue gerade eine kleine private Seite, wo mehrere user eigene URLs bekommen (zum Beispiel: index.php?name=compiler).

    Die Besuche werden gespeichert in einer Datenbank (counter siehe unten das Bild) und herausgelesen, wie oft die Seite schon besucht wurde.

    Wie kann man nun ausgeben, welchen Platz z.B. der User Compiler nun hat?

    Meine Datenbank Struktur sieht wie folgt aus:



    Ich wäre über jede Hilfe dankbar.

    Compiler

  • #2
    PHP-Code:

    SELECT 
    FROM counter ORDER BY counter DESC 

    Kommentar


    • #3
      Ich habe nun folgendes eingetragen:


      PHP-Code:
      $query_rang "SELECT * FROM counter_tabelle ORDER BY counter DESC";

      $rang mysql_query($query_rang) OR die(mysql_error());

      echo 
      $name." hat den ".$rang." Platz in der Topliste"
      Als Ergebnis kommt dabei folgendes raus:

      test2 hat den Resource id #4 Platz in der Topliste


      Compiler

      Kommentar


      • #4
        Die Plätze solltest du im Script berechnen. Mit ner Foreach durchlaufen und anhand der Werte die Plätze anzeigen.

        Kommentar


        • #5
          Original geschrieben von Schnoop
          Die Plätze solltest du im Script berechnen. Mit ner Foreach durchlaufen und anhand der Werte die Plätze anzeigen.
          Hallo Schnoop,

          sorry, ist leichter gesagt als getan. Ich bekomm das nicht hin. Könntest du eventuell helfen?

          Compiler

          Kommentar


          • #6
            @Compiler_poot
            schon mal was von mysql_fetch_array, mysql_fetch_assoc oder mysql_fetch_object gehört?

            @schnoop
            ist suboptimal, da mysql das wunderbar kann.

            gruß
            peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              Echt? Sach mal bitte an Kropff

              Kommentar


              • #8
                wenn du mit sql-abfragen etwas erreichen kannst, warum dann php bemühen? dein erster vorschlag war doch goldrichtig!
                PHP-Code:
                SELECT FROM counter ORDER BY counter DESCname ASC 
                verfeinert das noch ein wenig. wenn Compiler_poot nicht die grundlagen beherrscht, ist das ein anderes problem.

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  @Compiler_poot
                  ich habe mal dein tolles banner aus deiner signatur entfernt. so etwas großes wünschen wir hier NICHT.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Zusatzfrage: möchtest Du die Ränge aller user, in einer Rangliste, oder nur genau den Rang von user 'compiler' ausgeben? Das sql für das erste ist einfach, siehe oben, das sql für das zweite nicht so.

                    Zusatzbemerkung: ausserdem hast du ties, dh mehrere user haben gleiche Anzahl Besuche.

                    Kommentar


                    • #11
                      darum mein "name ASC"

                      gruß
                      peter
                      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                      Meine Seite

                      Kommentar


                      • #12
                        Original geschrieben von Kropff
                        darum mein "name ASC"

                        gruß
                        peter
                        Dann wird Name aaaaaaaaaa besser als aaaaaaaaaab . Wenn die ties den gleichen Rang bekommen sollen wird es schwieriger... und bei Einzelabfrage erst recht.

                        Kommentar


                        • #13
                          wieso? erst nach counter sortieren und dann nach alphabet.

                          gruß
                          peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            schon klar. aber das meinte nix_wie_weg nicht.

                            die frage ist, anhand welchen kriteriums du einen user bevorzugst, weiter oben in der liste zu stehen, wenn die punktzahl (rang) identisch ist ....

                            und da stimme ich ihm zu. du kannst nicht einen user bevorzugen, dessen name mit A beginnt und damit einen user benachteiligen, der mit K beginnt.

                            was ich hier evtl noch andenke ist ein registrierungsdatum. der user, der zuerst da war, soll im falle eines punktegleichstandes nach vorne rücken. sowas fände auch ich etwas fairer.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              Wenn man eine Rangliste ausgibt, ist es natürlich einfach, allen die gleichen Rangnummer zu geben.

                              Wenn man für user 'compiler' allein den Rang feststellen will, ohne alle durchzuzählen ? ich sehe zwei queries:

                              SELECT besucher FROM tabelle where name='compiler'
                              SELECT COUNT(*) FROM tabelle where besucher>'$besucher'
                              $rang=$count+1;

                              mit subquery:
                              SELECT COUNT(*) FROM tabelle
                              where besucher>(SELECT besucher FROM tabelle where name='compiler')
                              $rang=$count+1;

                              mit subquery, ohne php:
                              SELECT COUNT(*)+1 as rang FROM tabelle
                              where counter>(SELECT counter FROM tabelle where name='compiler')
                              Zuletzt geändert von nix_wie_weg; 09.08.2006, 22:43.

                              Kommentar

                              Lädt...
                              X