Problem mit MySQL ausgabe in PHP Datei

djbergo

Erfahrenes Mitglied
Hallo Zusammen,

Ich habe ein Script angelegt, welches eine Aktuelle Platzierung anhand von Punkten ausgeben soll.

Leider wird die Platzierung nicht richtig angezeigt, weil die, die weniger als 10 Punkte haben vor denen mit 10 und mehr Punkte angezeigt werden.

PHP:
<?php
	$i = 1;
	$platzierung=safe_query("SELECT * FROM dtm_teams ORDER BY punkte DESC");
	while($ergebnis=mysql_fetch_array($platzierung)) {

		$name		= $ergebnis['name'];
		$image		= $ergebnis['image'];
		$fahrzeug	= $ergebnis['fahrzeug'];
		$punkte		= $ergebnis['punkte'];
		$alter		= $ergebnis['alter'];
		$wohnort	= $ergebnis['wohnort'];
		if($punkte == "") $punkte = "0";
?>		
</span>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="20" class="Stil3"><?php echo $i;?>.</td>
    <td class="Stil3"><?php echo $name;?></td>
  </tr>
  </table>
<span class="Stil8">
<?php
$i++;
}

?>

Wär super, wenn ihr mir helfen könntet.
 
Sind die punkte in der DB als String oder als int definiert?

string 9>10 (!) int 10>9

Wenn ich's grad richtig gelesen habe sollte val() helfen, also
SELECT * FROM dtm_teams ORDER BY val(punkte) DESC

mfg chmee
 
Spricht dafür, dass val() nicht funktioniert :D Möglicherweise musst Du CONVERT() benutzen. Das sähe so aus:
SELECT * FROM dtm_teams ORDER BY CONVERT(int,punkte) DESC

Möglicherweise muss die Konvertierung auch schon vor dem ORDER BY geschehen. zB
SELECT *,CONVERT(int,punkte) as pts FROM dtm_teams ORDER BY pts DESC

**EDIT** Aha, hmm, also int(11)..

mfg chmee
 
anscheinend bin ich heute wieder nicht schlau genug :-)

Also es funktioniert keine der Möglichkeiten.

Nein Punkte sind nicht als String definiert und es gibt keine nachkomma stellen.
 
Gib mal auf jener Seite auch die Punkte aus.

<td class="Stil3"><?php echo $name;?></td>

ersetzen durch

<td class="Stil3"><?php echo $name." - ".$punkte;?></td>
 
Zurück