Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Powrót do wypełnionego formularza
jacusek
post
Post #1





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
ferrero2
post
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 32
Dołączył: 5.08.2008
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Właśnie po to jest javascript, aby tak nie kombinować (IMG:style_emoticons/default/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
Go to the top of the page
+Quote Post
jacusek
post
Post #4





Grupa: Zarejestrowani
Postów: 262
Pomógł: 3
Dołączył: 18.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dzięki za rady, ale na razie Java Script nie wchodzi w grę (za mała wiedza) (IMG:style_emoticons/default/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ć.
Go to the top of the page
+Quote Post
Szeszek1992
post
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 29
Dołączył: 20.05.2009

Ostrzeżenie: (0%)
-----


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.  
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 13:54