korrekte Nummerierung der Plätze 1-3 - Teil 2

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

korrekte Nummerierung der Plätze 1-3 - Teil 2

Beitrag von Dungeonwatcher »

Hi! 8)

Ich habe versucht den Tip aus dem Thread korrekte Nummerierung der Plätze 1-3 für den Sudoko Mod umzusetzen. Doch ich bekomme es nicht hin. :-?

Was müsste ich in folgendem Code entsprechend ändern, damit die Platznummerierung so aussieht:

Code: Alles auswählen

Platz   Top Spieler Punkte
  1      User1        72
  2      User2        71
         User3        71
  4      User4        69
         User5        69
Hier der entsprechende Quellcode:

Code: Alles auswählen

// grab the top ten
$sql=" SELECT * FROM " . SUDOKU_STATS . "
WHERE points > 0
ORDER BY points DESC LIMIT 10
";
if ( !($result = $db->sql_query($sql)) ) 
{ 
	message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql); 
}
$x=1;
while ( $row=$db->sql_fetchrow($result) )
{
	$stat_points=$row['points'];
	$stat_played=$row['played'];
	$stat_userid=$row['user_id'];
	
	$sql_a=" SELECT username FROM " . USERS_TABLE . "
	WHERE user_id=" . $row['user_id'];
	if ( !($result_a = $db->sql_query($sql_a)) ) 
	{ 
		message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql_a); 
	}
	$row_a=$db->sql_fetchrow($result_a);
	$stat_username=$row_a['username'];
	// grab current game
	$sql_a=" SELECT game_pack, game_num FROM " . SUDOKU_USERS . "
	WHERE user_id=" . $row['user_id'] . "
	ORDER BY game_pack DESC, game_num DESC
	LIMIT 1
	";
	if ( !($result_a = $db->sql_query($sql_a)) ) 
	{ 
		message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql_a); 
	}
	$row_a=$db->sql_fetchrow($result_a);
	$stat_gamepack=$row_a['game_pack'];
	$stat_gamenum=$row_a['game_num'];
	$stat_avg = !$stat_played || !$stat_points ? 0 : round($stat_points / $stat_played, 0);

	// send to template
	$row_color = ( !($x % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 
	$row_class = ( !($x % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

	$crown = '';
	if($x==1&&$stat_points>0)
	{
		$crown ='<img src="images/formel/goldpokal.gif" alt="1" title="1. Platz" /> ';
	}
	else if($x==2&&$stat_points>0)
	{
		$crown ='<img src="images/formel/silberpokal.gif" alt="2" title="2. Platz" /> ';
	}
	else if($x==3&&$stat_points>0)
	{
		$crown ='<img src="images/formel/bronzepokal.gif" alt="3" title="3. Platz" /> ';
	}
	
	$template->assign_block_vars('leaderboard', array(
	'ROW_COLOR' => '#' . $row_color, 
	'ROW_CLASS' => $row_class,
	'USERNAME' => '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&u=$stat_userid") . '" class="nav">' . $stat_username . '</a>',
	'POINTS' => number_format($stat_points,0, ",", "."),
	'PLAYED' => $stat_played,
	'AVERAGE' => $stat_avg,
	'POS' => '' . (($x < 4) ? $crown : $x),
	'CURRENT_GAME' => sprintf($lang['sudoku_current_game_text'], $stat_gamepack, $stat_gamenum),
	));
	$x++;
}
}
Danke schon mal :)
Benutzeravatar
killerbees19
Mitglied
Beiträge: 1185
Registriert: 09.05.2006 17:33
Wohnort: Wien (Österreich)
Kontaktdaten:

Beitrag von killerbees19 »

Hallo.

Hab das zwar nicht getestet, sollte aber funktionieren:

Code: Alles auswählen

// grab the top ten 
$sql=" SELECT * FROM " . SUDOKU_STATS . " 
WHERE points > 0 
ORDER BY points DESC LIMIT 10 
"; 
if ( !($result = $db->sql_query($sql)) ) 
{ 
   message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql); 
} 
$x=1; 
while ( $row=$db->sql_fetchrow($result) ) 
{ 
   $stat_points=$row['points']; 
   $stat_played=$row['played']; 
   $stat_userid=$row['user_id']; 
    
   $sql_a=" SELECT username FROM " . USERS_TABLE . " 
   WHERE user_id=" . $row['user_id']; 
   if ( !($result_a = $db->sql_query($sql_a)) ) 
   { 
      message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql_a); 
   } 
   $row_a=$db->sql_fetchrow($result_a); 
   $stat_username=$row_a['username']; 
   // grab current game 
   $sql_a=" SELECT game_pack, game_num FROM " . SUDOKU_USERS . " 
   WHERE user_id=" . $row['user_id'] . " 
   ORDER BY game_pack DESC, game_num DESC 
   LIMIT 1 
   "; 
   if ( !($result_a = $db->sql_query($sql_a)) ) 
   { 
      message_die(GENERAL_ERROR, 'Error in retrieving Sudoku userdata', '', __LINE__, __FILE__, $sql_a); 
   } 
   $row_a=$db->sql_fetchrow($result_a); 
   $stat_gamepack=$row_a['game_pack']; 
   $stat_gamenum=$row_a['game_num']; 
   $stat_avg = !$stat_played || !$stat_points ? 0 : round($stat_points / $stat_played, 0); 

   // send to template 
   $row_color = ( !($x % 2) ) ? $theme['td_color1'] : $theme['td_color2']; 
   $row_class = ( !($x % 2) ) ? $theme['td_class1'] : $theme['td_class2']; 
    
   // Veränderungen von killerbees19 
   // http://www.phpbb.de/viewtopic.php?t=152992 
   if($stat_points == $last['points']) 
   { 
       $rank = $last['rank']; 
   } 
   else 
   { 
       $rank = $x; 
       $last = array('points' => $stat_points, 'rank' => $x); 
   } 
    
   $crown = ''; 
   if($rank == 1) 
   { 
      $crown ='<img src="images/formel/goldpokal.gif" alt="1" title="1. Platz" /> '; 
   } 
   else if($rank == 2) 
   { 
      $crown ='<img src="images/formel/silberpokal.gif" alt="2" title="2. Platz" /> '; 
   } 
   else if($rank == 3) 
   { 
      $crown ='<img src="images/formel/bronzepokal.gif" alt="3" title="3. Platz" /> '; 
   } 
    
   $template->assign_block_vars('leaderboard', array( 
   'ROW_COLOR' => '#' . $row_color, 
   'ROW_CLASS' => $row_class, 
   'USERNAME' => '<a href="' . append_sid("profile.$phpEx?mode=viewprofile&u=$stat_userid") . '" class="nav">' . $stat_username . '</a>', 
   'POINTS' => number_format($stat_points,0, ",", "."), 
   'PLAYED' => $stat_played, 
   'AVERAGE' => $stat_avg, 
   'POS' => '' . (($rank < 4) ? $crown : $rank), 
   'CURRENT_GAME' => sprintf($lang['sudoku_current_game_text'], $stat_gamepack, $stat_gamenum), 
   )); 
   $x++; 
} 
}
EDIT: Kleine Änderung noch ;-)
EDIT2: Noch einen Fehler beseitigt ;-)


MfG Christian
» Real programmers don't comment. If it was hard to write, it should be hard to understand!
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Beitrag von Dungeonwatcher »

Hi! 8)

Perfekt. Dankeschön :)

Bye
Antworten

Zurück zu „Coding & Technik“