Sunriset Ierakstīts Oktobris 14, 2015 Share Ierakstīts Oktobris 14, 2015 (labots) Labdien, esmu izveidojis sekojošu funckiju, kas nosaka spēlētāja auģsup,lejup slīdi rankā ir tabula, kurā glabājas spēlētāja niks, līmenis uc atribūti, reizi nedēļa no šīs tabulas iekš citas tabulas izkopējas spēlētāja niks un vietā rankā Pēc tam salīdzinu, par cik cēlies vai krities spēlētājs topā. Man būtu vajadzīgs noskaidrot kurš spēlētājs ir visaugstāk pakāpies topā, kā to vislabāk panākt? Pašlaik koda daļa, kas nosaka par cik krities, cēlies spēlētājs topā izskatās apmēram šādi: $get_data = mssql_query("SELECT TOP 50 name,level FROM players ORDER BY level desc"); while($row = mssql_fetch_array($get_data)){ ++$vietatopa; //Changes in top $CINTOP = mssql_query("SELECT name,rank FROM DUPLICATE_RANK where Name = '".$row[0]."'"); $CINTOP = mssql_fetch_row($CINTOP); if ($CINTOP['1'] == $vietatopa){ echo ""; } elseif ($CINTOP['1'] > $vietatopa){ $parcik=$CINTOP['1']-$vietatopa; echo "<a href=\"\" onmouseover=\"Tip('+".$parcik."',OPACITY, 50)\" onmouseout=\"UnTip()\" ><img src='images/icons/arrow-up.gif'/></a>"; } elseif ($CINTOP['1'] < $vietatopa){ $parcik=$vietatopa-$CINTOP['1']; echo "<a href=\"\" onmouseover=\"Tip('-".$parcik."',OPACITY, 50)\" onmouseout=\"UnTip()\" ><img src='images/icons/arrow-down.gif'/></a>"; } else { echo "ERROR"; } // } Paldies jau iepriekš Labots Oktobris 14, 2015 - Sunriset Link to comment Share on other sites More sharing options...
Guest Oktobris 14, 2015 Share Oktobris 14, 2015 pieglabā masīvā player => diff, sakārto dilstoši un izvadi pirmo. bet nu pa lielam šausmas esi uzrakstijis. Tev taisa atsevišķu kveriju katram spēlētājam while loopā, kas ir liels no no, to var nooptimizēt un jau pie $get_data ar 1 kveriju dabūt pašreizējo pozīciju, veco un visu pārējo, ko vajag ar JOIN un pēc tam manipilēt ar datiem php pusē- pārkārtot pēc lielākā kāpuma, dabūt diffu katram spēlētājam utt. 1 Link to comment Share on other sites More sharing options...
EmilsM Oktobris 14, 2015 Share Oktobris 14, 2015 tas kods tiešām ir šausmas... Link to comment Share on other sites More sharing options...
DjUbuntu Oktobris 14, 2015 Share Oktobris 14, 2015 nu tātad pamatskolā nemācījos gramatiku un tāpēc šādi ķēmojos man te uz iphone naw sql server, bet man informaatikas skolotaajs maaciija, ka vajadzeetu dariit kaut kaa taa :> SELECT TOP 1 ROW_NUMBER() OVER (ORDER BY p.level DESC) AS current_rank, p.name, d.rank as old_rank, (current_rank - old_rank) AS rank_delta FROM players p INNER JOIN duplicate_rank d ON d.name = p.name ORDER BY rank_delta DESC Link to comment Share on other sites More sharing options...
Sunriset Oktobris 15, 2015 Author Share Oktobris 15, 2015 Liels paldies par Jūsu padomiem, un ieteikumiem, tieši tādēļ es esmu šeit, lai uzzinātu ko jaunu un uz priekšu nepieļaut tādas ķļūdas. Mēģināju DjUbuntu ieteikto variantu, bet man atgriež kļūdu mssql_query() [function.mssql-query]: message: 'ROW_NUMBER' is not a recognized function name. (severity 15) Pētīju vēl dažādus variantus internetā par ROW_NUMBER, bet īsti pie skaidrības netiku Link to comment Share on other sites More sharing options...
DjUbuntu Oktobris 15, 2015 Share Oktobris 15, 2015 kurš SQL serveris tew tur ira ? Vajag vismaz 2008, savaadaak nekas nejiet!!! Link to comment Share on other sites More sharing options...
Sunriset Oktobris 15, 2015 Author Share Oktobris 15, 2015 Dzīvoju vēsturē 2000 sql, vai ir iespējami kādi varianti uz šo versiju? ar laiku ir doma pāriet uz jaunāku sql, bet pagaidām nav resursu uz kā uzlikt jaunāku Link to comment Share on other sites More sharing options...
Sunriset Novembris 5, 2015 Author Share Novembris 5, 2015 Jautājums vēl aktuāls, vai ir vēl kāds risinajums, paldies par Jūsu ieteikumiem jau iepriekš Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!