Autor Zpráva
pito
Profil
Zdravím,

Potřebovál bych udělat toto,ale nevím jak na to.Když se uživatel přihlásí má tam potom na levé stráně svoje menu.Na začátku toho menu je jeho nick a já bych potřeboval aby bylo za tým nickem napsané jeho místo v kterém se nachází v tabulce.Mám tipovací soutěž kde je tabulka s uživateli.No a př.: uživatel v tabulce je na 5.místě tak bych udělat aby se za tým nickem napsalo to místo na kterém je zrovna v tabulce teda takhle: př.: jabond (5.místo)

Prosím poraďte jak na to.
AM_
Profil
Podle jakého kritéria je v tabulce na pátém místě? je to mysql tabulka? záleží, jak je tabulka uložená, ale zřejmě by na daném řádku mělo být napsáno i jeho umístění.
pito
Profil
Ano je tam umístění.Na webu mám tu tabulku.V tabulce jsou serazeni uzivatele ktery ma nejvice bodu.A vypis je z db.
Kajman_
Profil *
Spočítáte počet uživatelů, kteří mají více bodů, přičtete jedničku a máte pořadí.
pito
Profil
No to mám tu tabulku
$vysledek=mysql_query("SELECT * FROM users ORDER BY body DESC, nick ASC limit 15")
or die(mysql_error());  


Ale já potřebuji jen u určitého uživatele zjistit na kterém je místě.Uživatelé zjistím pomocí SESSION jak se přihlásí.

Potřebují to dá tady:

   if (($_SESSION['prihlasen'] == 1)or isset($_SESSION['uziv-jmeno'])) {
          echo "Uživatel:<font color='#FFCC00'> ".$_SESSION['uziv-jmeno'] . " </font>
a za to jméno chci dát to umístění.


Zkoušel jsem to dát takhle ale vypíše mi to celkový počet uživatelů.

if (($_SESSION['prihlasen'] == 1)or isset($_SESSION['uziv-jmeno'])) {
          echo "Uživatel:<font color='#FFCC00'> ".$_SESSION['uziv-jmeno'] . " </font>

require "db.php";
$pocet=mysql_result(mysql_query("SELECT COUNT(*) FROM users ORDER BY body"),0);
echo "(<b>".$pocet."</b> místo);
AM_
Profil
select count(*) from users where body >= (select body from users where id='aktualni_uzivatel')
Kajman_
Profil *
Bez poddotazu by to mohlo být při rozsáhlejší tabulce rychlejší...

select count(*) as poradi
from `users` u1, `users` u2
where u1.nick='$_SESSION[uziv-jmeno]' and (u1.body<u2.body or (u1.body=u2.body and u1.nick>=u2.nick))
pito
Profil
no mám to takhle a píše mi to kolik mám bodů a né na kterým jsem místě.Kde může být chyba.

require 'db.php';
$pocet=mysql_result(mysql_query("select body from users where id =".$_SESSION['uziv-id']),0);
echo "<font color='white'>(".$pocet.".místo)</font><br><br>";
AM_
Profil
Tady to bude asi těžké. Když čteš položku "body" z řádku daného uživatele, co bys čekal že tak asi dostaneš?

Řešení už jsem ti napsal, mě přijde vložený dotaz přinejmenším čitelnější než to co psal kajman_ a intuitivně bych odhadl, že bude i rychlejší než kajman_ovo spojování tabulek, ale možné je zřejmě použít obojí.
pito
Profil
Já nemám ale v db nikde dané pořadí co bych tam mněl dát id asi ne že?
Kajman_
Profil *
AM_
a intuitivně bych odhadl, že bude i rychlejší než kajmanovo spojování tabulek

Intuitivně je jasné, že mysql bude stačit, když ten poddotaz v závorce vykoná jednou, ale ona ta potvora ho vykoná pro každý řádek znovu :-) Třeba bude za pár let plánovač chytřejší, ale zatím je lepší využívat spojení (z pohledu serveru:).
Kajman_
Profil *
pito
require 'db.php';
$pocet=mysql_result(mysql_query("select count(*) as poradi
from `users` u1, `users` u2
where u1.id='$_SESSION[uziv-id]' and (u1.body<u2.body or (u1.body=u2.body and u1.nick>=u2.nick))"),0);
echo "<font color='white'>(".$pocet.".místo)</font><br><br>";
AM_
Profil
pito
Předhodili jsme ti řešení, jak to pořadí vypočítat z údajů, které máš. Kajman_ už se slitoval a zkopíroval ten svůj dotaz do tvého fragmentu kódu, když jsi to tam ani nebyl schopný zkopírovat.
pito
Profil
píše to chybu:

Parse error: syntax error, unexpected '-', expecting ']' in /home/www/tip-liga.cz/www/index.php on line 417

a řádek 471 je tenhle:
where u1.id='$_SESSION[uziv-id]' and (u1.body<u2.body or (u1.body=u2.body and u1.nick>=u2.nick))"),0);
pito
Profil
Dál jsem to i takhle
'$_SESSION['uziv-id']'
,ale psalo to taky chybu:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/www/tip-liga.cz/www/index.php on line 417
Kajman_
Profil *
$pocet=mysql_result(mysql_query("select count(*) as poradi
from `users` u1, `users` u2
where u1.id='{$_SESSION['uziv-id']}' and (u1.body<u2.body or (u1.body=u2.body and u1.nick>=u2.nick))"),0);
pito
Profil
Super.Moc ti děkuji Kajman_

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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