[PHP][Help] Ranking Page

Socius Decennalis
Decennium
Joined
Aug 15, 2008
Messages
489
Reaction score
43
Hello.

I've been working for a while for a ranking page, but I'll need some help with it.

So, this is what I would like to do.

if ($job=="10")
{
echo "RingMaster";
}

So if the number is 10, it will be RingMaster.

I just dont know what is wrong in that, and how to fix it. I also would like to make it so I can have more than only one of them, but I think I can do it with the elseif () ?
 
if you want to output different names based on a numer try using a "switch"

PHP:
<?php
switch ($job) {
	case 10: 
		echo 'Ringmaster'
		break;
	case 11:
		echo 'Something else';
		break;
	case 12:
		echo 'Something else again';
		break;
}
?>
 
Last edited:
if you want to output different names based on a numer try using a "switch"

PHP:
<?php
switch ($job) {
	case 10: 
		echo 'Ringmaster'
		break;
	case 11:
		echo 'Something else';
		break;
	case 12:
		echo 'Something else again';
		break;
}
?>

That doesnt seem to work for me.

Code:
<?php
switch ($job) {
    case 0: 
        echo 'Vagrant';
        break;
    case 1:
        echo 'Mercenary';
        break;
    case 2:
        echo 'Acrobat';
        break;
    case 3:
        echo 'Assist';
	break;
    case 4:
	echo 'Magician';
	break;
    case 6:
	echo 'Knight';
	break;
     case 7:
	echo 'Blade';
	break;
     case 8:
	echo 'Jester';
	break;
     case 9:
	echo 'Ranger';
	break;
     case 10:
	echo 'RingMaster';
	break;
     case 11:
	echo 'BillPoster';
	break;
     case 12:
	echo 'Psykeeper';
	break;
     case 13:
	echo 'Elementor';
	break;
}
?>
Thats how it looks right now.
 
Last edited:
Its looks fine.. just check the value $job contains right before using the switch. if it doesn't contain any numeric values you should check your code and see where it goes wrong.
 
Its looks fine.. just check the value $job contains right before using the switch. if it doesn't contain any numeric values you should check your code and see where it goes wrong.

The job has only numeric values from 0 to 13.

Anyway, heres the whole script. Maybe you'll find reason from it?
Code:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

$extract = mysql_query("SELECT * FROM characters ORDER BY level ASC");
$numrows = mysql_num_rows($extract);

 switch ($job) {
    case 1:
        echo 'Mercenary';
        break;
    case 2:
        echo 'Acrobat';
        break;
	case 3:
		echo 'Assist';
		break;
	case 4:
		echo 'Magician';
		break;
	case 6:
		echo 'Knight';
		break;
	case 7:
		echo 'Blade';
		break;
	case 8:
		echo 'Jester';
		break;
	case 9:
		echo 'Ranger';
		break;
	case 10:
		echo 'RingMaster';
		break;
	case 11:
		echo 'BillPoster';
		break;
	case 12:
		echo 'Psykeeper';
		break;
	case 13:
		echo 'Elementor';
		break;
}

while ($row = mysql_fetch_assoc($extract))
{
	$id =	$row['id'];
	$name = $row['name'];
	$job =	$row['job'];
	$level = $row['level'];
	$gender = $row['gender'];
	$money = $row['money'];
	
	echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}

?>
 
