Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Powrót do wypełnionego formularza
Forum PHP.pl > Forum > Przedszkole
jacusek
Witam.
Mam taki oto skrypt wysyłający do bazy dane z obsługą błędów:
  1. <?php
  2. include_once ('cookie.php');
  3. include('connect2.php');
  4. if(empty($_GET['nazwisko'])||empty($_GET['imie'])||empty($_GET['id_lek'])||empty($_GET['miasto'])
  5. ||empty($_GET['termin'])){
  6. echo "<center><b>!!!!SPRAWDŹ CZY WYPEŁNIŁEŚ WSZYSTKIE OBOWIĄZKOWE POLA!!!!</b></center>";
  7. echo "<center><h2><a href=\"pacjent.php\">WRÓC DO FORMULARZA</a></h2></center>";
  8. }
  9. if(!empty($_GET['PESEL'])){
  10. if((is_numeric($_GET['PESEL'])==false)||(strlen($_GET['PESEL'])<11)){
  11. die("PESEL MA NIEPRAWIDŁOWY FORMAT LUB JEST ZA KRÓTKI<br/>");
  12. }
  13. }
  14. if(!empty($_GET['tel'])){
  15. if((is_numeric($_GET['tel'])==false)||(strlen($_GET['tel'])<9)){
  16. die("NUMER TELEFONU MA NIEPRAWIDŁOWY FORMAT LUB JEST ZA KRÓTKI<br/>");
  17. }
  18. }
  19. if(!empty($_GET['tel_kom'])){
  20. if((is_numeric($_GET['tel_kom'])==false)||(strlen($_GET['tel_kom'])<9)){
  21. die("NUMER TELEFONU KOMÓRKOWEGO MA NIEPRAWIDŁOWY FORMAT LUB JEST ZA KRÓTKI<br/>");
  22. }
  23. }
  24. else{
  25. //pacjent bez PESEL
  26. if ($_GET['PESEL']==""){
  27. $query = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, adres, tel, tel_kom, rok_ur,wizyta,id_lek) values
  28. (NULL,"'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  29. "'.$_GET['miasto'].'",
  30. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'","'.$_GET['termin'].'",
  31. "'.$_GET['id_lek'].'")';
  32. $result=mysqli_query($mysqli,$query)
  33. or die(mysqli_error($mysqli));
  34. }
  35. //pacjenct z PESEL
  36. if((empty($_GET['id_pac']))&&(!empty($_GET['PESEL'])))
  37. {
  38. $query2 = 'insert into pacjenci (PESEL, nazwisko, imie, miasto, adres, tel, tel_kom, rok_ur,wizyta,id_lek) values
  39. ("'.$_GET['PESEL'].'","'.$_GET['nazwisko'].'","'.$_GET['imie'].'",
  40. "'.$_GET['miasto'].'",
  41. "'.$_GET['adres'].'","'.$_GET['tel'].'","'.$_GET['tel_kom'].'","'.$_GET['rok_ur'].'","'.$_GET['termin'].'",
  42. "'.$_GET['id_lek'].'")';
  43. $result=mysqli_query($mysqli,$query2)
  44. or die(mysqli_error($mysqli));
  45. }
  46. }
  47. $query3='call pac()';
  48. $result3=mysqli_query($mysqli,$query3);
  49. $query4='call plec()';
  50. $result4=mysqli_query($mysqli,$query4);
  51. ?>

I chciałbym go jeszcze wzbogacić o kilka funkcji. Po błędzie chciałbym żeby była możliwość powrotu do formularza, ale już wypełnionego, żeby nie trzeba było wypełniać go wszystkimi danymi ponownie.
I druga sprawa to przekierowanie do formularza pustego, jeżeli $query i $query2 zostało wykonane z sukcesem. Header niestety odpada, bo bez niego źle mi niektóre przeglądarki kodują znaki.
Nie chodzi mi o gotowe rozwiązania, raczej o nakierowanie gdzie i jakich funkcji powininem szukać.
Na razie jest to środowisko testowe postawione na Xamppie.
Z góry dzięki za pomoc
ferrero2
Nie będę tu pisał całego skryptu ale kilka rad :
1. Nie przesyłaj danych GET-em tylko POSTEM (nie wysyłasz wtedy danych jawnym tekstem).
2. Skrypt uzależnij od submita (np twój submit nazywa się "wyslij") to robisz tak
if ($_POST['wyslij'])
{
Po naciśnięciu Wyślij skrypt walidujący(może to być odrębny plik php dołączony na początku twojego skryptu za pomocą "require" lub nawet na samej górze skryptu dajesz jeszcze jeden warunek na to czy wystąpił błąd w której kolwiek z opcji formularza) sprawdza czy wystąpiły błędy (jeśli nie to dodaje do bazy, jeśli tak to wyświetla formularz wypełniony)
Tutaj umieszczasz formularz już wypełniony który wyświetli się użytkownikowi kiedy naciśnie WYŚLIJ i napotka na błąd.
Aby pola wypełnione były tym co wpisał użytkownik, trzeba w ich VALUE podać $_POST['nazwa_pola']
}
else
{
Tutaj umieszczasz pusty formularz który załaduje Ci się jak ktoś pierwszy raz kliknie na link do Niego.
}

Pisałem na szybko, jak coś pomyliłem to sorki, później tu zajrze.
Fifi209
Właśnie po to jest javascript, aby tak nie kombinować smile.gif Walidujesz po stronie użytkownika (oczywiście nie ufasz tym danym) - jeżeli nie ma obsługi javascript to, gdy źle wypełni straci możliwość "odzyskania" wpisanych danych. ;p
jacusek
Dzięki za rady, ale na razie Java Script nie wchodzi w grę (za mała wiedza) wstydnis.gif Dalej $_GET na razie może być bo właściwie chcę na moment obecny widzieć co jest przesyłane w linku - później to zmienię.
A reszty szczerze mówiąc nie bardzo potrafię sobie wyobrazić. Tzn. osobneego skryptu walidującego formularz. Ale muszę po prostu poszukać.
Szeszek1992
Ostatecznie można zrobić coś w tym stylu:
  1. <?php
  2. include_once ('cookie.php');
  3. include('connect2.php');
  4. //Warunki, jakie muszą spełnić dane
  5. if(empty($_GET['nazwisko'])||empty($_GET['imie'])||empty($_GET['id_lek'])||empty($_GET['miasto'])) $blad1=1; else $blad1=0;
  6.  
  7. if(is_numeric($_GET['PESEL'])==false || strlen($_GET['PESEL'])<11) $blad2=1; else $blad2=0;
  8.  
  9. if(is_numeric($_GET['tel'])==false || strlen($_GET['tel'])<9) $blad3=1; else $blad3=0;
  10.  
  11. if(is_numeric($_GET['tel_kom'])==false || strlen($_GET['tel_kom'])<9) $blad4=1; else $blad4=0;
  12.  
  13. //Sprawdzamy, czy wszystko jest OK.
  14. if($blad1==0 && $blad2==0 && $blad3==0 && $blad4==0){
  15. //zapytania do bazy
  16. }
  17. else{
  18. if($blad1==1) echo 'Blad nr1';
  19. if($blad2==1) echo 'Blad nr2';
  20. //Twój formularz
  21. echo '<br><form action="(jakisadres.php)" method="(get/post)">
  22. Nazwisko: <input type="text" name="nazwisko" value="'.$_GET['nazwisko'].'"><br>
  23. Imię: <input type="text" name="nazwisko" value="'.$_GET['imie'].'"><br>
  24. <input type="submit" value="wyślij"></form>';
  25.  
  26. }
  27.  
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.