Autor Zpráva
Belfegor
Profil
zdravicko lidi, existuje nejaka funkce ktera vam zjisti pozici zaznamu v databazove tabulce ? dam priklad:


na strance mam serazeny vypis zaznamu podle sloupce body (INT) a tom se nachazi ruzne cisla, mam to serazeny podle bodu sestupne a mam tam udelany strankovani.

cili potreboval bych aby se to cislovalo :

1.
2.
3.
4.
.
.
.
.
.
10.

a na dalsi strance aby to navazalo na posledni cislo z predchozi stranky

11.
12.
13.
.
.
.
.
.
.

pro ilustraci jeste prikladam PHP script, poradite nekdo pls ?


[code]
<?php
$strana = $_GET['strana'];

$velikost=$strana*50;

$sql = mysql_query("SELECT * FROM tabulka WHERE ID = $ID ORDER BY body DESC LIMIT $velikost,50 ");

if(@mysql_num_rows($sql) <= 0):
echo "Nenalezeny žádné záznamy!";
else:
while($row = mysql_fetch_assoc($sql)):
?>

tohle se vypise

<?php
endwhile;
endif;
?>

[/code]


proste budu mit v databazi hafo zaznamu serazenych podle bodu sestupne a budu chtit najit treba hodnotu 654, ktera se bude nachazet na 32. pozici tak aby to vypsalo 32 (samozrejme ze ty pozice budu chtit najit pro kazdy zaznam zvlast, tzn. ze 654 je proměnná)
Taps
Profil
Belfegor
jestli ti jdou id postupně tak můžeš využít toho
Nox
Profil
Taps
Nevim jestli to je naprosto stejný případ, ale měl jsem podobný problém a zatím ho nevyřešil, myslim že chápu jak to myslí
- má např.:
ID Nazev Hodnota
5 Auto4 50
4 Auto5 60
2 Auto6 60
1 Auto7 60
3 Auto8 70
A když dostanou skripty info "Auto6", tak jakým způsobem vrátit 3 (jeho pořadí)
Taps
Profil
Nox
napadá mě jedině použít nějaký cyklus + podmínky
Kajman_
Profil *
Nox
Pokud je to seřazeno order by nazev, id, tak spočítáte, kolik aut má menší název nebo stejný název a menší id. A k tomu přičtete jendičku.

select count(*)+1 poradi from tabulka where nazev<'Auto6' or (nazev='Auto6' and id<2)
Nox
Profil
Kajman_
Díky - doufám že to tedy vyřešilo i dotaz původního tazatele, když jsem sem tak vpadl, případně se omlouvám a klidně se to může oddělat
Mastodont
Profil
Pokud by to nechtěl řešit dalšími dotazy do DB, tak převést sloupec s názvy aut na pole s číselnými indexy, pak array_flip a pozici by zjistil přes $arr['Auto6'].
Kcko
Profil
MOzna by pomohlo toto -> http://www.webfaq.cz/clanek/Mysql-poradi-radku-v-dotazu
Kajman_
Profil *
Kcko
Tak takovému řešení bych se vyhnul. Tinul bych, že v tom odkaze to bude mohem pomalejší než ten jednoduchý where. Stejně tak předchodí další hledají nesmyslně složitě.
Nox
Profil
Právě sem to vyřešil takto a funguje to:
$_GET["podle"] - sloupeček podle kterého se řadí
$_GET["hledat"] - hledaný řetězec ve Jménu
$zn: "<" pro asc; ">" pro desc

select count(*) as poradi from Hero where 
$_GET[podle]$zn(select $_GET[podle] from Hero where Jmeno='$_GET[hledat]')
or
($_GET[podle]=(select $_GET[podle] from Hero where Jmeno='$_GET[hledat]') and Jmeno<'$_GET[hledat]')


čili např.:
Tříd podle sloupečku: Spas / desc

select count(*) as poradi from Hero 
where 
Spas>(select Spas from Hero where Jmeno='Nox')
or
(Spas=(select Spas from Hero where Jmeno='Nox') and Jmeno<'Nox')
Kcko
Profil
Kajman_
Ja sem nemyslel ale druhou cast clanku, ale jen to poradi

mas na to 3 jednoduche dotazy z nich 2 vubec nezatizi DB ( jedna nastavena promenna, pak klasicky dotaz na zjisteni poradi a nasledne vyselektovani promenne)
Taps
Profil
a co toto
http://php.vrana.cz/vlastni-poradi-radku-v-tabulce.php
Belfegor
Profil
Hoj lidi, tak stále mi to nejde, už se o to snažím tak 4 dny a furt nic, dokázal byste pls někdo přepsat můj dotaz tak aby to fungovalo pls ?

Tabulka turnaj:

turnajID INT - zde se ukládá ID turnaje
teamID INT - zde se ukládá ID teamu
body INT - zde se ukládají body, které tým získal

<?php
$sql_turnaj = mysql_query("SELECT * FROM turnaj WHERE turnajID = $turnajID AND schvalen = 'ano' ORDER BY body DESC ");
	   
if(@mysql_num_rows($sql_turnaj) <= 0):
echo "Nenalezeny žádné záznamy!";
else:
while($row_turnaj = mysql_fetch_assoc($sql_turnaj)):
?>

Tým: <?php echo $row_turnaj["teamID"]; ?>
<br />
Body: <?php echo $row_turnaj["body"]; ?>
<br />
Tým se nachází v turnaji na: nějaké. pozici

<?php
endwhile;
endif;
?>


a já právě potřebuji zjistit podle ID týmu a počtu bodů které získal, tak potřebuju v aktuálním selectu zjistit kolikátý je to řádek, kdybyste mi to někdo dopsal o script který to zjišťuje budu vážně velmi rád, už se v tom trochu motám, inu 4 dny do toho čumět to není ono, pak se vám to už plete
Kajman_
Profil *
$pozice=1;
while($row_turnaj = mysql_fetch_assoc($sql_turnaj)):
?>

Tým: <?php echo $row_turnaj["teamID"]; ?>
<br />
Body: <?php echo $row_turnaj["body"]; ?>
<br />
Tým se nachází v turnaji na: <?=$pozice++?>. pozici
Belfegor
Profil
Díky moc kámo, už mi to fachčí.

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: