Jump to content
php.lv forumi

sporta spēļu tabula.


eT`

Recommended Posts

Man palūdza uztaisīt sporta spēļu tabulu.

Viss jau ir ok, un visu izdevās uztaisīt, BET ir viena lieta.

Man koda ir update f-ja, kas atjauno lietotāju punktus un ieņemto vietu.

Pasūtītājs vēlējās, lai ir tā, ka ja

ir 4 lietotāji

punkti attiecīgi piemēram - 220,210,210,190

redzam, ka 2. un 3. vietai ir vienāds rezultāts.

abi tiek ierindoti 2. vietā, BET lietotājs ar 190pts. ir nevis 3. vietā bet 4. [ it kā tiem abiem, kas bija 2. vietā ir dalīta 2/3 ]

 

update kods ar komentāriem:

<?
function update($nosaukums)
{
if($nosaukums == 'sausana' || $nosaukums == 'sautrinas' || $nosaukums == 'sodini')
{
//individualajiem vajag lai paceljas par 1pts.
$seciba = 'DESC';
$sk = 1;
}
else
{
//komandu sportiem vajag lai paceljas par 3pts.
$seciba = 'ASC'; // komandu sportiem pie pievienoshanas vada vietu tapec vajag lai izvada pec vietas pieaugosa seciba
$sk = 3;
}
$starpiba = 0; // sisteema kjipa, lai ja ir 1 vieta, 2 vieta, 2 vieta tad nakosam ir nevis 3., bet 4. [ kjipa intervals ]
$i = 1; // skaitisanas sakuma vertiba [ protams 1. vieta ;] ]
$temp = 0; // mainigais, kur glabat score [ lai zinatu vai ir tads pats ka ieprieksejais rezultats
$sql = mysql_query("SELECT * FROM `$nosaukums` ORDER BY `score` ".$seciba."");
while($row = mysql_fetch_array($sql)) {
	if($temp != $row["score"]) // ja nakamais nav vienads ar ieprieksejo
	{
	mysql_query("UPDATE `$nosaukums` SET `points` = $i, `place` = $i WHERE `user_id` = {$row["user_id"]}"); // ieliek $i veertiibu
	$i = $i + $sk + $starpiba; // saskaita kada vieta bus nakamajam rezultatam [ gadijuma ja nebus vienads ar ieprieksejo ]
	$temp = $row["score"]; // saglaba score temp
	$starpiba = 0; // karoch ja ir 1.2.2. un tad 4. vieta tad intervalu atkal vajag uz 0 jo notiek izmainjas un intervals tiek pielietots
	}
	else // ja nakamais ir vienads ar ieprieksejo
	{
               $i = $i - $sk; // atnjem no ieprieksejas $i vertibas, jo ir vienadi rezulati.
	$starpiba = $starpiba + 1; // pieskaita starpibai 1, jo ja nakamais nebus vienads vins nokritisies nevis par vienu bet par 2 vietam
	mysql_query("UPDATE `$nosaukums` SET `points` = $i - 1, `place` = $i - 1 WHERE `user_id` = {$row["user_id"]}");
	$temp = $row["score"]; // saglaba atkal score mainigaja nakamajam ciklam
	}
}
}
?>

 

bet nestrādā.

man ieliek 1. vietu divas 2. vietas un trešo nevis ceturto.

ks tur varētu būt nepareizi?

Edited by eT`
Link to comment
Share on other sites

baigi sarežģījis visu esi.. krietni vienkāršāk var samontēt.. un kas tev UPDATE ir points? jauna vērtība ko piešķir vai kkādi iegūtīe rezultāti?

 

tjipa pirmaa vieta peec score iegūst ko? plus 3 punktus vai vnk 3 punktus..

 

a ja gribi vietas atstaat kā ir tam izmantot vajag neitrālu mainīgo.. piem:

$vieta = 0;
$testapunkti = 0;

$sql = mysql_query("SELECT * FROM `tabula` ORDER BY `score` DESC ");
while($row = mysql_fetch_array($sql)) {
$vieta = $vieta + 1;//kā redzi vieta paliek 1,2,3 utt..

$updateVieta = $vieta;

if($testapunkti == $row['score']){
$updateVieta = $vieta - 1; ja, vienāds ar iepriekšējo..
}
$testapunkti == $row['score'];
//darbiibas taalaak..

}

 

kā minēju bik sarežģījis kko esi.. un bik nesaprotami..

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...