![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chcę do mojego katalogu bibliotecznego dorobić wyszukiwanie po kilku polach tekstowych przy czym każde wypełnione pole zawęża zakres poszukiwań. Przy pomocy forum udało mi się skleić coś takiego:
Formularz to obsługujący jest taki: W bazie istnieje tabela 'ksiazki' z w/w kolumnami. Niestety zapytanie nie wyświetla żadnych znalezionych pozycji.. Ktoś pomoże? Działa to nieco inaczej od zamierzonego celu. Tzn chciałbym aby po wpisaniu jednej litery w np tytule i rok wydania wyświetliło wszystkie pasujące rekordy.. Jak by dodać gdzieś LIKE % ? Ten post edytował chico2 21.12.2009, 15:40:22 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
zamień na
i dalsze pola w warunkach (autor, rok i hasło) Co do like, to jaki problem dodać do warunku where: tytul like '$_POST["tytul"]%' ? Ten post edytował darko 21.12.2009, 15:58:29 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
Kombinuje trochę przy tym i mam problem bo nie wiem gdzie do zapytania dołożyć tytul like '$_POST["tytul"]%' Podejrzewam, że coś źle robię z apostrofami i cudzysłowami.. Za każdym razem parse error ; /
A przy okazji zapytam jeszcze, jak rozwiązać sprawę rezerwacji książki po wyszukaniu? W tabeli ksiazki dołożyć jeszcze jedną kolumnę 'ilosc', która wskazywała by na to ile książek jest i za każdym kliknięciem przez usera "rezerwuj" 'ilosc' była by zmniejszana o 1. Jak się za to zabrać? Coś na zasadzie koszyka? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1. To pokaż co wymodziłeś
2. rezerwację można np. tak: onclick(na rezerwuj) - ajax ----> leci request do skryptu w php, przekazuje dwie zmienne, id produktu i ilość, o jaką należy pomniejszyć stan magazynowy. Analogicznie w przypadku rezygnacji z rezerwacji. -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
1.
Błąd: Parse error: parse error in C:\Program Files\EasyPHP5.3.0\www\test\szukaj.php on line 20 Zmiana Daje błąd Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP5.3.0\www\test\szukaj.php on line 37 2. A czy w tym sposobie będzie dało się zrobić coś takiego, że rezerwacja wygasa po np 3 dniach? Czuję, że to będzie najtrudniejsza część pracy.. |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
zamień na Cytat 2. A czy w tym sposobie będzie dało się zrobić coś takiego, że rezerwacja wygasa po np 3 dniach? Czuję, że to będzie najtrudniejsza część pracy.. W tym nie, ale np. cron raz dzienie + odpowiedni skrypt (wyciągnięcie wszystkich rezerwacji, których data_dodania >= 3 dni i usunięcie ich + przywrócenie odpowiednich stanów magazynowych) = tak. Są jeszcze inne sposoby, może ktoś inny coś lepszego doradzi? Ten post edytował darko 21.12.2009, 18:09:55 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
Niestety jest jakiś problem z tablicą
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\Program Files\EasyPHP5.3.0\www\test\szukaj.php on line 39 W manualu przeczytałem, że dotyczy to źle użytej funkcji mysql_fetch_array(). Dodawałem return $wynik; oraz mysql_free_result($wynik); ale nie było żadnego efektu. Co do drugiej części skryptu czyli crona to będzie problem gdyż póki co cała aplikacja będzie odpalona na easyphp w Windowsie więc cron odpada. A jeśli by zrobić bez ograniczenia czasowego to będzie łatwiej to zaimplementować? |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
wyprintuj zmienną $where doklej do $sql i zobacz jak wygląda całe zapytanie
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
To wypluł print: where tytul like 'a%' tytul = 'a' select * from ksiazki where tytul like 'a%' tytul = 'a' |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
No to teraz przeanalizuj swoje zapytanie, jak już będziesz wiedział, co jest źle, to się odezwij.
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
Zmodyfikowałem zmienną $where w taki sposób:
I zadziałało ![]() wyświetla pusty rezultat. print_r wyświetla: where tytul like '%php%' and '%199%' Czuję, że coś znów z apostrofami.. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
where tytul like '%php%' and tytul like '%199%' ?
-------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 19.11.2009 Skąd: Wolbrom Ostrzeżenie: (0%) ![]() ![]() |
A dokładnie powinno być:
właśnie do tego doszedłem. Głupi błąd. Zapytanie jest takie:
Tylko teraz jak rozwiązać rezerwację książki jeśli jest dostępna. Bardzo dziękuję za powyższą pomoc. Przydała się : ) Ten post edytował chico2 21.12.2009, 20:08:51 |
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 2 885 Pomógł: 463 Dołączył: 3.10.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tylko teraz jak rozwiązać rezerwację książki jeśli jest dostępna. Jeśli chodzi o handel, to utwórz tabelę np. magazyn, w której będziesz przechowywał następujące dane: magazyn id_magazyn int PK id_ksiazka int FK ilosc int status tinyint(1) data_dodania datetime login_dodania varchar(55) data_modyfikacji datetime login_modyfikacji varchar(55) oraz tabelę zamówienie id_zamowienie int PK id_ksiazka int FK id_user int FK ilosc int status tinyint(1) data_dodania datetime login_dodania varchar(55) data_modyfikacji datetime login_modyfikacji varchar(55) No i pomyśl jak to teraz połączyć. Jeśli masz na myśli rezerwację jak w bibliotece to można coś w tym stylu: rezerwacje id_rezerwacja int PK id_ksiazka int FK do_kiedy datetime status tinyint(1) data_dodania datetime login_dodania varchar(55) data_modyfikacji datetime login_modyfikacji varchar(55) Ten post edytował darko 26.12.2009, 03:49:55 -------------------- Nie pomagam na pw, tylko forum.
|
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 8.11.2008 Ostrzeżenie: (0%) ![]() ![]() |
Z góry przepraszam za odkopywanie starego tematu, ale robię podobny projekt i też chcę na podobnej zasadzie rozwiązać mechanizm wyszukiwania, tylko bazę danych mam rozwiązaną w inny sposób. Mam osobną tabelę na książki, osobną tabelę na autorów, tabelę łączącą(relacja wiele do wielu) itd.
Deklaracja tabel:
Chciałbym wyszukiwać to w ten sposób, że każde dodatkowe wypełnione pole w formularzu dopełnia zapytanie, a pola będą takie: tytul, imie nazwisko, haslo_przedmiotowe, slowo_kluczowe, rok_wydania. I zapytanie, które używam dotychczas wygląda tak:
Ale to jest bez sensu, bo nie zwraca mi tego co bym chciał, a zwraca mi wszystko co jest w bibliografia.autorzy. I moje pytanie jest takie, czy w ogóle da się to zrobić jednym zapytaniem, biorąc pod uwagę, że jedna książka może mieć wiele autorów i wiele słów kluczowych przypisanych do niej, a jeżeli tak, to jak mniej więcej schematycznie miało by wyglądać to zapytanie, bo wiem, że będzie dosyć złożone i sam nie wiem jak je wykombinować. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 06:29 |