![]() |
![]() ![]() |
![]() |
![]() ![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Mam problem z zrobieniem prawdopodobnie prostej rzeczy. [STRUKTURA TABELI MySQL] Kod mysql> describe tb_wesele; +----------------+--------------+------+-----+---------+-----------------------------+ | Field | Type | Null | Key | Default | Extra | +----------------+--------------+------+-----+---------+-----------------------------+ | LP | tinyint(3) | NO | PRI | NULL | auto_increment | | Nazwa_prezentu | varchar(200) | YES | | NULL | | | Cena_prezentu | decimal(6,2) | YES | | NULL | | | Link_do_strony | varchar(250) | YES | | NULL | | | Czy_wybrany | tinytext | YES | | NULL | | | Kiedy_wybrany | timestamp | YES | | NULL | on update CURRENT_TIMESTAMP | +----------------+--------------+------+-----+---------+-----------------------------+ [IDEA] Możliwość wyboru wiersza (checkbox) jednokrotnie lub wielokrotnie (kilka wierszy) w formularzu HTML, generowanym za pomocą PHP, wyświetlającym zawartość tabeli MySQL oraz aktualizowanie tabeli MySQL po wyborze wiersza przez użytkownika. [Od strony użytkownika] Łopatologicznie: wchodzę na stronę, wybieram interesującą mnie pozycję (lub interesujące mnie pozycje) z tabeli, zahaczam "checkbox/y", klikam "Zapisz" i koniec. [Od strony serwera] Skrypt generuje listę pozycji do formularza za pomocą PHP/MySQL. Formularz zawiera tylko te pozycje, które w polu "Czy_wybrany" zawiera słowo "NIE".
Użytkownikowi pojawia się formularz z wyselekcjonowanymi wierszami oraz dodatkową kolumną, w której wstawiam <input type="checkbox">. Po wybraniu przez użytkownika pozycji, skrypt aktualizuje tabelę 'tb_wesele' zmieniając tylko pole "Czy_wybrany" z "NIE" na "TAK" oraz aktualizuje "TIMESTAMP" w polu "Kiedy_wybrany" dla pozycji zaznaczonych przez użytkownika. Ponieważ miałem dość długą pauzę w kodowaniu, wykładam się na podstawowych rzeczach: 1. Wszystko chcę obsłużyć "jednym plikiem" - tzn. operacje SELECT, UPDATE, wyświetlanie formularze miałyby odbywać się w jednym pliku index.php. 2. Chcę użyć metody POST dla formularza. Teraz moje wypociny: Używam osobnych pliczków do nagłówka i stopki (head.php oraz foot.php). Foot.php nie będę przytaczał, bo tam nic nie ma. head.php
index.php
Nie mam jeszcze napisanej części dot. UPDATE. [CO DZIAŁA?] 1. Połączenie do bazy i pobieranie wyselekcjonowanych danych do formularza [Z CZYM SOBIE NIE RADZĘ] 1. index.php - wiersze od 7 do 97. To są skrypty z jakichś starych moich prac, które starałem się przemianować. Niestety, zamiast iść w dobrym kierunku, to brnę we mgłę. 2. index.php - wiersz 140 - nie wiem jak to zrobić, aby formularz wiedział, którą pozycję (wcześniej wczytaną skryptem) wybrał użytkownik i aby ją przesłał (zaktualizował UPDATE) w bazie MySQL. Bardzo serdecznie proszę o pomoc. Moderatorów proszę o wyrozumiałość - po dłuższej przerwie, moja znajomość obraca się wokół Przedszkola, zatem w tej sekcji postanowiłem umieścić swoje "wypociny". Z pokorą przyjmę krytykę. Dziękuję, Jarek (zoomol) Ten post edytował zoomol 8.03.2014, 10:34:59 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]() ![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cześć,
Mam problem z odbieraniem/przetwarzaniem/wysyłaniem danych z MySQL w formularzu, który jednocześnie może aktualizować tabelę MySQL. Tworzę formularz, którego tabela jest tworzona na podstawie tabeli MySQL. Wyświetlanie tej tabeli w PHP działa i wygląda tak:
W wierszu 21 i 29 dodaję kolumnę, w której zaznaczamy który wiersz chcemy wybrać. [PYTANIE] Jak skonstruować wiersz 29, aby checkbox przenosił w POST dane dot kolumn wyświetlonych w formularzu w zaznaczonym wierszu? (czyli, po kliknięciu np. trzeciego wiersza, checkbox wyświetli zaznaczone pozycje w postaci: LP, Nazwa, odnośnik, czy zarezerwowany-[to pole zmieni się z '0' na '1']? Z góry dziękuję za pomoc. -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#3
|
|
![]() Grupa: Opiekunowie Postów: 3 855 Pomógł: 317 Dołączył: 4.01.2005 Skąd: że ![]() |
Jeden temat wystarczy. Wyjątkowo nie zamykam, ale łącze oba wątki.
-------------------- Jak poprawnie zadać pytanie | Jak poprawnie zatytułować wątek
Najczęstsze błędy | Błędy E_NOTICE | PHP FAQ | FAQ PHPedia | SQL-Injection | Logowanie i sesje | Hashowanie haseł | Server - od czego zacząć ? | Manual PHP Alternatywne Forum dla Ekspertów Nie pomagam na PW, nie mam GG |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Kshyhoo OK - w zasadzie racja, dotyczy tego samego. Sorki i dzięki.
OK, trochę sobie poradziłem - ale to dla mnie droga przez mękę - naprawdę... Mam teraz taki problem: jak zadeklarować poniższy kod, abym mógł do niego odwołać się jakąś zmienną? Czy to w ogóle możliwe?
...Nie poradziłem sobie z powyższym, więc musiałem to obejść. Następna kwestia - tu już trochę trudniejsza. Czytałem dużo o zapisywaniu plików *.php w kodowaniu UTF-8 (bez BOM) - ponieważ używam Notepad++, bez problemu tak mam utworzone wszystkie pliki (php, css, skrypty). Problem polega na tym, że IE wyświetla poprawnie tabelkę utworzoną dynamicznie z zapytania MySQL, a np. Chrome wyświetla tą samą stronę błędnie - tzn. wszystko w jednej kolumnie... Nie wiem za choinkę jak sobie z tym poradzić. Pomóżcie proszę. KOD
A oto wyniki: IE ![]() Chrome ![]() Czy fakt, że w pliku co_wybrane.php deklaruję nagłówek i stopkę jako Kod require(); ma tutaj znaczenie?![]() O co tutaj chodzi? :-( Ten post edytował zoomol 11.03.2014, 09:15:09 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Ad. 1. Zapakuj to w funkcję przyjmującą parametr $id. zamiast echo cały wynik zapakuj do zmiennej którą zwrócisz jako wynik funkcji.
-------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
lukasz_os dziękuję za podpowiedź.
Rozumiem, że odnosisz się do pierwszego postu w temacie i Pytania nr 1. Zmieniłem już ten kod - szperałem ostatnie 2 dni, siedzę nad tym i wydłubałem coś takiego:
Działa to dobrze, aczkolwiek mam problem z wyświetlaniem - tak jak w ostatnim poście. NIE DZIAŁAJĄ mi natomiast następujące rzeczy: 1. Do tablicy POST przekazują się tylko dane z pierwszego wiersza ( ![]() Gdy generuje się tabelka z pozycjami i checkbox'ami, zachowanie formularza jest następujące: a) gdy wybiorę pierwszą pozycję z tabeli (i tylko tą jedną pozycję) - formularz się przekazuje ![]() c) gdy wybiorę pierwszą pozycję i dowolną inną - formularz się przekazuje, a jako ID zwraca najniższą pozycję zaznaczoną w tabeli (tzn. patrząc na screen z IE - jeśli zaznaczę pozycję pierwszą i trzecią, to ID zwróci mi w POST [11], a jeśli zaznaczę pierwsze dwie - to zwróci mi ID [5]). Nie wiem o co tu chodzi - nie radzę sobie z danymi przekazanymi w checkbox'ach generowanych dynamicznie na podstawie zapytań MySQL... POMOCY 2. Mam skrypt sprawdzający czy minimum jeden checkbox został zaznaczony. Niestety nie działa mi to - a raczej działa w powiądzaniu z punktem powyżej, czyli: a) gdy wybiorę pierwszą pozycję z tabeli (i tylko tą jedną pozycję) - formularz się przekazuje, czyli skrypt działa ![]() c) gdy wybiorę parę pozycji, ale bez pierwszej - formularz się nie przekazuje - skrypt generuje błąd i wyświetla komunikat z alert'u c) gdy wybiorę pierwszą pozycję i dowolną inną - formularz się przekazuje. WTF? :-( Kod java script:
Heeelp ![]() ![]() Ten post edytował zoomol 11.03.2014, 09:59:08 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
W poprzednim poście odnosiłem się do tego:
Cytat Mam teraz taki problem: jak zadeklarować poniższy kod, abym mógł do niego odwołać się jakąś zmienną? Czy to w ogóle możliwe? "Tablice w tablicach" obsługujesz tak: zwróci pierwszy element tablicy z checkboxami i jest to jedyny sposób odebrania wszystkich checkboxów. Ad. 2. Przed wejściem w pętlę for sprawdzającą wszystkie elementy formularza zadeklaruj zmienną: var checked=false; jeżeli jakikolwiek checkbox jest kliknięty: checked=true; Po wyjściu z pętli sprawdzasz wartość checked i albo przesyłasz formularz albo wyświetlasz alert. -------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]() ![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
lukasz_os dzięki za podpowiedzi.
Po kolei: 1. odwołanie do tablicy, o którym napisałeś, zwraca mi wartość ZAWSZE tylko jednego checkbox'a. A ja czasami zaznaczam kilka, to zawsze wartość jest najniższego z wyświetlonej tabeli... Nie wiem, jak dobrać się do tych kolejnych... Jakąś pętlą? Jak wydobyć te kolejne zaznaczone checkbox'y z tablicy? czy wartość [0] w może być zmienną, dzięki której wyświetlę wszystkie kliknięte checkbox'y? 2. walidacja zaznaczonych checkbox'ów: poszperałem, popróbowałem i jednak stoję w miejscu... Znalazłem ten post, w którym chyba jest zawarte to, o czym piszesz. Dostosowałem kod pod siebie, ale niestety - nic to nie zmienia:
Działa to tak "piąte-przez-dziesiąte", mianowicie tak jak pisałem we wcześniejszym poście z podpunktami (a, b, c, d) - zachowanie identyczne... [Edit] Ad. 2 (Walidacja javascript): Znalazłem taki skrypt:
Super zadziałało. Problem na razie rozwiązany. Pozostaje Ad. 1 - czyli zaznaczenie więcej niż 1 checkbox'a (jak to wyświetlić?) HELP Ten post edytował zoomol 11.03.2014, 15:40:44 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Ad 1.
popróbuj z pętlą foreach dla $_POST['id']; Ad. 2.
chyba tyle ![]() -------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
lukasz_os dzięki za cierpliwość i odpowiedzi
![]() Wracając do sedna. Walidację mamy z głowy - bardzo dziękuję za pomoc. Pozostaje kwestia pętli foreach. Poczytałem o niej i zastosowałem na razie coś takiego:
Pętelka ładnie listuje mi zakliknięte checkbox'y do postaci: Kod klucz 0 ma wartość: 7 klucz 1 ma wartość: 12 klucz 2 ma wartość: 14 W formularzu <form>, pole <input> wygląda teraz tak: To działa i jest OK. Idąc dalej, chcę wyświetlić z bazy MySQL te pozycje, których ID jest równe wartościom $value. Spróbowałem z czymś takim:
Problem w tym, że jeśli zaznaczę więcej niż jedną pozycję, to pętla foreach wyświetli mi wszystkie pary kluczy $key i wartości $value, natomiast MySQL zwraca mi tylko ostatnią pozycję z pętli... Dlaczego i jak się z tym uporać? Ten post edytował zoomol 11.03.2014, 17:46:48 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
ID jest tablicą.
|
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Turson dziękuję za naprowadzenie oraz kod.
Niestety, po wykonaniu zapytania, zwraca mi następujący komunikat: ( ! ) Warning: implode(): Invalid arguments passed in C:\wamp\www\index.php on line 2 i Błąd zapytania SELECT w MySQL. - czyli wychodzi z tego, że przekazywane są dane nie zgodne z tym, co może być w warunku WHERE. [Edit] Próbowałem jeszcze w ten sposób: ...ale to nic nie pomaga/niczego nie zmienia. Nadal jest ostrzeżenie o złych argumentach.... Jest do rozgryzienia jeszcze sprawa wyświetlania się strony inaczej w IE i inaczej w Chrome (screen'y parę postów wyżej). Czy jest szansa na nakierowanie mnie, gdzie szukać? Pliki jako utf-8 (bez BOM) już mam - wszystko po bożemu. Próbowałem dodać ale nic to nie daje... Chrome cały czas źle wyświetla, a IE dobrze ![]() Ten post edytował zoomol 11.03.2014, 18:54:45 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Skoro chcesz tylko pobrać id zaznaczonych checkboów aby zapytaniem SQL pobrać rekordy prezentów to niepotrzebna ci pętla foreach.
Zrób tak:
-------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]()
Post
#14
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
lukasz_os dziękuję bardzo! To załatwiło sprawę z odczytywaniem ID z checkbox'ów i wpisywaniem ich w SELECT z bazy MySQL
![]() ![]() Nadal pozostaje jednak kwestia wyświetlania. Dla przypomnienia screen'y z: IE: ![]() i Chrome: ![]() Jak do tego podejść? -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Wybacz, ale nie jesteśmy wróżkami, żeby zgadnąć bez kodu
|
|
|
![]()
Post
#16
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Turson - zgadza się, rozumiem to. Strona ma funkcjonować w jednym pliku index.php, który sięga require'm do head.php (nagłówek html) oraz foot.php (stopka html). Formularz przekazuje dane za pomocą POSTa w ramach index.php. Praktycznie całość kodu jest w moim pierwszym poście - obydwa kody są wklejone.
Sprawa dotyczy wyświetlania, więc nie wiem, czy również plik CSS ma tu jakieś znaczenie. Jeśli ma - to wkleję kod. Tabele <table> są zadeklarowane poprawnie w php i mają poprawnie zadeklarowane style w CSS. Szperając w necie, znalazłem tylko informacje dot. kodowania UTF-8 i zapisywania plików php w kodowaniu 'UTF-8 (bez BOM)' - tak też zrobiłem (w Notepad++). Później poczytałem również o funkcji ob_start(); i ob_end_flush(); - zastosowałem je zgodnie z 4 postami wyżej, ale niestety nic to nie dało. Jeśli spotkaliście się z podobnym zachowaniem lub wiecie jak pomóc, to poproszę o pomoc. Ten post edytował zoomol 12.03.2014, 13:14:14 -------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 4 291 Pomógł: 829 Dołączył: 14.02.2009 Skąd: łódź Ostrzeżenie: (0%) ![]() ![]() |
Miałem na myśli html i css
|
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Wklej wynikowy kod html (źródło strony) oraz plik css. Nikt z fusów nie wywróży co tam dokładnie siedzi
![]() -------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]() ![]()
Post
#19
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 29.07.2006 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
OK, sorki - niezaQmałem...
kod HTML index.php po wyświetleniu:
Plik CSS:
-------------------- Życie to marna gra.... Ale z bardzo dobrą grafiką ;)
Life is brutal, there is no question about it.... ;-/ |
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 203 Pomógł: 55 Dołączył: 23.11.2008 Skąd: UKF Ostrzeżenie: (0%) ![]() ![]() |
Plik CSS ".tabela_prezentow td" usuń display:block;
![]() -------------------- Pomagam jeśli mam czas oraz jak się na tym znam :D
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.04.2025 - 07:01 |