Autor | Zpráva | ||
---|---|---|---|
BuGeR Profil |
#1 · Zasláno: 3. 4. 2010, 11:10:12
Zdravím.
Chtěl jsem se zeptat, mám tabulku users, vté sloupec "sila" a "zbran".. dále mam tabulku zbrane, a vte sloupec "id" a "sila". Pokud má uživatel vyplněnou hodnotu zbran, tak se vybere podle id ze sloupce zbraně a sila se přičte k síle. Např. Tabulka users Sila - 100 Zbran - 5 zbrane najde řádek podle ID 5 a stoho řádku si vytáhne sílu a následně ji přičte k uživateli. Takže např. Tabulka zbraně ID - 5 Sila - 50 Takže uživatel má dohromady 150 síly. Problém je nastáva ale vtom, když chci uživatele seřadit. Seřazuju je sice tak, že to zobrazí silu+silu od zbraně ale neseřazuje to podle té vysledne síly. Výsledek vypadá asi takto: User1 800 síly User2 300 síly User3 400 síly (např. 100 síly od uživatele + 300 síly od zbraně). Nevíte někdo, jak seřadit uživatele podle výsledne síly (normalní síla + síla od zbraně)? Fakt mě nic nenapadá.. Děkuji s pozdravem BuGeR:). |
||
Taps Profil |
#2 · Zasláno: 3. 4. 2010, 11:15:12 · Upravil/a: Taps
BuGeR:
„Výsledek vypadá asi takto:“ Výsledek vypadá asi takto: User1 800 síly User2 300 síly User3 400 síly (např. 100 síly od uživatele + 300 síly od zbraně). a jak má tedy výsledek vypadat ? Pokud máš nějaký sql dotaz tak ho sem napiš. |
||
BuGeR Profil |
#3 · Zasláno: 3. 4. 2010, 11:24:02
Takhle by měl vypadat:
User1 800 síly User2 400 síly User3 300 síly Dělam něco jako statistiky, kdo má nejvíce síly. SQL Dotaz vypada nějak takto : $sila=mysql_query("SELECT * FROM game_users WHERE 1 ORDER BY sila DESC LIMIT 5"); A vypisuji to: while($c=mysql_fetch_array($sila)) { $s=$c["sila"]; if($c["zbran"]!=0) { $zbran=mysql_fetch_array(mysql_query("SELECT * FROM game_zbrane WHERE id='".$c["zbran"]."'")); $s=$s+$zbran["sila"]; } $serad.="<tr><td>".uzivatel($c["user"])."</td><td>".$s." síly</td></tr>"; } |
||
Taps Profil |
#4 · Zasláno: 3. 4. 2010, 11:42:30
BuGeR:
a nešlo by to nějak takto $s=mysql_query("select *,(u.sila+z.sila) as hodnota from user as u,zbrane us z where u.zbran=z.id order by hodnota DESC LIMIT 5") |
||
BuGeR Profil |
#5 · Zasláno: 3. 4. 2010, 22:25:59
To boužel nefunguje, neexistuje jinačí způsob?:)
|
||
saphire Profil |
#6 · Zasláno: 4. 4. 2010, 00:01:41 · Upravil/a: saphire
BuGeR:
už to, že chceš seřazovat řetězec je nesmysl, řádek $serad.="<tr><td>".uzivatel($c["user"])."</td><td>".$s." síly</td></tr>"; nahraď tímto: $serad = array(); //vybrani uzevatelu a zbrani z db + secteni sil $serad[] = array('id' => $c['user'], 'sila' => $vysledna_sila; //uzavreni bloku } zavorkama ;] //potom seradis (u serazeni si nejsem jisty jesli bude fungovat) $nejvetsi_sila_id = 0; foreach($serad as $key=>$user) { if($user['sila'] > $serad[$nejvetsi_sila_id]['sila']) {//prohod, je li prave prochazena uzivatelova sila vetsi $prom = $serad[$key]; $serad[$key] = $serad[$nejvetsi_sila_id]; $serad[$nejvetsi_sila_id] = $prom $nejvetsi_sila_id = $key; } } //potom vypises foreach($serad as $user) { echo "<tr><td>".uzivatel($user['id'])."</td><td>".$user['sila']." síly</td></tr>"; } |
||
Časová prodleva: 16 let
|
0