Autor Zpráva
Lion76
Profil *
Zdravim, potrebuji nakopnuti s nasledujicim problemem. V jedne tabulce mam napr. vinarske oblasti a v druhe tabulce mam seznam vin, spojit ty tabulky podle idOblasti neni problem, ale ja potrebuji pomoci selectu filtrovat zobrazeni dat.
Do selectu nactu vsechny vinarske oblasti, ktere jsou spolecne pro zobrazeny totozne pro zobrazeny seznam vin. No ale kdyz pomoci selectu chci vybrat jen vina napr. "moravska", tak se v seznamu spravne vypisi vsechny moravska vina, ale v selectu uz je jen jedna vinarska oblast a t.j. moravska, ale ja bych potreboval vsechny, jako kdyby zadny select nepouzival.
Akacko
Profil
Lion76
kde je problém? V dotazu filtruj pomoci např. idOblasti. (Vybereš v selectu, zmáčkneš submit, stránka se ti načte v v proměnne $_POST['nazev_selectu'] máš id té oblasti, podle kterého budeš filtrovat.
Lion76
Profil *
Akacko

Tohle vsechno vim, ale ja chci vsechny oblasti vypsat v selectu, ikdyz odeslu formular, ale musi to byt vzdycky oblasti, ktere te dane kategorii patri, napr. vina sumiva.
Akacko
Profil
Lion76
tak uděláš 2 selecty. Jeden vybere vína z jedné oblastí a druhý vybere všechny oblasti a ty vypíšeš do selectu.
Lion76
Profil *
Akacko

Ja potrebuji poradit s dotazem, ktery vypise do selectu vsechny vinarske oblasti, podle toho, ve ktere kategorii se prave nachazim. O vypisovani seznamu vin se mne nejedna, to je brnkacka, ale ten select nemuzu nikterak vytvorit, protoze nevim momentalne jak. Napada mne jenom, ze asi budu muset do vinarskych oblasti pridat dalsi sloupce a t.j. do kterych kategorii ta vinarska oblast patri a podle toho filtrovat ten select. Treba je nejaky elegantnejsi zpusob a ten se potrebuji dozvedet.
Lion76
Profil *
// o tento dotaz se mne hlavne jedna, protoze je pro select
$sql = "SELECT DISTINCT nazevOblasti FROM oblasti ORDER BY nazevOblasti ASC";

// tento dotazu vypise bude vsechny vina nebo ktere se rovnaji podmince
$sql = "SELECT nazevVina FROM vina";
if(isset($_POST['idOblasti']) && $_POST['idOblasti'] != 'vsechny'){
$sql .= "WHERE idOblasti = '".$_POST['idOblasti']."'";
}
Lion76
Profil *
Lion76

Tak jsem to konecne vyresil, ale v nize uvedenem dotaze je chyba a ja nevim v cem.

$sql = "SELECT DISTINCT nazevOblasti FROM oblasti WHERE idOblasti = (SELECT idOblasti FROM vina WHERE kodKategorie = '001') ORDER BY nazevOblasti ASC";

Nebo by bylo lepsi to prevest na spojeni?
Lion76
Profil *
Tak jsem to vyresil spojenim.

$sql = "SELECT DISTINCT(t1.idOblasti) AS id, nazevOblasti AS nazev FROM oblasti AS t1 LEFT JOIN vina AS t2 ON t1.idOblasti = t2.idOblasti WHERE t2.kodKategorie ='001%' ORDER BY t1.nazevOblasti ASC";

Pokud budete mit lepsi reseni, tak sem s nim.
Alphard
Profil
k prvnímu dotazu:
$sql = "SELECT DISTINCT nazevOblasti FROM oblasti WHERE idOblasti in
(SELECT idOblasti FROM vina WHERE kodKategorie = '001') ORDER BY nazevOblasti ASC";


a obecně
ale v nize uvedenem dotaze je chyba a ja nevim v cem
mysql chybu vypisuje, její čtení ušetří mnoho času, jak ji zobrazit?
1. testovat dotazy v konzoli, phpMyAdmin, apod.
2. vypisovat si chyby pomocí funkcí k tomu určených, např. v PHP je na to funkce mysql_error()
Lion76
Profil *
Alphard

Vsechny dotazy testuji v phpMyAdminu a problem je v tom, ze nekdy nevypise ani data ani chybu. Jinak v PHP pouzivam jiz zminenou funkci mysql_error().

// dotaz nevypise ani data ani chybu

$sql = "SELECT DISTINCT nazevOblasti FROM oblasti WHERE idOblasti in
(SELECT idOblasti FROM vina WHERE kodKategorie = '001') ORDER BY nazevOblasti ASC";

// dotaz vypsal data, protoze to co ma vybrat poddotaz jsem dosadil manualne
$sql = "SELECT DISTINCT nazevOblasti FROM oblasti WHERE idOblasti IN
(1,2,3,4,5,6) ORDER BY nazevOblasti ASC";

Proc tomu tak je?
Kajman_
Profil *
A tohle vypíše co?
SELECT idOblasti FROM vina WHERE kodKategorie = '001'
Lion76
Profil *
Kajman_

No ten poddotaz vypise idecka oblasti napr. 1,2,3,4,6 a ty se potom maji vyhledat v hlavnim dotazu.
Kajman_
Profil *
Vypíše jednu hodnotu '1,2,3,4,6'?
Lion76
Profil *
Kajman_

Vypise:

|idOblasti|
|1|
|2|
|3|
|4|
|6|
Lion76
Profil *
Kajman_

Uz jsem to vyresil:

$sql = "SELECT nazevOblasti FROM oblasti WHERE idOblasti IN
(SELECT DISTINCT idOblasti FROM vina WHERE kodKategorie = '001') ORDER BY nazevOblasti ASC";

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: