![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Mam jeden problem i pytanie. Najpierw pytanie. Mam pole do wpisania słowa do wyszukania. Pod spodem w tabelce mam wypisane dane z bazy np.Nazwa, cena, rodzaj. Czy jest możliwość zrobienia aby po wpisywaniu pierwszych liter w polu wyszukiwania tabela się odpowiednio filtrowała z pasującymi wynikami? Aby tylko zostawały wiersze z pasującymi wynikami I teraz problem Mam taką tabelkę jak wyżej ale z dodatkową kolumną z inputem text "wpisz ilosc". Mam zrobione zwykłe sortowanie tabeli tablesorter jquery http://tablesorter.com/docs/ Problem jest taki, ze jak wpiszę w pola wpisz ilość jakieś cyferki i zmienię sortowanie, wszystko się ułoży inaczej to pola z wpisanymi cyframi też się odpowiednio sortują, ale jak na dole nacisnę dodaj do bazy to niestety daną cyferkę wpisuje do produktu który znajdował się w wierszu przed sortowaniem. Przykład ilość wpisuję tylko do anteny: komputer, 2000zł, sprzęt, 0 telewizor, 1500zł, rtv, 0 antena, 400zł, sprzęt, 3 Posortuje po nazwie: antena, 400zł, sprzęt, 3 komputer, 2000zł, sprzęt, 0 telewizor, 1500zł, rtv, 0 tutaj naciskam na dodaj do bazy Do bazy wpisuje się ilość 3szt do telewizora a nie do anteny. Czyli jakby była zapamiętywany wiersz w którym na początku się wpisuje. Ten post edytował roghatt 29.08.2012, 08:40:37 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Użyj w tym celu ajaxa, tj. że po wpisaniu kilku liter filtruje wyniki.
Co do kwestii sortowania i zapisywania do bazy być może jest tak, że jQuery zmienia jedynie wartości (value) inputów, jednak name, id, itd. pozostaje identyczne, musisz zwrócić na to uwagę. Przed dodaniem do bazy wyświetl sobie tablicę wynikową $_POST czy tam w jaki sposób przekazujesz zmienne. Ten post edytował b4rt3kk 29.08.2012, 10:15:14 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
ok, znalazłem takie coś.
Mam problem tylko z tym inputem bo coś z niego mi nie wyświetla wartości
Pod spodem mam później funkcje, że jeśli ilosc>0 to ma wpisać do bazy itp. Oczywiście po wykonaniu jeszcze raz tego pliku. Dlatego POST. Ale jakoś mi do zmiennej $ilosc nie zapisuje cyfry która jest wpisywana do input. Ten post edytował roghatt 29.08.2012, 13:05:50 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Daj przed pętlą print_r($_POST) lub print_r($_POST['ilosc']), prześlij formularz i zobacz czy rzeczywiście dane z inputów przekazywane są do tablicy.
Poza tym jaka jest wartość $i? Przed pętlą daj $i=0, po przekazaniu do zmiennej $ilosc, daj inkrementację $i++. Jeśli nie masz nigdzie ustalonej wartości $i to wywołanie:
daje w efekcie:
Ten post edytował b4rt3kk 29.08.2012, 13:18:00 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak przed while mam $i=0;
później po wpisaniu do tablicy $i++; print_r($_POST) wypisał mi: Array ( [test] => test ) a test to nazwa pola input gdzie wpisuję wyszukiwane hasło. To jak pobrać dane z input gdzie wpisuję ilość. Strona zostaje przeładowana jak wpisze ilosc przy interesujących wierszach i jak potwierdzę. Po wpisaniu w input wyszukiwarki słowa, strona "na żywo" się filtruje. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Więc wygląda na to, że value z pola 'ilosc' w ogóle nie zostaje przesłana. Spróbuj zmienić nazwę pola ilosc[] na np. ilosc1. Być może też przesyłasz niewłaściwy formularz, pola ilosc mogą znajdować się poza formularzem, może też masz formularz w formularzu? Wyświetl sobie źródło strony i sprawdź czy inputy ilosc znajdują się pomiędzy znacznikami <form>...</form>
Ten post edytował b4rt3kk 29.08.2012, 13:42:04 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
super, to była przyczyna. Linijkę za nisko. Mimo, że na stronie i w źródle wyglądało, że wszystko było ok to nie zapisywało do tablicy.
Dzięki za pomoc w rozwiązaniu tego problemu. Jeśli jeszcze wrócę do tego jednego problemu. Wyniki z bazy filtrują się na żywo, dane wypisuje powiedzmy alfabetycznie. Tutaj jeśli wpiszę szukane słowo i pojawi się produkt np. z końca listy i wpiszę ilość i dodam do bazy to zawsze mi zapisuje tą ilość do pierwszego produktu. Array wyświetla (przy wpisaniu ilości przy dwóch produktach: Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Ale pod spodem znowu: Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Array ( [ilosc] => Array ( [0] => 5 [1] => 10 ) ) Wspomnę, że przeładowywana jest ta sama strona, na której filtrowane są produkty
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Takie generowanie nazw inputów name='ilosc[]' powoduje, że tablica powstaje dynamicznie, co oznacza, że przestawienie kolejności nie powoduje przemieszania tabeli tak jakbyś chciał, bo nazwy ciągle są od 0...n w kolejności numerycznej. Proponuję dorzucić jakiś atrybut, np id. ilosc[$id].
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
ale w jakim celu i w jaki sposób miałoby to działać? Nie do końca rozumiem
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Wyobraź sobie, że dodajesz dynamicznie do tabeli elementy, w ten sposób:
Nie nadajesz elementom indeksów, tylko każdy element dodawany jest jako pierwszy wolny. Teraz w Twoim przypadku, masz listę: - komputer - telewizor - antena i każdemu odpowiada jeden input ilosc, w którym wpisujesz ilość, mają następujące indeksy (bo tablica jest generowana dynamicznie): 0, 1, 2. No i jak dostajesz zmienną $_POST['ilosc'][0] to nie wiesz czego jest to ilość, bo index 0 w tabeli nie jest w żaden sposób powiązany sztywno z komputerem, prawda? Co się stanie, gdy posortujesz tabelę w odwrotnej kolejności? - antena - telewizor - komputer Teraz $_POST['ilosc'][0] przechowuje ilość dla anteny, co powoduje dwuznaczność. Musisz zrobić tak, by powiązanie indexów w tabeli z produktami było jednoznaczne. Więc jako indexy daj np. id produktów. Dzięki temu łatwo odczytać wartości:
I bez względu na sortowanie wiesz, że np. dla produktu o id 10 ilość wynosi 3, itd. Ten post edytował b4rt3kk 30.08.2012, 16:22:19 -------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem już o co chodzi, ale mam problem teraz aby to dokładnie w kodzie napisać. Nie za bardzo z tablicami miałem do czynienia.
Zmieniłem to trochę i dałem aby kluczem w tablicy były nazwy produktów:
Wypisuje mi to: nazwa produktu: nazwa produktu2: nazwa produktu3: Ale właśnie nie dopisuje mi wartości do każdego klucza czyli tą ilość Tutaj do input ilosc trzeba zastosować też tablicę? Myślałem, że jak w pętli POST pobierze z INPUT nazwę to od razu wpisze do odpowiedniego klucza. Dobrze tutaj kombinuję z tą tablicą $tablica? Ten post edytował roghatt 31.08.2012, 10:39:58 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 933 Pomógł: 460 Dołączył: 2.04.2010 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj tak:
Wyświetl teraz wyniki poza pętlą (oczywiście po przesłaniu formularza):
-------------------- Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 250 Pomógł: 11 Dołączył: 20.03.2006 Ostrzeżenie: (0%) ![]() ![]() |
dzięki wielkie po raz kolejny. Teraz działa. Ładnie mi wypisuje tablice i później dodaje do bazy.
Linijka
Dawała błąd: Warning: Invalid argument supplied for foreach()... ale dopisanie: już błędu nie wywala i wszystko dobrze działa... co to dokładnie daje? bo przykład z tym array znalazłem gdzies w innym temacie. |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 6 376 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Pętle iterują po tablicach. W pierwszym masz coś (print_r($POST['ilosc'])) co na pewno tablicą nie jest, w drugim robisz rzutowanie http://us2.php.net/manual/en/language.type...pes.typecasting
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 4.05.2025 - 08:31 |