Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]przesyłanie wiadomości między stronami
Forum PHP.pl > Forum > Przedszkole
intermediate
Witam,

Jestem początkujący. Mam 2 pliki:

index.php, gdzie mam formularz do wypelnienia oraz zapisz.php, ktory wykonuje mi zapis danych z formularza do bazy. Po pomyslnym zaladowaniu chce wyswietlic odpowiedni komunikat, ale tak żeby wiadomość została wyświetlona na stronie index.php w określonym miejscu. Nie wiem za bardzo jak to zrobić, domyślam się że trzeba skorzystać z sesji oraz funkcji header().
Polonistyk
Po wykonaniu
  1. header("Location: index.php?akcja=wykonano");

W pliku index.php
  1. if($_GET['akcja'] == 'wykonano'){
  2. echo "<div id='wykonano'>Wykonano</div>";
  3. }
thek
I dobrze myślisz... Ustawiasz w sesji sobie zmienną z komunikatami. Zazwyczaj jest to jakaś tablica. Na stronie formularza sprawdzasz, czy ona istnieje i czy coś ma. Jeśli tak, to wyświetlasz elementy tablicy i je usuwasz, bo może tylko raz się pojawić taka wiadomość. To tak zwane informacje flash, czyli jednorazowe. Wiadomości te ustawiasz wewnątrz skryptu, który zajmuje się obrabianiem informacji POST, czyli ten co jest jako action formularza.
Jak to może wygladać przykładowo?
Skrypt formularza:
  1. <?php
  2. ?>
  3. Tu początek layoutu jako html
  4. <?php
  5. //tu częśc z komunikatami
  6. if( isset( $_SESSION['komunikaty'] ) && count( $_SESSION['komunikaty'] ) > 0 ) {
  7. foreach( $_SESSION['komunikaty'] AS $single ) {
  8. ?>
  9. <div class="komunikat <?php echo $single['type']; ?>"><?php echo $single['message']; ?></div>
  10. <?php
  11. }
  12. }
  13. //czyszczenie tablicy komunikatów
  14. $_SESSION['komunikaty'] = array();
  15. ?>
  16. Tutaj caly formularz

a jak przetwarzanie?
  1. <?php
  2. if( isset( $_POST['zaloguj'] ) ) {
  3. //tu sobie robisz co chcesz z formularzem i jeśli napotkasz błąd, to możesz dać:
  4. $_SESSION['komunikaty'][] = array( 'type' => 'error', 'message' => 'Jakis tekst czego błąd tyczy');
  5. //lub dać informację o powodzeniu
  6. $_SESSION['komunikaty'][] = array( 'type' => 'ok', 'message' => 'Jakis tekst o sukcesie');
  7. //czy też ogólna informację, że coś zrobiłeś
  8. $_SESSION['komunikaty'][] = array( 'type' => 'info', 'message' => 'Jakis tekst informacyjny');
  9. }
  10. //na koniec przekierowanie na stronę formularza
  11. header( 'Location: formularz.php' );
Oczywiście nie zapomnij o ostylowaniu... Ja tutaj dałem przykładowo 4 klasy, ktore miały by postać:
  1. div.komunikat {} /* jakaś ogólna o tym jak komunikaty wyglądają na stronie */
  2. div.komunikat.error {} /* jak komunikaty błędów wyglądają */
  3. div.komunikat.ok {} /* jak komunikaty powodzenia wyglądają */
  4. div.komunikat.info {} /* jak komunikaty informacyjne wyglądają */
Jakwidzisz.. Nie jest to trudne nawet w prostej wersji smile.gif
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.