21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
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:

0