Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzenie formularza na bieżącej stronie, wynik na kolejnej
Forum PHP.pl > Forum > Przedszkole
Szpak4
Witam serdecznie.
Mam pytanie, które zakładam, że jest banalne w swej prostocie, aczkolwiek nie wiem jak znaleźć na nie odpowiedź, więc kieruję się do Was.
Otóż zrobiłem mały skrypcik do wrzucania plików na serwer. Na chwilę obecną działa on w tej sposób:

Są 3 pola, z czego dwa obowiązkowe do wypełnienia przez użytkownika a jedno opcjonalne (textarea). Kiedy wymagane pola są wypełnione i wybrane są pliki, skrypt spełnia swoje zadanie i wrzuca pliki na serwer, tworząc dodatkowo div'a z informacją (nazwami) wrzuconych plików. Do file inputa mam dodatkowo podpiętego JS aby poniżej wyświetlał wybrane pliki ale to nie jest w zasadzie istotna informacja.
Kiedy jednak wymagane pola nie zostaną wypełnione, po naciśnięciu przycisku wysłania, pliki nie są przesyłane a obok pól wyświetlana jest informacja o tym, że nie zostały one wypełnione. Dopóki nie będzie w nich wpisany tekst, skrypt nie przepuści żadnego pliku na serwer.

Otóż teraz chciałbym zrobić tak aby po wysłaniu plików lista z nimi ładowała się na nowej stronie (co wiem jak zrobić - teraz wykonuję POSTa na tej samej stronie - zmienię jego wykonywanie na inną np. upload.php), lecz jak zrobić aby kiedy pola nie są wypełnione poprawnie PHP je sprawdzało i zostawało na tej samej stronie? Dopiero po poprawnym wypełnieniu wczytywana zostałaby nowa strona z informacją o pozytywnym rezultacie.

Czy ktoś mógłby mnie naprowadzić w jaki sposób można to osiągnąć?
Dziękuję i pozdrawiam.
patryczakowy
wykonaj skrypt na tej samej stronie a w przypadku poprawnego wykonania zrób przekierowanie na następną stronę np przy pomocy
  1. header('location: upload.php');

a jeśli są błendy to zostajesz na tej samej stronie
Szpak4
Zaczerpnąłem troszkę informacji na temat 'header' i o to co uzyskałem:

Cytat
You can use the header() function to send a new HTTP header, but this must be sent to the browser before any HTML or text (so before the <!DOCTYPE ...> declaration, for example).

header('Location: '.$newURL);


Czyli nie można użyć tego w takiej postaci,
  1. if ($noError) header('location: upload.php');


gdzieś pośrodku strony?
patryczakowy
No nagłówki musisz wysłać zanim wyświetlisz cokolwiek najlepiej sprawdzanie wartości przeprowadź na samym początku błędy zapisz do zmiennej którą później możesz wyświetlić po za tym może widok warto generować na samym końcu i oddzielić go od reszty kodu poczytaj o mvc.
Szpak4
Okej, pokombinuję jutro z tym i dam znać jak poszło. Dzięki za pomoc!

@Edit

Zrobiłem tak jak mi podpowiedziałeś. Działa znakomicie. Będę musiał jeszcze tylko dodać usuwanie informacji o wgranych plikach, tak aby po cofnięciu strony nie można było wgrać tych samych plików ponownie. Przeczytałem, że mogę to zrobić za pomocą sesji lub cookie. Co lepsze w tej sytuacji?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.