Autor Zpráva
gregi
Profil *
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
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
ninja
A pokud je id primary key, je podminka id_galerie zcela zbytecna.
Neni zbytecna, potrebuje vybrat fotku z te same galerie.
gregi
Profil *
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
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 *
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
gregi
Udelat 3 pozadavky na DB samozrejme muzes, ale neni lepsi (a rychlejsi) udelat jen jeden?
gregi
Profil *
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
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.

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: