Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  5 613
Hei!
Jeg er ganske fersk i PHP/programmerings verdenen, men jeg har klart å få til et lite rapport-script (Ikke CS nei, heller TO :P). Problemet er at jeg har et stats-script som jeg vil ha autorankert. (høyeste damagescore til laveste.)
Dette er også det første større scriptet mitt. Jeg har også laget andre deler, men de funker så jeg tar de ikke med her. :P

Jeg har klart å skille ut gull og sølv sånn her(tror jeg :P):
Først regne ut de totale verdiene.

Kode

//***** Damage
$dmg1 = $_POST['dam11'] + $_POST['dam21'] + $_POST['dam31'] + $_POST['dam41'];
$dmg2 = $_POST['dam12'] + $_POST['dam22'] + $_POST['dam32'] + $_POST['dam42'];
$dmg3 = $_POST['dam13'] + $_POST['dam23'] + $_POST['dam33'] + $_POST['dam43'];
$dmg4 = $_POST['dam14'] + $_POST['dam24'] + $_POST['dam34'] + $_POST['dam44'];
$dmg5 = $_POST['dam15'] + $_POST['dam25'] + $_POST['dam35'] + $_POST['dam45'];
$dmg6 = $_POST['dam16'] + $_POST['dam26'] + $_POST['dam36'] + $_POST['dam46'];
//***** Frags
$frg1 = $_POST['frag11'] + $_POST['frag21'] + $_POST['frag31'] + $_POST['frag41'];
$frg2 = $_POST['frag12'] + $_POST['frag22'] + $_POST['frag32'] + $_POST['frag42'];
$frg3 = $_POST['frag13'] + $_POST['frag23'] + $_POST['frag33'] + $_POST['frag43'];
$frg4 = $_POST['frag14'] + $_POST['frag24'] + $_POST['frag34'] + $_POST['frag44'];
$frg5 = $_POST['frag15'] + $_POST['frag25'] + $_POST['frag35'] + $_POST['frag45'];
$frg6 = $_POST['frag16'] + $_POST['frag26'] + $_POST['frag36'] + $_POST['frag46'];
//***** Deaths
$dth1 = $_POST['death11'] + $_POST['death21'] + $_POST['death31'] + $_POST['death41'];
$dth2 = $_POST['death12'] + $_POST['death22'] + $_POST['death32'] + $_POST['death42'];
$dth3 = $_POST['death13'] + $_POST['death23'] + $_POST['death33'] + $_POST['death43'];
$dth4 = $_POST['death14'] + $_POST['death24'] + $_POST['death34'] + $_POST['death44'];
$dth5 = $_POST['death15'] + $_POST['death25'] + $_POST['death35'] + $_POST['death45'];
$dth6 = $_POST['death16'] + $_POST['death26'] + $_POST['death36'] + $_POST['death46'];
//***** Samt lage Output'en:
$player1Score = "$dmg1 --- $frg1 --- $dth1";
$player2Score = "$dmg2 --- $frg2 --- $dth2";
$player3Score = "$dmg3 --- $frg3 --- $dth3";
$player4Score = "$dmg4 --- $frg4 --- $dth4";
$player5Score = "$dmg5 --- $frg5 --- $dth5";
$player6Score = "$dmg6 --- $frg6 --- $dth6";
Og så med if'er sortere gull-plassen:

Kode

if( ($dmg1 > $dmg2) && ($dmg1 > $dmg3) && ($dmg1 > $dmg4) && ($dmg1 > $dmg5) && ($dmg1 > $dmg6) ) {
	$gold = "$player1Score";
}
 elseif( ($dmg2 > $dmg1) && ($dmg2 > $dmg3) && ($dmg2 > $dmg4) && ($dmg2 > $dmg5) && ($dmg2 > $dmg6) ) {
	$gold = "$player2Score";
}
 elseif( ($dmg3 > $dmg1) && ($dmg3 > $dmg2) && ($dmg3 > $dmg4) && ($dmg3 > $dmg5) && ($dmg3 > $dmg6) ) {
	$gold = "$player3Score";
}
 elseif( ($dmg4 > $dmg1) && ($dmg4 > $dmg2) && ($dmg4 > $dmg3) && ($dmg4 > $dmg5) && ($dmg4 > $dmg6) ) {
	$gold = "$player4Score";
}
 elseif( ($dmg5 > $dmg1) && ($dmg5 > $dmg2) && ($dmg5 > $dmg3) && ($dmg5 > $dmg4) && ($dmg5 > $dmg3) ) {
	$gold = "$player5Score";
}
 elseif( ($dmg6 > $dmg1) && ($dmg6 > $dmg2) && ($dmg6 > $dmg3) && ($dmg6 > $dmg4) && ($dmg6 > $dmg5) ) {
	$gold = "$player6Score";
}
 else {
	$gold = "ERROR: Please add names manually.";
}
(Vet ikke hva jeg skal gjøre for å ordne så $gold blir til "$player1Score and $player2Score"; hvis player1 og 2 får like mye damage, men det trenger jeg heller ikke, er ikke så stor sjanse for at det skjer. )

