php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.04.2009, 23:13  
Neuer Benutzer
 
Registriert seit: 17.04.2009
Beiträge: 5
MCViper befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Userplatz im Ranking zeigen

So ich hoffe mal das dieser Titel aussage kräftig ist und auch so ok ist.

Ich habe folgendes Problem:

PHP-Code:
<?
$abfrage2 
"SELECT * FROM forumab ORDER BY beitrage DESC LIMIT 0,10";
$ergebnis2 mysql_db_query($dbname,$abfrage2,$conn) or die(mysql_error());

for(
$i=0;$i mysql_num_rows($ergebnis2);++$i)
{
$row2 mysql_fetch_object($ergebnis2);
$abfrage "SELECT * FROM $sitetable WHERE name='$row2->name'";
$ergebnis mysql_db_query($dbname,$abfrage,$conn) or die(mysql_error());
$row mysql_fetch_object($ergebnis);

$rank $i+1;
if (
$row->geschlecht=="m")
    {
   echo 
"<tr>
             <td width=\"10%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#93CFEC'>$rank</font></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><a target=\"popup\" onclick=\"window.open('','popup','scrollbars=yes,width=483,height=500')\" href='3.php?trefferid=$row->name'><font color='#93CFEC'><b>$row->name</b></font></a></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#93CFEC'>$row->alter2</font></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#93CFEC'>$row2->beitrage</font></td>
        </tr>"
;
    }
    if (
$row->geschlecht=="w")
    {
    echo 
"<tr>
             <td width=\"10%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#FF80FF'>$rank</font></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><a target=\"popup\" onclick=\"window.open('','popup','scrollbars=yes,width=483,height=500')\" href='3.php?trefferid=$row->name'><font color='#FF80FF'><b>$row->name</b></font></a></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#FF80FF'>$row->alter2</font></td>
          <td width=\"30%\" align=\"center\" style=\"border-style: double; border-width: 3\"><font color='#FF80FF'>$row2->beitrage</font></td>
        </tr>"
;
    }
}

?>
Mit diesem code zeige ich ein Ranking an wo die Besten 10 User gezeigt werden, nun möchte ich aber das ein User der sich das anschaut die besten 10 User sehen kann aber auch sehen kann auf welchen platz er im Ranking steht.
Kann mir da wer helfen?
MCViper ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.04.2009, 00:39  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Du kannst zum Beispiel mit einer Subquery abfragen, wieviele Datensätze einen größeren Wert in `beitraege` haben als der aktuelle.
Code:
SELECT
  a.beitraege,
  a.alter2,
  (
    SELECT
      Count(*)
    FROM
      tablename as b
    WHERE
      b.beitraege > a.beitraege
  ) as rank
FROM
  tablename as a
WHERE
  name='foo'
edit: Doppelpost, siehe http://www.php.de/datenbanken/54230-...r-ranking.html (Hilfe für Ranking)

Geändert von David (19.04.2009 um 00:54 Uhr).
David ist offline   Mit Zitat antworten
Alt 19.04.2009, 16:49  
Neuer Benutzer
 
Registriert seit: 17.04.2009
Beiträge: 5
MCViper befindet sich auf einem aufstrebenden Ast
Standard

Hey danke Dir, Dein Beitrag hat mich weiter gebracht.
Das einzige was geändert werden musste ist ein kleines blödes = .
Code:
SELECT
  a.beitraege,
  a.alter2,
  (
    SELECT
      Count(*)
    FROM
      tablename as b
    WHERE
      b.beitraege >= a.beitraege
  ) as rank
FROM
  tablename as a
WHERE
  name='foo'
Ohne dieses = zeigt er mir immer 1 Platz zu wenig an. Mit dem = gibt es keine Probleme.


Auf jeden Fall nochmal besten Dank
MCViper ist offline   Mit Zitat antworten
Alt 19.04.2009, 17:15  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Um aus Platz #0 Platz #1 zu machen, kannst Du einfach eins auf den Zähler draufaddieren
Code:
SELECT
  Count(*) + 1
Der Austausch von > zu >= ändert inhaltlich noch eine Kleinigkeit, wobei ich Dir nicht sagen will und kann, was nun "richtig" und was "falsch" ist. Das musst Du entscheiden.
Was soll bei Punktegleichstand passieren?
Nehmen wir mal folgende Tablle (name, punkte)
a, 10
b, 9
c, 9
d, 9
e, 8

Mit > haben b,c,d Platz #2 und e den Platz #5. Plätze 3,4 unbesetzt.
Mit >= haben b,c,d den Platz #4 und e Platz #5. Plätze 2,3 unbesetzt.
Es kommt also darauf an, wo Du die Lücke haben willst. Ich persönlich finde die Lücke nach dem Gleichstand "schöner".
David ist offline   Mit Zitat antworten
Alt 19.04.2009, 20:28  
Neuer Benutzer
 
Registriert seit: 17.04.2009
Beiträge: 5
MCViper befindet sich auf einem aufstrebenden Ast
Standard

In soweit gebe ich Dir recht, die Lücke nach dem gleichstand zu haben wäre wirklich schöner. Da aber unter der eigentlichen Top 10 Liste nur der Einzelbetrachter angezeigt wird, und das auch nur wenn er sich nicht schon auf der Top 10 befindet, ist das eigentlich Jacke wie Hose oder so.^^
Beispiel: (Platz, name, punkte)
1-a-100
2-b-90
3-c-80
4-d-70
5-e-60
6-f-50
7-g-40
8-h-30
9-i-20
10-j-10

11-xyz-2 Betrachter
wenn Berachter = 1 bis 10 dann nix zeigen.

Ja ich glaube so ist das richtig.^^
MCViper ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Hilfe für Ranking MCViper Datenbanken 3 18.04.2009 20:23
(Einzelprojekt) Ranking mit Zeiterfassung / SQL-Anbindung pressenews Scriptbörse 2 15.02.2009 04:46
ranking generieren Jumper PHP Tipps 2008 5 06.07.2008 23:59
Ranking anzeigen - aber wie?? PHP Tipps 2007 2 17.12.2005 14:37
[Erledigt] MySQL Relevanz, Gewichtung bzw. Ranking Datenbanken 0 01.09.2005 10:56
Banner Ranking PHP Tipps 2005-2 2 30.07.2005 15:46
Code für Page Ranking Beitragsarchiv 3 16.06.2005 08:52
Ranking Datenbanken 6 25.07.2004 23:21

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
top 10 user ranking php, user rank erzeugen php, ranking mit php, php benutzer ranks, php count row rangliste, mysql rangliste punktegleichstand

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:50 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum