Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Choose from MySql only puted in search form?
Forum PHP.pl > Forum > PHP
azahiel
Witam
po krotce opisze moj problem
Mamam tabele z danymi o produkcie z kilkoma parametrami opisujacymi produkt czyli jakies slowo klucz, kategoriw, miasto z korego pochodzi itd
-----------
product
----------
-id_product
-name
-id_keywords
-id_category
...

--------------
keywords
--------------
id_keywords
keywords_name

------------
category
------------
...
...

uzywajac formulaza :

<form method="get" action='index.php'>
<input type='text' name='sort_key' size='20'>
<input type=submit value='Search' >
</form>

chcialby moz pobrac z bazy tylko te produkty ktore spelnialy by choc jeden, warunek sort_key'a teoretycznie konstuuje zapytanie

$sql = "SELECT * FROM product WHERE id_keywords =
'".$_GET[sort_key]."' OR id_category = '".$_GET[sort_key]."' ...
";

Przepraszam zaawansowanych za tak banalne pytanie - sdla mnie nie jest ono jeszce banalne wiec prosze o jakas wskazowke jak napisac zapytanie do MySQLa by wyswietlil miprodukty dla danego slowa kucza , albo prosze o skierowanie mnie od jakiegos tuoriala (moze byc po ANG.)
Dziekuje z gory za wskazowki
Pozdrawiam
nospor
No chlopie, z tym php Pro to "lekko" przesadziles. Przenosze.

No ale w czym problem? Czemu teoretycznie robisz zapytanie? zrob praktycznie smile.gif

pozatym na forum az sie roi od takich problemow.

i uzywaj bbcode
DzikiLis
Proponuję połączyć tabele:


  1. SELECT p.id_product, p.name
  2. FROM product p, keywords k, category c
  3. WHERE p.id_keywords = k.id_keywords AND p.id_category = c.id_category AND (k.keywords_name = '$_GET[sort_key]' OR c.category_name = '$_GET[sort_key]')


Albo ładniej z JOINami:

  1. SELECT p.id_product, p.name
  2. FROM product p
  3. LEFT JOIN keywords k ON p.id_keywords = k.id_keywords
  4. LEFT JOIN category c ON p.id_category = c.id_category
  5. WHERE k.keywords_name = '$_GET[sort_key]' OR c.category_name = '$_GET[sort_key]'
azahiel
Witam
podumalem i teraz zrobilem cos taskiego

  1. SELECT DISTINCT B.*
  2. FROM products B
  3. LEFT JOIN cities C ON B.id_city = C.id_city
  4. LEFT JOIN categories CA ON B.id_category = CA.id_category
  5. WHERE (B.stat_fee = '1' AND B.stat_life = '1' AND C.city_name = '".$_GET['sort_key']."' OR CA.category_name = '".$_GET['sort_key']."'

i w sumie formularz mi wybiera ladnie jak podam jakis slowo kucz, tylko problem jest taki ze kiedys pamietam robilem SORT ORDER BY $_GET[key...] i nawwet jak wpisalem tylko poczatkowe litery jakiegos wyrazu wybieral z bazy wszystkie pozycje np zaczynajace sie na 'abc...' teraz jak nie znajdzie slowa w bazie nie wyswietla nic, juz nie kontaktuje za bardzo by zmontpwac top zapytanie by wybieralo z bazy w taki sposob aby np : C.city_name - w bazie jest: Warszawa a CA.category_name :=> wagony, by po wpisaniu wartosci dla zmiennej $_GET['sort_key'] tylko 2 liter "wa" wyswietlil wszystkie rekordy ktore naleza to 'kategori' - "wagony" oraz sa z Warszawy, itd w zaleznosci ile dokleje uwarunkowan w WHERE,
Jesli ktoś z Was wie albo ma wizje jak zmontowac takie zapytanie, bede wdzieczny, ogromnie, pozdawiam wszystkich i dzizejkuje za odpowiedzi smile.gif
/ "...dlaczego noc tak krotka jest..."
SongoQ
Sam do tego dojdz jak trzeba zrobic. To sa banalne sprawy, a jak Ci napiszemy to wyleci Ci z glowy jak wczesniej. Pomocne CI bedzie polecenie "LIKE" i do sortowanie nie "SORT ORDER BY" tylko "ORDER BY"
azahiel
Dzieki za wskazowke tylko po takim poscie zastanawiam sie nad sensem istnienia tego forum - nigdzie nie jest napisane "ze na tym forum odpowiadamy tylko na zaawansowane zapytania!" w sumie kazdy problem moge rozwiazac samemu zajmniemi to tylkotorche wiecej czasu - a wlasnie ludzie kozystaja z FOROW po to by ten czas zaoszczedzic ..
SongoQ
Cytat
a wlasnie ludzie kozystaja z FOROW po to by ten czas zaoszczedzic ..

I tak i nie. Moj cel na forum - to zdobywanie wiedzy, czytajac posty i odpowiadajac spotykasz problemy z ktorymi mozesz sie w przyszlosci spotkac lub spotkales. Nie wykluczajac nalogu hehehe.
azahiel
OKi niech Ci bedzie niebede podwazal uzytecznosci forum gdyz jego wykozystanie jest dla kazdego indywidualne,
wracajac do tematu skonstuowalem zapytanie
  1. SELECT DISTINCT B.*
  2. FROM products
  3. B
  4. LEFT JOIN cities C ON B.id_city = C.id_city
  5. LEFT JOIN categories CA ON B.id_category = CA.id_category
  6. WHERE (B.stat_fee = '1' AND B.stat_life = '1' AND C.city_name = '".$_GET['sort_key']."' OR CA.category_name = '".$_GET['sort_key']."'
  7. LIKE '".$_GET['sort_key']{0}."%'

ale nie za bardzo mi dziala na dzin dzisiejszy niemam wizji by to zrobic totez zwracam sie z wielka prosba do tych ktorzy juz sie spodkali z tamim problemem i sa w stanie mi pomoc, jesli brakuje mi profesjonalizmu "to przepraszam" ale z dnia na dzien sie ucze.
Pozdrawiam i dziekuje za odpowiedzi...
SongoQ
Niepotrzebny nawias i jak dalesz LIKE to musisz okreslic pole.

Przyklad:
pole LIKE '%dfasdfasdf%'
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.