Try This

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function($job) {
	switch ($job) {
	    case 1:
	        echo 'Mercenary';
	        break;
	    case 2:
	        echo 'Acrobat';
	        break;
		case 3:
			echo 'Assist';
			break;
		case 4:
			echo 'Magician';
			break;
		case 6:
			echo 'Knight';
			break;
		case 7:
			echo 'Blade';
			break;
		case 8:
			echo 'Jester';
			break;
		case 9:
			echo 'Ranger';
			break;
		case 10:
			echo 'RingMaster';
			break;
		case 11:
			echo 'BillPoster';
			break;
		case 12:
			echo 'Psykeeper';
			break;
		case 13:
			echo 'Elementor';
			break;
	}
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

	$id =	$row['id'];
	$name = $row['name'];
	$job =	job($row['job']);
	$level = $row['level'];
	$gender = $row['gender'];
	$money = $row['money'];
	
	echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>
 
Try This

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function($job) {
	switch ($job) {
	    case 1:
	        echo 'Mercenary';
	        break;
	    case 2:
	        echo 'Acrobat';
	        break;
		case 3:
			echo 'Assist';
			break;
		case 4:
			echo 'Magician';
			break;
		case 6:
			echo 'Knight';
			break;
		case 7:
			echo 'Blade';
			break;
		case 8:
			echo 'Jester';
			break;
		case 9:
			echo 'Ranger';
			break;
		case 10:
			echo 'RingMaster';
			break;
		case 11:
			echo 'BillPoster';
			break;
		case 12:
			echo 'Psykeeper';
			break;
		case 13:
			echo 'Elementor';
			break;
	}
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

	$id =	$row['id'];
	$name = $row['name'];
	$job =	job($row['job']);
	$level = $row['level'];
	$gender = $row['gender'];
	$money = $row['money'];
	
	echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>

Parse error: syntax error, unexpected '(', expecting T_STRING in C:\WWW\ranking3.php on line 7

What may it be?
 
I forgot to add the name of the function..

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            echo 'Mercenary';
            break;
        case 2:
            echo 'Acrobat';
            break;
        case 3:
            echo 'Assist';
            break;
        case 4:
            echo 'Magician';
            break;
        case 6:
            echo 'Knight';
            break;
        case 7:
            echo 'Blade';
            break;
        case 8:
            echo 'Jester';
            break;
        case 9:
            echo 'Ranger';
            break;
        case 10:
            echo 'RingMaster';
            break;
        case 11:
            echo 'BillPoster';
            break;
        case 12:
            echo 'Psykeeper';
            break;
        case 13:
            echo 'Elementor';
            break;
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>
 
I forgot to add the name of the function..

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            echo 'Mercenary';
            break;
        case 2:
            echo 'Acrobat';
            break;
        case 3:
            echo 'Assist';
            break;
        case 4:
            echo 'Magician';
            break;
        case 6:
            echo 'Knight';
            break;
        case 7:
            echo 'Blade';
            break;
        case 8:
            echo 'Jester';
            break;
        case 9:
            echo 'Ranger';
            break;
        case 10:
            echo 'RingMaster';
            break;
        case 11:
            echo 'BillPoster';
            break;
        case 12:
            echo 'Psykeeper';
            break;
        case 13:
            echo 'Elementor';
            break;
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>

Instead of echoing the job when you check it, why not assign a variable?

Then at the end of the checking, you can echo it out.
 
I forgot to add the name of the function..

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            echo 'Mercenary';
            break;
        case 2:
            echo 'Acrobat';
            break;
        case 3:
            echo 'Assist';
            break;
        case 4:
            echo 'Magician';
            break;
        case 6:
            echo 'Knight';
            break;
        case 7:
            echo 'Blade';
            break;
        case 8:
            echo 'Jester';
            break;
        case 9:
            echo 'Ranger';
            break;
        case 10:
            echo 'RingMaster';
            break;
        case 11:
            echo 'BillPoster';
            break;
        case 12:
            echo 'Psykeeper';
            break;
        case 13:
            echo 'Elementor';
            break;
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>

Thanks. It works now.

Only problem is that it shows it like this:
RingMasterName: Music | Job: | Level: 80 | Gender: 0 | Penya: 500000946

But I guess I am going to change it to show it as job, name, level, gender, penya, so it'll be fine like that.

But there is still one thing. It shows the hihest level player on bottom, but I would like it to show it on top.
 
Thanks. It works now.

Only problem is that it shows it like this:
RingMasterName: Music | Job: | Level: 80 | Gender: 0 | Penya: 500000946

But I guess I am going to change it to show it as job, name, level, gender, penya, so it'll be fine like that.

But there is still one thing. It shows the hihest level player on bottom, but I would like it to show it on top.

If you are using a mysql script, change it to ORDER BY level DESC
 
sry about all these stupid mistakes just didn't had enough sleep lol

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            $jb = 'Mercenary';
            break;
        case 2:
            $jb = 'Acrobat';
            break;
        case 3:
            $jb = 'Assist';
            break;
        case 4:
            $jb = 'Magician';
            break;
        case 6:
            $jb = 'Knight';
            break;
        case 7:
            $jb = 'Blade';
            break;
        case 8:
            $jb = 'Jester';
            break;
        case 9:
            $jb = 'Ranger';
            break;
        case 10:
            $jb = 'RingMaster';
            break;
        case 11:
            $jb = 'BillPoster';
            break;
        case 12:
            $jb = 'Psykeeper';
            break;
        case 13:
            $jb = 'Elementor';
            break;
        return($jb);
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>
 
sry about all these stupid mistakes just didn't had enough sleep lol

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            $jb = 'Mercenary';
            break;
        case 2:
            $jb = 'Acrobat';
            break;
        case 3:
            $jb = 'Assist';
            break;
        case 4:
            $jb = 'Magician';
            break;
        case 6:
            $jb = 'Knight';
            break;
        case 7:
            $jb = 'Blade';
            break;
        case 8:
            $jb = 'Jester';
            break;
        case 9:
            $jb = 'Ranger';
            break;
        case 10:
            $jb = 'RingMaster';
            break;
        case 11:
            $jb = 'BillPoster';
            break;
        case 12:
            $jb = 'Psykeeper';
            break;
        case 13:
            $jb = 'Elementor';
            break;
        return($jb);
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level ASC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "Name: $name | Job: $job | Level: $level | Gender: $gender | Penya: $money<br>";
}
?>

ASC orders numbers from lowest to highest
he needs DESC.
 
Hello guys,
Even though this problem is solved, please take a look at the OOPHP5 way of doing this solution, I'd recommend coding games in OOP, I'm currently developing a game also, check my introduction topic to see more of it.

PHP:
<?php

	class Ranking
	{
		#instance variables here =]
		protected $connection;
		protected static $jobs = array(1 => "Mercenary", 2 => "Acrobat", 3 => "Assist", 4 => "Magician",
								6 => "Knight", 7 => "Blade", 8 => "Jester", 9 => "Ranger", 
								10 => "RingMaster", 11 => "BillPoster", 12 => "Psykeeper", 
								13 => "Elementor");
		
		public function __construct()
		{
			#lets create the connection stream =]
			$this->connection=new MySQLi("localhost", "username", "password", "database");
		}
		
		public function __destruct()
		{
			#close the connection as we're no longer using it ;)
			$this->connection->close();	
		}
		
		protected function FindJob($jobId)
		{
			#has the value been pre-stored in the array? o_O
			if(array_key_exists((int)$jobId, (array)self::$jobs))
			{
				return (string)self::$jobs[$jobId];
			}
		}
		
		public function DisplayStats()
		{
			#lets assign the query to a variable
			$sql="SELECT * FROM characters ORDER BY level DESC";
			$query=$this->connection->query($sql);
			
			#has the query got any rows? o_O
			if($query->num_rows > 0)
			{
				#loop out teh results
				while($sqlData=$query->fetch_array(MYSQL_ASSOC))
				{
					#print the results, no need to use more memory by adding them
					#into seperate variable ;)
					echo "Name: ".$sqlData["name"]." | Job: ".$this->FindJob($sqlData["job"]).
							" | Level: ".$sqlData["level"]." | Gender: ".$sqlData["gender"].
							" | Penya: ".$sqlData["money"]."<br />\n"; 
				}
				#free the query up from memory =]
				$query->free();
			}
		}
	}

?>
<?

	#lets do the magic
	$ranking=new Ranking();
	$ranking->DisplayStats();

?>

I'm new here, hope this helps,
Shaun
 
Hello guys,
Even though this problem is solved, please take a look at the OOPHP5 way of doing this solution, I'd recommend coding games in OOP, I'm currently developing a game also, check my introduction topic to see more of it.

PHP:
<?php

	class Ranking
	{
		#instance variables here =]
		protected $connection;
		protected static $jobs = array(1 => "Mercenary", 2 => "Acrobat", 3 => "Assist", 4 => "Magician",
								6 => "Knight", 7 => "Blade", 8 => "Jester", 9 => "Ranger", 
								10 => "RingMaster", 11 => "BillPoster", 12 => "Psykeeper", 
								13 => "Elementor");
		
		public function __construct()
		{
			#lets create the connection stream =]
			$this->connection=new MySQLi("localhost", "username", "password", "database");
		}
		
		public function __destruct()
		{
			#close the connection as we're no longer using it ;)
			$this->connection->close();	
		}
		
		protected function FindJob($jobId)
		{
			#has the value been pre-stored in the array? o_O
			if(array_key_exists((int)$jobId, (array)self::$jobs))
			{
				return (string)self::$jobs[$jobId];
			}
		}
		
		public function DisplayStats()
		{
			#lets assign the query to a variable
			$sql="SELECT * FROM characters ORDER BY level DESC";
			$query=$this->connection->query($sql);
			
			#has the query got any rows? o_O
			if($query->num_rows > 0)
			{
				#loop out teh results
				while($sqlData=$query->fetch_array(MYSQL_ASSOC))
				{
					#print the results, no need to use more memory by adding them
					#into seperate variable ;)
					echo "Name: ".$sqlData["name"]." | Job: ".$this->FindJob($sqlData["job"]).
							" | Level: ".$sqlData["level"]." | Gender: ".$sqlData["gender"].
							" | Penya: ".$sqlData["money"]."<br />\n"; 
				}
				#free the query up from memory =]
				$query->free();
			}
		}
	}

?>
<?

	#lets do the magic
	$ranking=new Ranking();
	$ranking->DisplayStats();

?>

I'm new here, hope this helps,
Shaun

Well I dont know what is OOPHP5. I'll prob read more about it later.

So for now, I would need some help again with this.

Code:
   <?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            $jb = 'Mercenary';
            break;
        case 2:
            $jb = 'Acrobat';
            break;
        case 3:
            $jb = 'Assist';
            break;
        case 4:
            $jb = 'Magician';
            break;
        case 6:
            $jb = 'Knight';
            break;
        case 7:
            $jb = 'Blade';
            break;
        case 8:
            $jb = 'Jester';
            break;
        case 9:
            $jb = 'Ranger';
            break;
        case 10:
            $jb = 'RingMaster';
            break;
        case 11:
            $jb = 'BillPoster';
            break;
        case 12:
            $jb = 'Psykeeper';
            break;
        case 13:
            $jb = 'Elementor';
            break;
        return($jb);
    }
}

