![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 11.01.2005 Ostrzeżenie: (10%) ![]() ![]() |
Mój problem jest następujący:
Pobieram z formularza dane: $tytul, $id_rodzaj, $id_nosnik. W/w dane mają posłużyć mi za wytyczne do wyszukiwania w bazie odpowiednich wierszy. Napisałem instrukcje warunkową która w zależności od podanych przez uzytkownika danych uruchamia zapytanie do bazy. Gdy uzytkownik wpisuje wszystkie dane czyli: tytul, rodzaj i nosnik akcja konczy sie powodzeniem. Jesli natomiast podaje jedynie tytul to niestety niedziala to prawidlowo.
Kombinowałem już ze skladnia i funkcjami na kilka sposobow. Szukałem równierz w manualu mozliwosci zwiazanych z instukcja switch ale z tego co wyczytalem nienadaje sie do czegos takiego (Tablice lub obiekty nie mogą być użyte, o ile nie zostaną przekształcone w jakiś typ prosty.) Jesli w ktoryms momecie niewyrazilem sie jasno prosze o zwrocenie uwagi. Z gory dziekuje i pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 140 Pomógł: 16 Dołączył: 12.06.2002 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Njlepiej zrób to tak:
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 11.01.2005 Ostrzeżenie: (10%) ![]() ![]() |
Ar2r:Juz tlumacze:
Kszychu: Pomysł jest znakomity (poprzez swoja prostote ) tylko niestety wyskakuje mi : Parse error: parse error in c:\apache\htdocs\include\lista.php on line ...... (w twoim przykladzie idzie o linie 6). Cytat if(isset($_POST['rodzaj'])) $q .= " AND id_rodzaj = '".(int)$_POST['id_rodzaj'])."'"; Na początku myslalem ze chodzi o znak " . " po $q, ale w manualu znalazlem podobne zeczy (choc wciaż niedokonca jestem pewien co ona tam robi :roll2: ). Może ktos wie co może byc przyczyną tego bledu? Pozdrawiam. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Już zauważyłem co jest źle . W linii 6 i 7 są niepotrzebne nawiasy zamykające, pogrubię:
if(isset($_POST['rodzaj'])) $q .= " AND id_rodzaj = '".(int)$_POST['id_rodzaj'])."'"; Usuń ten pogrubiony nawias i będzie OK. -------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 11.01.2005 Ostrzeżenie: (10%) ![]() ![]() |
Udało się! Nie obeszło się bez rwania wlosow i wielu wielu rezygnacji.
Poniżej przedstawiam ostateczny kod z kilkoma zmianami (głównie zmiany zaszły ze względu na resztę kodu który jest wyżej i niżej ![]() Jedna zmiana jednak zajsc musiała - inaczej niestety niedziałało. Mowa o nawiasach w linijce 13 i 14 . Kszychu: Dzięki.
Zmiany w konstrukcji samego zapytania spowodowane były tym, że chciałem otrzymać możliwość wyciągnięcia z bazy np. samych komedii (id_rodzaj = ... ), bez podawania tytułu. Dodatkowo oczywiście ORDER i LIMIT ale to juz inna bajka. Pozdrawiam. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 2 712 Pomógł: 23 Dołączył: 27.10.2003 Skąd: z kontowni Ostrzeżenie: (0%) ![]() ![]() |
Drobna uwaga, która rzuciła mi się w oczy. W linii 2 sprawdzasz zmienną $_POST['tytul']. Po co to samo robisz w linii 12? Przecież cały ten kod będzie wykonany tylko wtedy, gdy ta zmienna będzie ustawiona, więc w linii 12 zawsze będzie true.
-------------------- "Coś się kończy, coś się zaczyna." Andrzej Sapkowski
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 16 Pomógł: 0 Dołączył: 11.01.2005 Ostrzeżenie: (10%) ![]() ![]() |
Ja to rozumiem tak:
W 2 lini pobieram wartosc wczesniej wyslana z formularza co by przekształcić ją w odpowiedni sposób (linijki 3, 4, 5). W lini 12 funkcja isset - wg. mnie sprawdza czy wczesniej wartosc 'tytul' została wyslana z formularza. Jak słusznie zauważyłeś zawsze będzie true, ale.... ......gdybym wstawil np:
to wyszukiwarka dzialac bedzie tylko z podanym tytulem. Co jesli ktos sam nie wie jaki tytul chcialby ![]() ![]() Myśle, że niedokońca widzę problem o którym mowa. A już napewno niewidze innego prawidlowo dzialajacego rozwiązania. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 09:25 |