Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z ponownym submitowaniem formularza
Forum PHP.pl > Forum > Przedszkole
djair
Witam....mam problem z formularzem i dodaniem wartosci do bazy....tzn. chce zrobic tak aby po wykonaniu formularza nie mozna bylo powrocic do niego przyciskiem wstecz w przegladarce ...druga sprawa jest taka ze ten formularz powinien byc wywolywany 3 razy poniewaz bedze przeprowadzal 3 pomiary i na samym koncu chce aby wyswitlal wszystkie pomiary i poprzez zatwierdzenie wartosci zostaly wpisane do bazy...prosze o jakas podpowiedz jak to zrobic

kod formularza
  1. <form action="przetworz.php" method="post" onsubmit="return sprawdz(this)">
  2. <fieldset title="Wodomierze"><legend align="buttom">Wodomierze</legend>
  3.  Producent <input type="text" name="producent" size="10">
  4. <br>
  5. Typ                                    <input type="text" name="typ" size="10">
  6. <br>
  7. Numer Wodomierza                          <input type="text" name="numer" size="5">
  8. <br>
  9. Natężenie przepływu q                     <input type="text" name="nat_przep_q" size="5" onblur="format_kodu(this)">
  10.  
  11. dm<sup>3</sup>/h
  12. <br>
  13. Wskazania koncowe H<sub>2</sub>             <input type="text" name="wsk_kon" size="5" onblur="format_kodu(this)"> dz.ele.
  14. <br>
  15. Wskazania wzorca V<sub>p2</sub>             <input type="text" name="wsk_wz" size="5" onblur="format_kodu(this)"> dm<sup>3</sup>
  16. <br>
  17.  
  18. Wskazania koncowe V<sub>n2</sub>            <input type="text" name="wsk_kon_wod" size="5" onblur="format_kodu(this)">             dm<sup>3</sup>
  19. <br>
  20. Wskazania poczatkowe V<sub>n1</sub>         <input type="text" name="wsk_pocz_vn1" size="5" onblur="format_kodu(this)">   dm<sup>3</sup>
  21. <br>
  22.  
  23. Czas pomiaru t                              <input type="text" name="czas_pom" size="5" onblur="format_kodu(this)">  s
  24. <br>
  25.  
  26. <br>
  27.  
  28. <p class="przyciski"><input type="submit" value="sprawdz" />
  29. <input type="reset" value="reset" />
  30. </p></font>
  31. </form>


kawalek kodu przetworz.php
  1. <?php
  2.   $producent=$HTTP_POST_VARS['producent'];
  3.   $typ=$HTTP_POST_VARS['typ'];
  4.   $numer=$HTTP_POST_VARS['numer'];
  5.   $nat_przep_q=$HTTP_POST_VARS['nat_przep_q'];
  6.   $wsk_kon=$HTTP_POST_VARS['wsk_kon'];
  7.   $wsk_wz=$HTTP_POST_VARS['wsk_wz'];
  8.   $wsk_wd_pocz= 0;
  9.   $wsk_wz_pocz= 0;
  10.   $op = $wsk_wz - $wsk_wd;
  11.   $wsk_kon_wod= $HTTP_POST_VARS['wsk_kon_wod'];
  12.   $wsk_pocz_vn1= $HTTP_POST_VARS['wsk_pocz_vn1'];
  13.   $on = $wsk_kon_wod - $wsk_pocz_vn1;
  14.   $czas_pom = $HTTP_POST_VARS['czas_pom'];
  15.   $str_ob = ($op / $czas_pom) * 3600;
  16.   $blad = (($on - $op) / $op ) * 100;
  17.  
  18.  
  19.  if ( !$producent || !$typ || !$numer || !$nat_przep_q || !$wsk_kon || !$wsk_wz || !$wsk_kon_wod || !$wsk_pocz_vn1 || !$czas_pom )
  20.    {
  21.      echo 'Nie podano wszystkich potrzebnych danych.<br />'
  22.           .'Wróć do poprzedniej strony i spróbuj ponownie.';
  23.      exit;
  24.   }
  25.  
  26. ?>



A do html [html]
poprawiam
---
nospor



myslalem zeby zrobic to tak aby po wpisaniu numeru wodomierza system zapamietywal ten identyfikator i przy drugim i trzecim pomiarze wyswitlal tylko formularz do wpisywania wartosci i ewenetulanie wyswitlal numer wodomierza....tylko nie za bardzo wiem jak to zrobic...wiem ze cos takiego da sie zrobic w oparciu o sesje ale nie wiem jak zrob to aby przy kliknieciu wstecz formularz sie nie wyswitlal...prosze o pomoc...z gory dziekuje
TomASS
Gdy wyślesz formularz, to w skrypcie, który będzie dodawał do bazy danych, musisz ustawić jakąś zmienną "sesyjną":

  1. <?php
  2.  
  3. $_SESSION['zmienna']=1;
  4.  
  5. ?>


a w samym formularzu zrób:

  1. <?php
  2.  
  3. if(!$_SESSION['zmienna']){
  4.  //formularz
  5. }
  6.  
  7. ?>


To by było na pierwszą część pytania.

A na drugą część:

Na pewno w skrypcie dodawania do bazy masz:
  1. <?php
  2.  
  3. $query = "INSERT INTO tabela......";
  4. //dodaj:
  5. $ID_czegos_tam = mysql_inserted_id();
  6. session_register("ID_czegos_tam");
  7.  
  8. ?>


W samym formularzu, sprawdzaj czy jest jakaś wartość w zmiennej $_SESSION['ID_czegos_tam'] i jeśli nie ma, to wyświetl cały formularz, a jak jest to:

  1. <?php
  2.  
  3. $query = "SELECT * FROM tabela WHERE ID=$_SESSION['ID_czegos_tam']";
  4.  
  5. ?>



Mam nadzieje, że dobrze zrozumiałem problem....powodzenia
djair
dzieki za pomoc...z pierwszym problemem sobie poradzilem bez problemu ale przy drugim mam dylemat...


czy moge zrobic tak ze przy pierwszym wypelniu formularza i dodaniu danych do bazy ,zarejestuje do sesji numer wodomierza:
  1. <?php
  2.  
  3. $query = "INSERT INTO wodomierze VALUES... '".$numer."',...";
  4.  
  5. ?>


i pozniej sprawdze w formularzu
  1. <?php
  2.  
  3. if  $_SESSION['numer']
  4.  
  5.  
  6. ?>


może jednak sie nauczysz korzystac z bbcode ?
poprawiam
----
nospor


to wyswitl numer wodomierza i ponownie formularz w celu wypelnienia danych do 2 pomiaru ?....

tylko pozniej jak zrobic zeby system wiedzial ze po wpisaniu danych z 2 pomiaru mial przejsc do 3 i zarazem ostaniego pomiaru ? w tym tkwi moj problem
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.