$query = mysql_query("SELECT * FROM characters ORDER BY level DESC");

while ($row = mysql_fetch_array($query)) {

    $id =    $row['id'];
    $name = $row['name'];
    $job =    job($row['job']);
    $level = $row['level'];
    $gender = $row['gender'];
    $money = $row['money'];
    
    echo "$job | $name | $level";
}
?>
This is how the script looks right now, but I dont really like it how it lookss.

Whatever I try to do, I do not get it to show it in order by Name, Job, Level.

I did try to change the ending to echo "$name | $job | $level"; but it just wont work, it still shows them order by job first.

Also, when theres alot of characters, it looks really messy, so how would it be possible to get it into a table?

|--------------------------------------|
| Name | Job | Level | Penya|
|--------------------------------------|
| Char | Job | Level | Penya |

And so on, hundreds of players on it. It would make it easier to read.
 
Hello,
This is a quick put together from me, untested but should work, if not you can see how to output results from the datasource into a table. Hope I've been of some help to you with the following solution:

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            $jb = 'Mercenary';
            break;
        case 2:
            $jb = 'Acrobat';
            break;
        case 3:
            $jb = 'Assist';
            break;
        case 4:
            $jb = 'Magician';
            break;
        case 6:
            $jb = 'Knight';
            break;
        case 7:
            $jb = 'Blade';
            break;
        case 8:
            $jb = 'Jester';
            break;
        case 9:
            $jb = 'Ranger';
            break;
        case 10:
            $jb = 'RingMaster';
            break;
        case 11:
            $jb = 'BillPoster';
            break;
        case 12:
            $jb = 'Psykeeper';
            break;
        case 13:
            $jb = 'Elementor';
            break;
        return($jb);
    }
}

