Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Sesje oraz dodawanie danych
Forum PHP.pl > Forum > Przedszkole
dareksbs
Witam,

Aktualnie uczę się języka php i dopiero w nim raczkuje, więc proszę o wyrozumiałość smile.gif , próbuje napisać skrypt który będzie zbierał dane w krokach, przykład jedne informacje w jednym kroku inne w innym po tym pierwszym etc. i teraz kwestja czy to dobrze robię ! tzn. przypuśćmy że na pierwszej stronie będę miał 20 miejsc do wypełnienia... głupotą by było wpiswać to wszystko do zasady If, na pewno jest jakiś inne rozwiązania - może powinienem tylko pierwszę pole zaznaczyć tzn. jeśli post1 jest pusty wyświetl formularz 1, kolejne pytanie to czy dobrze zastosowałem polecenie if, czy po pierwszym if nie powinno być elseif lub jakaś inna funkcja która by kontynułowała skrypt.

Edit : i jeszcze jedna sprawa, nie wiem co zrobić aby po poście 3 nie wyświetlało mi ponownie pierwszego formularza próbowałem zamienić puste posty na sekcje, ale wyrzucało pustą stronę

Moje wypociny :

  1. <?php
  2. if (empty($_POST[post1]) and empty($_POST[post2])){
  3. echo '<html>
  4. <body>
  5. <form ation="text.php" method="POST">
  6. <input type="text" name="post1"><br />
  7. <input type="text" name="post2"><br />
  8. <input type="submit" value="submit">
  9. </form>
  10. </body>
  11. </html>';
  12. }
  13. if (isset($_POST[post1]) and isset($_POST[post2]) and empty($_POST[post3])){
  14. $_SESSION['post1'] = $_POST[post1];
  15. $_SESSION['post2'] = $_POST[post2];
  16. echo '<form ation="text.php" method="POST"><input type="text" name="post3"><br />
  17. <input type="submit" value="submit"></form>';
  18. }
  19. if (isset($_SESSION['post1']) and isset($_SESSION['post2']) and isset($_POST[post3])) {
  20. $_SESSION['post3'] = $_POST[post3];
  21. echo $_SESSION['post1'];
  22. echo '<br />';
  23. echo $_SESSION['post2'];
  24. echo '<br />';
  25. echo $_SESSION['post3'];
  26. }
  27. ?>


Z góry bardzo dziękuje za pomoc
b4rt3kk
Nie wiem czy dobrze zrozumiałem założenia skryptu.

  1. foreach ($_POST as $key => $value) {
  2. if (!empty($value)) $_SESSION[$key] = $value; // to przepisze wszystkie niepuste zmienne POST do tablicy sesyjnej
  3. }


Sprawdzenie z osobna każdej zmiennej $_POST czy jest ustanowiona nie jest konieczne, wystarczy warunek:

  1. if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  2. // dalsze działania
  3. }


jeśli formularz został przesłany to muszą istnieć zmienne POST. Istnienie choćby jednej implikuje istnienie reszty.

Być może przydatne w Twoim skrypcie okaże się używanie nazw tablicowych dla inputów:

  1. <input type="text" name="post[]"/> <!-- automatyczna inkrementacja -->
  2. <!-- lub -->
  3. <input type="text" name="post[1]"/> <!-- ręczna inkrementacja -->


A co do ostatniego pytania, formularz wsadź w ifa w stylu tego:

  1. if (!isset($_SESSION['post1']) AND !isset($_SESSION['post2'])) {
  2. // wyswietl formularz
  3. }
Sokon
Nie wiem czy dobrze rozumiem, chodzi Ci o zbieranie danych w krokach, ale to co napisałeś jak dla mnie trochę nie trzyma się kupy :-). Dzieląc na kroki najprościej będzie zrobić kilka osobnych formularzy i zamknąć je np. w funkcje.
  1. <?php
  2. function formularz1() {
  3. echo '<form action="" method="post">
  4. <input type="text" name="dane1" />
  5. <input type="text" name="dane2" />
  6. <input type="hidden" name="krok" value="krok2" />
  7. <input type="submit" name="Dalej >>" />
  8. </form>';
  9. }
  10.  
  11. function formularz2( $dane1, $dane2 ) {
  12. echo '<form action="" method="post">
  13. <input type="text" name="dane3" />
  14. <input type="text" name="dane4" />
  15. <input type="hidden" name="dane1" value="'.$dane1.'" />
  16. <input type="hidden" name="dane2" value="'.$dane2.'" />
  17. <input type="hidden" name="krok" value="krok3" />
  18. <input type="submit" name="Dalej >>" />
  19. </form>';
  20. }
  21.  
  22. function formularz3( $dane1, $dane2, $dane3, $dane4 ) {
  23. echo '<form action="" method="post">
  24. <input type="text" name="dane5" />
  25. <input type="text" name="dane6" />
  26. <input type="hidden" name="dane1" value="'.$dane1.'" />
  27. <input type="hidden" name="dane2" value="'.$dane2.'" />
  28. <input type="hidden" name="dane3" value="'.$dane3.'" />
  29. <input type="hidden" name="dane4" value="'.$dane4.'" />
  30. <input type="hidden" name="krok" value="krok4" />
  31. <input type="submit" name="Wyślij" />
  32. </form>';
  33. }
  34.  
  35. if( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
  36. if( $_POST['krok'] == "krok2" ) {
  37. formularz2( $_POST['dane1'], $_POST['dane2'] );
  38. } elseif( $_POST['krok'] == "krok3" ) {
  39. formularz3( $_POST['dane1'], $_POST['dane2'], $_POST['dane3'], $_POST['dane4'] );
  40. } elseif( $_POST['krok'] == "krok4" ) {
  41. //Kończy zbieranie danych w krokach i można je przesłać np. do bazy danych ...
  42. //Dostępne wartości pól formularza są w zmiennych:
  43. //$_POST['dane1'], $_POST['dane2'], $_POST['dane3'], $_POST['dane4'], $_POST['dane5'], $_POST['dane6']
  44. }
  45. } else {
  46. formularz1();
  47. }
  48. ?>


Zrobiłem to na szybko i nie testowałem ale raczej powinno być ok, w razie problemów pisz.
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.