PHP + Mysql

Programovacie jazyky, rady, poradňa...
xolau
Light Expert
Light Expert
Príspevky: 63
Registrovaný: 31 dec 2009, 17:47

PHP + Mysql

Príspevok od používateľa xolau »

Zdravím, chcel by som sa opýtať keď mám tabuľku a v nej stĺpec " kraj ", a nejaká firma poskytuje služby napríklad v Bratislavskom a Trnavskom kraji, že mi podľa filtru vyhľadá aj keď zadám kraj Bratislavský, a aj Trnavský ? Filter mám na princípe

Kód: Vybrať všetko

<select id="kraj" name="kraj">
<option selected="selected" value="">Vyber kraj</option>
<option value="1">Bratislavský kraj</option>
<option value="2">Trnavský kraj</option>
<option value="3">Banskobystrický kraj</option>
<option value="4">Prešovský kraj</option>
<option value="5">Trenčiansky kraj</option>
<option value="6">Žilinský kraj</option>
<option value="7">Nitriansky kraj</option>
<option value="8">Košický kraj</option>
</select>
Keď do stĺpca kraj v tabuľke dám hodnotu 1 a v menu vyberiem bratislavský kraj tak mi to odfiltruje, ale ako použiť viac hodnôt ? Dúfam že ste pochopili čo som myslel a viete mi pomôcť :plus:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP + Mysql

Príspevok od používateľa audiotrack »

nie nevyberie. Select predsa vie naraz vybrať iba jednku hodnotu, musíš použiť iný html prvok, v ktorom budeš vedieť vybrať viac hodnôť (napríklad checkboxy). Potom budeš musieť tie hodnoty poslať ako pole, lebo teraz by sa ti prepisovali takže to nebude kraj ale kraj[] a v poslednom rade budeš to query na vyhladávanie spraviť tak, aby to bralo všetky hodnoty a bolo medzi nimi or a nie and. To si však teraz nenapísal ako máš
xolau
Light Expert
Light Expert
Príspevky: 63
Registrovaný: 31 dec 2009, 17:47

Re: PHP + Mysql

Príspevok od používateľa xolau »

Samozrejme viem že select vie vybrať iba jednu hodnotu tak to aj potrebujem, len napríklad. Mám firmu ktorá má zastúpenie v Bratislavskom a Trnavskom kraji. A ja potrebuje spraviť to že keď v selecte bude Bratislavský kraj tak vytiahne tú istú firmu, ako aj keď bude v selecte Trnavský kraj. Teraz to mám riešené takto

Kód: Vybrať všetko

$dkraj = $_POST["kraj"];
$result = mysql_query("SELECT * FROM files WHERE kraj=\"$dkraj\"");
a v "kraj" sú tie hodnoty zo selectu 1 2 3 .. čo sa rovná daným krajom, ale problém nastáva v tom ak má firma zastúpenie vo viac krajoch. Teda keď v poly kraj mám v databáze číslo 1 tak to zobrazí pod bratislavský kraj, keď 2, 3 tak ostatné, ale ako tam dostať napríklad hodnoty 1 a 3 aby ked zo selectu vybere 1 zobrazí firmu, a tak isto aj pri 3. :lol:
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: PHP + Mysql

Príspevok od používateľa audiotrack »

Kód: Vybrať všetko

$dkraj = implode(",",$_POST["kraj"]);
$result = mysql_query("SELECT * FROM files WHERE kraj in (" . $dkraj . ")");
ale musíš to poslať ako pole, a nie ako jedinú hodnotu. To som ti popísal ako spravíš už v predošlom príspevku

databázu budeš musieť upraviť, nebude to hodnota v tej tabulke, ale bude to nová spojovacia tabuľka v ktorej bude firma a kraj. Potom môžeš dať viac firiem jednému kraju, aj opačne. Bežne sa takto riešia vzťahy M:N. To query potom bude tiež trochu iné, bude rozšírené o novú tabuľku cez podmienku alebo joinom
Napísať odpoveď