MySQL Rangliste - Probleme

03/07/2012 14:37 Heberg#1
Hallo Leute,

heute möchte ich euch mit einem kleinen Problem meinerseits nerven. Und zwar habe ich in den letzten 3 Stunden für ein Voting System eine Rangliste zusammen geschustert mithilfe von PHP, HTML & MySQL. Das ganze sieht so aus :

Bild:

Der Code ist so :
PHP Code:
<?php
                        
                        $ergebnisranking 
mysql_query("SELECT * FROM login WHERE id < '2000' ORDER BY votings DESC LIMIT 9");
                        while(
$row mysql_fetch_object($ergebnisranking))
                        {
                        
?>
                        <p>
                        <?php echo "$row->username"?> | <?php echo "$row->votings"?>
                        </p>
                        <?php
                        
}
                        
?>
Das eigentliche Problem ist nun, dass das Sortieren der 3 Ziffrigen Zahlen Probleme macht und er sie nach Unten sortiert.

Ich hoffe ihr könnt mir helfen !

MfG
Heberg
03/07/2012 14:55 galaxyo#2
Guck dir mal dein "votings"-Feld in der Datenbank an. Wenn es ein Textfeld ist, änder das mal in ein int Feld. Du speicherst darin ja ohnehin nur die Anzahl der Votes. Ist schneller und das Problem mit dem sortieren sollte gelöst sein.

Anderfalls folgendermaßen:

Funktionen [Only registered and activated users can see links. Click Here To Register...] oder [Only registered and activated users can see links. Click Here To Register...] mit diesem "SORT_NUMERIC" Parameter
03/07/2012 15:04 Heberg#3
Habe die Tabelle in INT geändert und es klappt nun perfekt ! Tausend Dank ! :D
03/07/2012 15:09 galaxyo#4
Kein Thema. Gerne wieder :P
03/07/2012 15:19 Heberg#5
Nun, da gibt es noch ein Problem, unzwar habe ich versucht nun den Rang neben dem Spieler anzeigen zulassen nur das gestaltet sich schwiriger als gedacht, hier mal der aktuelle code usw.

PHP Code:
´<table border="1px white solid" style=" margin-top: 10px; ">
                        <tr>
                            <td>&nbsp;Rang&nbsp;</td>
                            <td> Name </td>
                            <td> Votes </td>
                        </tr>
                        <?php
                        
                        $ergebnisranking 
mysql_query("SELECT * FROM login WHERE id < '2000' ORDER BY votings DESC LIMIT 9");
                        while(
$row mysql_fetch_object($ergebnisranking))
                        {
                        
?>
                            <tr>
                                <td> <?php $rang '1'$rang++; echo $rang?> </td>
                                <td><?php echo "$row->username"?></td>
                                <td><?php echo "$row->votings"?></td>
                            </tr>
                            
                        <?php
                        
}
                        
?>
                    </table><br /><a href="#">Volständige Liste anschauen</a>
[Only registered and activated users can see links. Click Here To Register...]
03/07/2012 15:33 MoepMeep#6
Du setzt rang auf 10, erhöhst rang dann um eins und gibst es aus. Dann setzt du es wieder auf 10. Kann ja nicht klappen ;)
03/07/2012 15:39 Heberg#7
Ja, das ist mir auch klar aber bin bereits fleißig am googeln und fand auch schon was, aber das war auf mein code nicht wirklich anwendbar :/
03/07/2012 15:44 MoepMeep#8
Du darfst den Rang nicht bei jedem durchlauf wieder auf (mittlerweile :p) 1 setzen. Setze Rang einmal am Anfang auf 1. Also vor dem while.
03/07/2012 15:51 Heberg#9
Habs hinbekommen ( Natürlich mit bissle googlen )

Das ist mein Aktueller code, hoffe er kann anderen, die das Selbe Problem haben helfen. Danke an allen !

Code:
					<table border="1px white solid" style=" margin-top: 10px; ">
						<tr>
							<td>&nbsp;Rang&nbsp;</td>
							<td> Name </td>
							<td> Votes </td>
						</tr>
						<?php
						
						$ergebnisranking = mysql_query("SELECT * FROM login WHERE id < '2000' ORDER BY votings DESC LIMIT 9");
						for($i=1; $row = mysql_fetch_object($ergebnisranking); $i++)
						{
						?>
							<tr>
								<td> <?php echo $i; ?> </td>
								<td><?php echo "$row->username"; ?></td>
								<td><?php echo "$row->votings"; ?></td>
							</tr>
							
						<?php
						}
						?>
					</table><br /><a href="#">Volständige Liste anschauen</a>
03/07/2012 15:56 galaxyo#10
PHP Code:
<?php
                        $ergebnisranking 
mysql_query("SELECT * FROM login WHERE id < '2000' ORDER BY votings DESC LIMIT 9");
                        
$rang "1";
                        while(
$row mysql_fetch_object($ergebnisranking))
                        {
                        
?>
                            <tr>
                                <td> <?php echo $rang$rang++; ?> </td>
                                <td><?php echo "$row->username"?></td>
                                <td><?php echo "$row->votings"?></td>
                            </tr>
                            
                        <?php
                        
}
                        
?>
Sollte auch funktionieren. Die Variable vor der While-Schleife initialisieren und dann jedes mal um 1 erhöhen nachdem der Rang ausgegeben wurde.

Variable mit 1 initialisieren.
Rang ausgeben: Rang 1
Rang erhöhen Rang = 2
Rang ausgeben: Rang 2
Rang erhöhen Rang = 3

und so weiter. Hättest google gar nicht anschmeißen brauchen :D Dein Ansatz war richtig. Hättest lediglich die Variable vor der While-Schleife initialisieren und das erhöhen der Variable hinter den echo schreiben müssen.