eT` Posted August 6, 2010 Report Share Posted August 6, 2010 (edited) 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 August 6, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
sheps Posted August 7, 2010 Report Share Posted August 7, 2010 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.. Quote Link to comment Share on other sites More sharing options...
eT` Posted August 7, 2010 Author Report Share Posted August 7, 2010 Piemērs ar 4 personām: 1. - 120 score - 1 pts - 1 vieta 2. - 110 score - 2 pts - 2 vieta 3. - 110 score - 2 pts - 2 vieta 4. - 90 score - 4 pts - 4 vieta Quote Link to comment Share on other sites More sharing options...
eT` Posted August 7, 2010 Author Report Share Posted August 7, 2010 nevermind izdevās salabot pašam. :) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.