![]() |
![]() ![]() |
![]() |
-czarnaowca- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Robię prosty panel admina jednak mam przy nim jako osoba początkująca sporo wątpliwości. Otóż mam formularz z kalendarzem w którym można wybrać datę (potrzebne gdy dodaję newsa i chcę go oznaczyć datą) :
W taki sposób mniej więcej definiuję to co wysyłam do bazy danych - z nagłówkiem i treścią jest ok, ale co zrobić z datą która ma yyyy dd i mm w oddzielnych polach oznaczonych różnym name:
czy da się to jakoś zgrupować? jak można to rozwiązać nie zmieniając możliwie wygodnej formy kalendarza? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Możesz albo przesłać sobie wszystkie trzy części daty i połączyć w jedną datę po stronie PHP, albo utworzyć sobie ukryte (hidden) pole o nazwie data i odpowiednio zmodyfikować funkcję selectDate, aby ustawiała wartość tego pola jako jedną datę. Miło by było, gdybyś podał z jakiego skryptu kalendarza korzystasz, a jeszcze lepiej jakiś odnośnik, bo może sam skrypt ma podobne możliwości.
|
|
|
-Gość- |
![]()
Post
#3
|
Goście ![]() |
korzystałam z generatora formularzy online - link
a jak mogę połączyć trzy części w jedną? w tabeli bazy danych mam jedno pole na datę - to mam najpierw metodą post potraktować kolejno:
a później zrobić coś takiego?: $data= tylko tu już nie wiem w jaki sposób ponieważ w bazie danych daty wyświetlane są w formacie date np. 2011-11-30 więc jak to powinno się poprawnie łączyć żeby działało? |
|
|
-Gość- |
![]()
Post
#4
|
Goście ![]() |
coś takiego wykombinowałam i data wyświetla się prawidłowo ale nijak jej wysłać nie można do tabeli - pojawia się: Notice: Undefined index: 2012-02-4 in C:\xampp\htdocs\strona\admin\podmenu\dodajnewsa.php on line 29 wpisana data w komunikacie błędu wprawdzie wyświetla się ładnie ale nie wysyła się, rozumiem że to ma pewnie związek z jej niepoprawnym zapisem? czy może inny błąd? |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
-Gość- |
![]()
Post
#6
|
Goście ![]() |
poprawiłam wg twojej instrukcji, w prawdzie notice zniknęło ale i tak pojawia się ""Błąd nie udało się dodać nowego rekordu" no i w bazie nie dodało się nic...
Połączenie z bazą na pewno działa ok bo inaczej wywaliłoby komunikat. w bazie są pola data, naglowek, tresc, idnewsa (z atrybutem auto increment). co jeszcze może być źle?
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 280 Pomógł: 46 Dołączył: 23.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Nigdy nie wyciszaj żadnych funkcji.
I napisz co wyskakuje. Plus lektura: Temat: Jak poprawnie zadac pytanie @DOWN: Trochę za wolno i nadal wyciszasz błąd. Ten post edytował Evinek 4.02.2012, 21:10:59 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Zamień linijkę 2 na:
i napisz, jaki błąd się pojawia. |
|
|
-Gość- |
![]()
Post
#9
|
Goście ![]() |
dobra, dzięki wam dodaje się rekord, mało tego nawet data dodaje się poprawnie ale w tresci co bym nie wpisała pojawia się "02" po wysłaniu do bazy
|
|
|
-Gość- |
![]()
Post
#10
|
Goście ![]() |
przepraszam, błąd wprost banalny z tym co pisałam teraz, dziękuję za pomoc już wszystko pięknie działa;)
|
|
|
-czarnaowca- |
![]()
Post
#11
|
Goście ![]() |
witam,
Wszystko działa, tylko teraz jeszcze dopracować chciałabym to do końca (dodają się rekordy, data też za co wielkie dzięki za pomoc) a mianowicie pojawiają mi się informacje: Notice: Undefined index: element_1 in C:\xampp\htdocs\..\admin\form\form\dodaj_newsa.php on line 89 Notice: Undefined index: element_3 in C:\xampp\htdocs\..\admin\form\form\dodaj_newsa.php on line 90 Notice: Undefined index: element_2_3 in C:\xampp\htdocs\..\admin\form\form\dodaj_newsa.php on line 91 Notice: Undefined index: element_2_2 in C:\xampp\htdocs\..\admin\form\form\dodaj_newsa.php on line 92 Notice: Undefined index: element_2_1 in C:\xampp\htdocs\..\admin\form\form\dodaj_newsa.php on line 93 Co mogą oznaczać te komunikaty? jeśli trzeba to wkleję wszystko ale nie wiem w zasadzie co miałoby być nie tak skoro te "element" to po prostu nazwy pól formularza w html ... ? coś trzeba dodać żeby to usunąć? mam tylko formularz który wcześniej wklejałam no i odwołania do niego w postaci zmiennych w php |
|
|
--mortus-- |
![]()
Post
#12
|
Goście ![]() |
No cóż, podczas bezpośredniego uruchomienia skryptu (zanim zatwierdzisz formularz) określone indeksy w tablicy $_POST nie istnieją. Trzeba zatem najpierw sprawdzić, czy formularz został zatwierdzony i czy odpowiednie elementy zostały przesłane:
|
|
|
-czarnaowca- |
![]()
Post
#13
|
Goście ![]() |
No więc notice się nie wyświetla i z tym jest ok, ale jest jeszcze o wiele goszy problem.
Otóż mam formularz a pod nim link do głównej strony panelu admina. Gdy z panelu admina wejdę w "dodaj newsa", następnie nic nie wpiszę i nie naciskając "submit" kliknę w link do głównej strony panelu to i tak do bazy zostaje dodany pusty news z polem daty uzupełnionym zerami. Czemu tak się dzieje i jakim sposobem mogę temu zapobiec? |
|
|
-Gość- |
![]()
Post
#14
|
Goście ![]() |
może inaczej, jak sprawdzić czy kliknięto "submit" ?
Kod <input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" /> jak zdefiniować warunek dla takiego if co by to miał sprawdzać? |
|
|
-Gość- |
![]()
Post
#15
|
Goście ![]() |
Kod if (isset($_POST["submit"])){ tu instrukcja wysyłająca} to zdaje się że działa ![]() Tyle że chciałabym jeszcze dodać coś takiego co zabezpieczy przed kolejnym dodaniem identycznego rekordu po odświerzeniu strony - czy można dodać coś takiego? jak? |
|
|
--mortus-- |
![]()
Post
#16
|
Goście ![]() |
Nie ma przed "tym" skutecznego zabezpieczenia. Możesz użyć przekierowania (funkcja header()) na tę samą stronę, ale jeśli później wciśniesz klawisz wstecz przeglądarki i zatwierdzisz wysyłanie danych, to odpowiedni rekord zostanie ponownie dodany. Co prawda możesz się przed tym ustrzec sprawdzając adres strony, z której "wchodzisz" na stronę przetwarzającą formularz (manual $_SERVER['HTTP_REFERER']), jednak nie jest to metoda, której można "zaufać" (szczegóły pod wskazanym adresem). Może dobrym rozwiązaniem okazałaby się CAPTCHA, jednak nie próbowałem.
|
|
|
![]()
Post
#17
|
|
![]() Grupa: Zarejestrowani Postów: 673 Pomógł: 106 Dołączył: 31.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tyle że chciałabym jeszcze dodać coś takiego co zabezpieczy przed kolejnym dodaniem identycznego rekordu po odświerzeniu strony - czy można dodać coś takiego? jak? tworzy osobny input (type=hidden), generujesz w nim losowy ciąg. po prawidłowym wysłaniu formularza zapisujesz ten kod do sesji. przy następnym wywołaniu (odświeżeniu strony) sprawdzenia czy formularz został wysłany oraz czy ten 'hash' nie został już wykorzystany. -------------------- |
|
|
--mortus-- |
![]()
Post
#18
|
Goście ![]() |
tworzy osobny input (type=hidden), generujesz w nim losowy ciąg. po prawidłowym wysłaniu formularza zapisujesz ten kod do sesji. przy następnym wywołaniu (odświeżeniu strony) sprawdzenia czy formularz został wysłany oraz czy ten 'hash' nie został już wykorzystany. No tak. Chyba najprostsza metoda, a do głowy mi nie wpadła. Pozwolę sobie jednak nieco sprostować, bo owszem trzeba wygenerować losowy ciąg znaków, ale do tablicy sesji zapisujemy ten ciąg wcześniej, a dokładnie w momencie, w którym tworzymy formularz wraz z dodatkowym ukrytym polem na nasz hash. Po zatwierdzeniu/wysłaniu formularza będzie już za późno. Trzeba natomiast po zatwierdzeniu formularza i prawidłowym dodaniu rekordu do bazy danych ten hash z tablicy sesji usunąć, a sprawdzenie, czy hash został już wykorzystany będzie polegać na sprawdzeniu, czy odpowiednia zmienna w ogóle istnieje w tablicy sesji. Kod:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 7.06.2025 - 13:57 |