Autor | Zpráva | ||
---|---|---|---|
gregi Profil * |
#1 · Zasláno: 23. 12. 2008, 00:36:29
Zdravim,
mám dotaz. Mám tabulku fotky, kde mám sloupce: id, id_galerie, fotka. Fotku vždy vypíšu následujícím dotazem: SELECT id,id_galerie,fotka FROM fotky WHERE id_galerie=$_GET[galerie] AND id=$_GET[fotka] A chtěl bych zjistit předešlou fotku. Tedy když mi např. tenhle dotaz vrátí id = 1 a další fotka v tom albu bude až s id = 5, tak aby to vypsalo tu pětku. Nevím jak udělat správnej dotaz/podmínku. Snad jsem se vyjádřil dobře. Proste abych v albu moh vždy dát další či předešlá fotka. Díky za pomoc |
||
ninja Profil |
#2 · Zasláno: 23. 12. 2008, 00:42:18 · Upravil/a: ninja
gregi: a mate jistotu ze polozka s nejblizsim mensim/vetsim id je skutecne predchozi/dalsi?
SELECT id,id_galerie,fotka FROM fotky WHERE id_galerie=$_GET[galerie] AND id<$_GET[fotka] ORDER BY id DESC LIMIT 1 UNION SELECT id,id_galerie,fotka FROM fotky WHERE id_galerie=$_GET[galerie] AND id=$_GET[fotka] UNION SELECT id,id_galerie,fotka FROM fotky WHERE id_galerie=$_GET[galerie] AND id>$_GET[fotka] ORDER BY id LIMIT 1 PS: Doufam ze v realu GET promene nejak osetrujete. A pokud je id primary key, je podminka id_galerie zcela zbytecna v prostrednim selectu (za opravu dekuji bohynovi). |
||
bohyn Profil |
#3 · Zasláno: 23. 12. 2008, 00:45:14
ninja
„A pokud je id primary key, je podminka id_galerie zcela zbytecna.“ Neni zbytecna, potrebuje vybrat fotku z te same galerie. |
||
gregi Profil * |
#4 · Zasláno: 23. 12. 2008, 01:11:06
Ano, ošetřuju, poslal jsem sem jen to nejdůležitější. Jinak ten dotaz na databázi zcela nechápu, navíc mi vypisuje chybu "Incorrect usage of UNION and ORDER BY".
|
||
bohyn Profil |
#5 · Zasláno: 23. 12. 2008, 10:39:07
gregi
Jednotlive selecty by mely byt v zavorkach. UNION ti slouci vice dotazu do jednoho vysledku (musi mit stejny pocet a datovy typ sloupcu). |
||
gregi Profil * |
#6 · Zasláno: 23. 12. 2008, 14:16:43
Budu se možná ptát blbě, ale napadlo mě, proč ten dotaz od ninjy je tak složitej? Můžu přece udělat dva dotazy, který mi budou vracet další a předchozí id.
SELECT id,gallery_id,fotka FROM gallery_photos WHERE gallery_id=$_GET[arg1] AND id<$_GET[arg2] ORDER BY id DESC LIMIT 1 SELECT id,gallery_id,fotka FROM gallery_photos WHERE gallery_id=$_GET[arg1] AND id>$_GET[arg2] ORDER BY id ASC LIMIT 1 Jinak samozřejmě díky ninjovi jsem na to přišel, ale stejně, má ten jeho dotaz nějakej hlubší význam? |
||
bohyn Profil |
#7 · Zasláno: 23. 12. 2008, 14:28:05
gregi
Udelat 3 pozadavky na DB samozrejme muzes, ale neni lepsi (a rychlejsi) udelat jen jeden? |
||
gregi Profil * |
#8 · Zasláno: 23. 12. 2008, 14:59:07
Aha, ale potom nechápu, resp. neumim, vypsat z jednoho dotazu (z toho od ninjy), dvě různý ID. Když dam $radek=mysql_fetch_array($dotaz);, tak mi vlastně $radek[id] vrátí předchozí ID, jak ale vypíšu i to druhé?
|
||
bohyn Profil |
#9 · Zasláno: 23. 12. 2008, 15:24:46
gregi
Dalsim volanim mysql_fetch_array(). $predchozi = $aktualni = $nasledujici = null; if($dotaz) { while($radek = mysql_fetch_assoc($dotaz)) { if($radek['id'] < $_GET['fotka']) { $predchozi = $radek; } elseif($radek == $_GET['fotka']) { $aktualni = $radek; } else { $nasledujici = $radek; } } } if($predchozi) { echo "..."; } // atd. |
||
Časová prodleva: 15 let
|
0