Autor Zpráva
BuGeR
Profil
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
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
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
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
To boužel nefunguje, neexistuje jinačí způsob?:)
saphire
Profil
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>";
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0