# make sure that if you do want to alter them the way they're ordered use the ASC or DESC
$query = mysql_query("SELECT `id`, `name`, `job`, `level`, `gender`, `money` FROM `characters` ORDER BY `name`, `job`,`level` ASC");

if(mysql_num_rows($query) > 0) {
	# here we start the table...
	echo "<table>\n";
	while ($row = mysql_fetch_array($query)) {
	
		$id =    $row['id'];
		$name = $row['name'];
		$job =    job($row['job']);
		$level = $row['level'];
		$gender = $row['gender'];
		$money = $row['money'];
		
		# we print results out in the table tags...
		echo "<tr>\n";
		echo "\t\t<td>$job</td><td>$name</td><td>$level</td>\n";
		echo "</tr>\n";
	}
	# here we end the table
	echo "</table>";
}
?>

Also take a look into styling languages such as css for the table.

for example:

Code:
table 
{
	vertical-align:top;
	text-align:left;
	border:0;
}

Out of interest may I see what game you're developing? I maybe interested in helping out. I take a huge interest in browser based mmorpg's :laugh:

Thanks,
Shaun
 
Hello,
This is a quick put together from me, untested but should work, if not you can see how to output results from the datasource into a table. Hope I've been of some help to you with the following solution:

PHP:
<?php
//Script made by Aitsihia.