Sølv plassen har jeg gjort sånn her, er ikke sikker på om det funker for jeg har ikke hatt tid til å teste :

Kode

if($gold == $player1Score) {
  if( ($dmg2 > $dmg3) && ($dmg2 > $dmg4) && ($dmg2 > $dmg5) && ($dmg2 > $dmg6) ) {
	$silver = "$player2Score";
  }
   elseif( ($dmg3 > $dmg2) && ($dmg3 > $dmg4) && ($dmg3 > $dmg5) && ($dmg3 > $dmg6) ) {
	$silver = "$player3Score";
  }
   elseif( ($dmg4 > $dmg2) && ($dmg4 > $dmg3) && ($dmg4 > $dmg5) && ($dmg4 > $dmg6) ) {
	$silver = "$player4Score";
  }
   elseif( ($dmg5 > $dmg2) && ($dmg5 > $dmg3) && ($dmg5 > $dmg4) && ($dmg5 > $dmg3) ) {
	$silver = "$player5Score";
  }
   elseif( ($dmg6 > $dmg2) && ($dmg6 > $dmg3) && ($dmg6 > $dmg4) && ($dmg6 > $dmg5) ) {
	$silver = "$player6Score";
  }
   else {
	$silver = "ERROR: Please add names manually.";
 }
}

// Osv med "if($gold == $player2Score) {....."

Så spørsmålet mitt er om jeg skal sortere de neste plassene (6totalt) på samme måte..
(med: if( ($gold == $player1Score) && $silver == $player1Score) ) {....)
Sier seg selv at det blir jævla mange linjer, så jeg lurer på om det er noen enklere måte?
Også hvis det er en enklere måte å sortere gull/sølv på er jeg også interessert i å vite det.

Tusen takk på forhånd for svar!
Mvh Rune
Jeg vet ikke helt om jeg har forstått opplegget skikkelig, men ville det ikke vært mye enkere å bare tatt alle scorene og sortert alle scorene slik at den med mest i score vil starte først og deretter jobbe seg videre. Det du da gjør er bare å liste opp de 3 første som vil være gull, sølv og bronsje?
Trådstarter
3 0
Jo, det ville det sikkert.
Men saken er at jeg ikke har kommet på noen annen måte å gjøre det på enn denne.

Har du noen tips vil jeg gjerne høre dem.
Du kan enkelt skrive deg selv en funksjon som sorterer tall. Men, siden du nå holder på med så har php en funksjon som sorterer et array med produkt laveste tall til høyeste. Du lagrer alle verdiene dine i arrayet og kjører funksjonen sort på den. Deretter spytter du ut arrayet og ser på de tre første verdiene som da vil være vinnerene.

http://no.php.net/sort
Trådstarter
3 0
Kunne du gi et eksempel på hvordan?
Skjønte ikke stort av det for å være ærlig.

Kode

$sortDmgValues = array($dmg1, $dmg2, $dmg3, $dmg4, $dmg5, $dmg6);
sort_numeric($sortDmgValues);
det jeg fikk til.. men jeg får ikke noe ut av det :P

takk for svar forresten
Sist endret av rune; 23. februar 2005 kl. 00:38.
utenfor ditt vindu
larsforstyrret's Avatar
Du kan for eksempel (hvis jeg forstår det rett) gjøre slik:
$ja = sort_numeric($sortDmgValues); og så echoe ut ja.
eller du kan bare: echo sort_numeric($sortDmgValues);