Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem wyszukiwarki
Forum PHP.pl > Forum > Bazy danych
jajo1984
Chodzi o wyszukiwarke.

To jest struktura tabel:
Artysci (idartysty, artysta)
Kluby (idklubu, nazwaklubu, miasto)
Koncerty (idkoncertu, idartysty, idklubu, data)

Ta wyszukiwarka nie dziala tak jak tego sie spodziewalem.
Powiezmy ze mam 4 koncerty w bazie. Jeden koncert ICH TROJE w Warszawie i trzy koncerty innych zespolow w POZNANIU. Wpisuje w wyszukiwarke w nazwie zespolu: ICH TROJE, w miescie POZNAN. Powinno nie znalezc zadnego rekordu. Tymczasem moja wyszukiwarka znajduje wszystkie koncerty zespolu ICH TROJE i wszystkie koncert w POZNANIU. A powinna szukac koncertu ICH TROJE w POZNANIU.
Czy moze wie ktos co mam zle w tym kodzie?

  1. <?
  2. $zapytanie='select koncerty.idkoncertu, koncerty.data, artysci.artysta, kluby.nazwaklubu, kl
    uby.miasto 
  3. from artysci, koncerty, kluby 
  4. where ((artysci.idartysty=koncerty.idartysty) AND (kluby.idklubu=koncerty.idklubu)) 
  5. AND ((artysci.artysta="'.$artysta.'") OR (kluby.miasto="'.$miasto.'") OR (kluby.nazwaklubu="'.$nazwaklubu.'") OR (koncerty.data="'.$data.'"))';
  6. ?>


//edit
Przepraszam. Mialo byc w forum "MySQL". Mozna to jakos przeniesc?
tmk
jesli szukasz koncertu Ich Troje w poznaniu, i sprawdzasz to warunkiem OR:
  1. (artysci.artysta="'.$artysta.'") OR (kluby.miasto="'.$miasto.'") OR (kluby.nazwaklubu="'.$nazwaklubu.'") OR (koncerty.DATA="'.$data.'")

to nie dziwne, że wyrzuca Ci wszystko, co w Poznaniu. Bo to tak jakbyś napisał:
artysta='ich troje' LUB miejsce='poznań' lub ....
jajo1984
OK. Masz calkowita racje... Wiec zmieniam na AND.

  1. <?php
  2. $zapytanie='select koncerty.idkoncertu, koncerty.data, artysci.artysta, kluby.nazwaklubu, kl
    uby.miasto 
  3. from artysci, koncerty, kluby 
  4. where ((artysci.idartysty=koncerty.idartysty) AND (kluby.idklubu=koncerty.idklubu)) 
  5. AND ((artysci.artysta="'.$artysta.'") AND (kluby.miasto="'.$miasto.'") AND (kluby.nazwaklubu="'.$nazwaklubu.'") AND (koncerty.data="'.$data.'"))';
  6. ?>


Tylko rodzi sie nowy problem.
Gdy w formularzu nie wypelnisz pola np. "nazwaklubu" czyli nie podasz dokladnego miejsca koncertu to nie znajduje nic.
Moze jasniej... Chodzi o wyszukiwarke koncertow, ktora wyszuka rekordy z bazy, ktore spelniaja okreslone (wypelnione w formularzu) warunki. Natomiast jak pozostawie jeden z tych warunkow pusty to nie znajduje zadnego rekordu. Jak zmodyfikowac ten kod, ze nie wysylal zapytania z pustymi warunkami.
Mam nadzieje ze wyjasnilem. Jak to... to odpisac prosze zebym to inaczej ujał.
tmk
Najwygodniej chyba zrobić sobie po stronie php filtrację takich danych.
przecież zawsze możesz sprawdzić, czy wysłano pusty ciąg, czu nie
  1. <?php
  2. if($artysta==''){...}
  3. ?>
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.