mysql_connect("-","-","-") or die(mysql_error());
mysql_select_db("-") or die(mysql_error());

function job($job) {
    switch ($job) {
        case 1:
            $jb = 'Mercenary';
            break;
        case 2:
            $jb = 'Acrobat';
            break;
        case 3:
            $jb = 'Assist';
            break;
        case 4:
            $jb = 'Magician';
            break;
        case 6:
            $jb = 'Knight';
            break;
        case 7:
            $jb = 'Blade';
            break;
        case 8:
            $jb = 'Jester';
            break;
        case 9:
            $jb = 'Ranger';
            break;
        case 10:
            $jb = 'RingMaster';
            break;
        case 11:
            $jb = 'BillPoster';
            break;
        case 12:
            $jb = 'Psykeeper';
            break;
        case 13:
            $jb = 'Elementor';
            break;
        return($jb);
    }
}

# make sure that if you do want to alter them the way they're ordered use the ASC or DESC
$query = mysql_query("SELECT `id`, `name`, `job`, `level`, `gender`, `money` FROM `characters` ORDER BY `name`, `job`,`level` ASC");

if(mysql_num_rows($query) > 0) {
	# here we start the table...
	echo "<table>\n";
	while ($row = mysql_fetch_array($query)) {
	
		$id =    $row['id'];
		$name = $row['name'];
		$job =    job($row['job']);
		$level = $row['level'];
		$gender = $row['gender'];
		$money = $row['money'];
		
		# we print results out in the table tags...
		echo "<tr>\n";
		echo "\t\t<td>$job</td><td>$name</td><td>$level</td>\n";
		echo "</tr>\n";
	}
	# here we end the table
	echo "</table>";
}
?>

Also take a look into styling languages such as css for the table.

for example:

Code:
table 
{
	vertical-align:top;
	text-align:left;
	border:0;
}

Out of interest may I see what game you're developing? I maybe interested in helping out. I take a huge interest in browser based mmorpg's :laugh:

Thanks,
Shaun

This seems like not to work correcly. Problems I have with this script is that I wont see the Job names, and neither I can see the Table, which is not that big problem since it seems to be a bit more clear than the old one.

It would also be nice if the table could be visible.
 
Back