Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: formularz button i zmienne sesyjne
Forum PHP.pl > Forum > Przedszkole
123tomek
Witam!
Mam 2 problemy:
Mam plik formularza ktory skalda sie z 3 czesci:
1. formularz gdzie wklepuje sie dane
2. czesc gdzie te dane sa wyswietlane i 2 buttony powrot i zatwierdz
3. czesc ktora zapisuje dane do pliku

Dziala to tak ze po wyslaniu submitem danych formularza, ustawiam zmienna sesyjna na to ze dane zostaly wyslane. Gdy trzeba je poprawic wracam do kroku pierwszego gdzie mozna dokonac korekty. Gdy jest ok to ma sie wykonac czesc kodu wstawiajaca dane do pliku.
Napotkalem jednak problem (nr 1) przy definiowniu buttona powrot. Po onclick chce by zmienila sie wartosc zmiennej i formularz wracal z nowa wartoscia do kroku 1 ale ta zmienna jest ustawiana od razu kiedy wyswietlany jest button. Pewnie cos namieszalem z java ale wzor wzialem z tad: http://forum.php.pl/index.php?showtopic=24122&hl=button

  1. <BUTTON TITLE="Powrot" OnClick='javascript: <? $_SESSION['ok'] = 'NIE';?> history.back()'>
  2. Powrot


Co zrobic by ta zmienna byla ustawiana na NIE dopiero po kliknieciu na ten button?
Od razu pytanie czy po onclick moge wstawic wiecej kodu php/HTML? Tzn czy mozna tam wstawic kawalek kodu wyswietlajacego jakies dane, zmieniajace wiecej zmiennych itp.
Przycisk zatwierdz chce zrobic podobnie (ale na razie nie wiem jak odswiezyc strone po zatwierdzeniu - problem nr 2) za pomoca button albo wyslac dane do formularza poprzez nastepny przycisk submit - ale jeszcze tego nie testowalem.
Pozdrawiam
Tomek

PS. Bez czesci wyswietlajacej podglad wprowadzonych danych (krok 2) formularz dzialal wczesniej ok
netzah
Cytat
czy po onclick moge wstawic wiecej kodu php/HTML?


Nie mozesz tam wstawic w ogole kodu php. W topicu, jaki podales zmieniana jest zmienna JavaScriptu, a nie php. Z tej sytuacji mozesz wybrnac na wiele sposobow, np.

- zrobic 2 submity, po wyslaniu formularza sprawdzic, ktory zostal wcisniety i podjac odp. dzialanie

- w zdarzeniu onClick mozesz zmianic wartosc pola action, zeby formularz wysylal sie do roznych adresow, w zaleznosci od wcisnietego guzika

- zamiast ustawiac zmienna w sesji, mozesz ustawic w onClick sobie cookie, bo JavaScript na to pozwala
123tomek
> zrobic 2 submity, po wyslaniu formularza sprawdzic, ktory zostal wcisniety i podjac odp. dzialanie

Zrobilem tak i niestety cos sie calkiem kaszani - jesli klikam ok to po pierwsze nie przekazuje mi do formularza wartosci ok z tego submita (nie wiem czy to dobrze wpisuje
  1. <input type=submit name=dane_ok value='ok'>

) a po drugie wczesniej wpisane zmienne do formularza (tytul i komentarz) zostaja obcinane do jednego wyrazu (do pierwszej spacji)
Pewnie moj kod jest niezle zamieszany ale prosze na niego zerknac i naprowadzic na to co robie nie tak

  1. <?php
  2. header(&#092;"Cache-control: private\"); //dzieki temu po daniu wstecz pola formularza sa wypelnione
  3. $lang=&#092;"pl\";
  4.  
  5. if (!isset($news_przetworz)) //sprawdza czy juz bylo odswiezanie
  6. {
  7. $_SESSION['zalog'] = '';
  8. $_SESSION['dane_ok'] = '';
  9. ?>
  10.  
  11. <form action=news.php metod=POST>
  12. <input type=hidden name=news_przetworz value=1>
  13. <input type=hidden strona=108 value=1>
  14. <TABLE border=0>
  15. <TR>
  16. <TD width=80>
  17. Tytuł:
  18. </td><td width=600>
  19.  <input type=text name=tytul size=50>
  20. <BR>
  21. </td>
  22. </tr>
  23. </table>
  24.  
  25. <BR>
  26. Data, godzina oraz oraz osoba wpisująca informację,<BR>zostaje zapisana automatycznie do newsa
  27. <BR> <BR> <B><U>Możliwe znaczniki:</U></B>
  28. <BR>
  29. &lt;B&gt;<B>Pogrubienie </B>&lt;/B&gt; lub &lt;STRONG&gt;<STRONG>Pogrubienie </STRONG>&lt;/STRONG&gt;<BR>
  30. &lt;I&gt;<I>Pochylenie</I>&lt;/I&gt; lub &lt;EM&gt;<EM>Pochylenie</EM>&lt;/EM&gt;<BR>
  31. &lt;U&gt;<U>Podkreślenie</U>&lt;/U&gt;<BR>
  32. &lt;B&gt;&lt;I&gt;<B><I>Pogrubienie i Pochylenie</I></B>&lt;/I&gt;&lt;/B&gt; 
  33. <? echo $lang; ?>
  34. <table border=0>
  35. <TR>
  36. <TD width=80>
  37. Komentarz:
  38. </td><td width=600>
  39. <textarea rows=12 cols=50 name=komentarz size=50>wpisz wiadomosc</textarea></textarea><BR><BR>
  40. </td>
  41. </tr>
  42. </table>
  43. <input type=submit name=albo value='przeslij'>
  44. <input type=hidden name=data value=<? echo date(&#092;"d-m-Y\") ?>>
  45. <input type=hidden name=godzina value=<? echo date(&#092;"H:i:s\") ?>>
  46. <input type=hidden name=osoba value=\"ADMIN\">
  47. </form>
  48. <?
  49. } else 
  50. {
  51. //if (($_SESSION['zalog'] <> 'Y') and ($_SESSION['dane_ok'] <> 'Y')) 
  52. if ($dane_ok <> 'ok') 
  53. {
  54. // echo \"sesja nie zalogowana - loguje\".$_SESSION['zalog'];
  55. // $_SESSION['zalog'] = 'Y';
  56. //echo $tytul.\"<BR>\".$osoba.\"<BR>\".$data.\"<BR>\".$godzina.\"<BR>\";
  57. //echo nl2br($komentarz);
  58. echo &#092;"dane_ok=\".$dane_ok;
  59.  
  60. if ($tytul == '' or empty($tytul) or $komentarz == '' or empty($komentarz)) 
  61. { 
  62. echo &#092;"<CENTER><h1>Błąd</h1>n<p>Nie wypełniłeś pola <b>Tytył</b> i/lub <b>Komentarz</b></p></CENTER>\"; 
  63. }
  64. else echo&#092;"<CENTER><B>Sprawdź poprawność danych.</B></CENTER><BR>\";
  65. //echo \"<a href=\"javascript:history.back()\">Powrot do formularza</a></body></html>\"; 
  66. ?>
  67. <TABLE width=80% border=0>
  68. <TR bgcolor=#00FFF0><TD><?echo $data.&#092;" \".$godzina.\" \".$osoba; ?></TD></TR>
  69. <TR bgcolor=#FFF000><TD><?echo $tytul;?></TD></TR>
  70. <TR bgcolor=#FFFECB><TD><?echo $komentarz;?></TD></TR>
  71. </table>
  72. <BR><BR>
  73. <form action=news.php metod=POST>
  74.  <input type=submit name=dane_ok value='ok'>
  75.  <input type=hidden name=news_przetworz value=1>
  76.  <input type=hidden name=strona value=108>
  77.  <input type=hidden name=lang value=<?=$lang?>>
  78.  
  79.  <input type=hidden name=data value=<? echo date(&#092;"d-m-Y\") ?>>
  80.  <input type=hidden name=godzina value=<? echo date(&#092;"H:i:s\") ?>>
  81.  <input type=hidden name=osoba value=<? echo $osoba ?>>
  82. <input type=hidden name=tytul value=<? echo $tytul ?>>
  83. <input type=hidden name=komentarz value=<? echo $komentarz ?>>
  84. </form>
  85. <BUTTON TITLE=\"Korekta\" OnClick='javascript:history.back()'>
  86. Korekta
  87. </BUTTON> 
  88.  
  89. <?//echo \"sesja\".$_SESSION['zalog'].\"dane\".$_SESSION['dane_ok'];
  90. // echo \"<BR>bo:\".$bo.\" albo:\".$albo.\"daneoki:\".$dane_ok.\"koment:\".$komentarz;
  91. //exit;
  92. }else echo &#092;"sesja zalogowana: \".$_SESSION['zalog'];
  93.  
  94. //if (($_SESSION['zalog'] <> 'Y') and ($_SESSION['dane_ok'] == 'Y')) 
  95. //if (($_SESSION['zalog'] <> 'Y') and ($dane_ok == 'ok')) 
  96. if ($dane_ok == 'ok')
  97. {
  98. //$uchwyt=fopen($lang.\"/\".\"newsy.txt\",\"a+\");
  99. $uchwyt=fopen(&#092;"newsy.txt\",\"a+\");
  100. if ($uchwyt==0) //blad bylo !=1 i raz dzialalo a raz nie
  101. {
  102.  echo &#092;"Blad otwarcia pliku\";
  103.  exit;
  104. }
  105.  
  106. $ok=fputs($uchwyt,$data.&#092;" \".$godzina.\" \".$osoba.\"n<B>\".$tytul.\"</B>n\".$komentarz.\"nEONn\");
  107. if ($ok!=0)
  108. {
  109. echo &#092;"Zapis OK zalogowany: \".$zalog.\"dane_ok: \".$dane_ok;
  110. }
  111. else 
  112. {
  113.  echo &#092;"błąd zapisu\";
  114.  exit;
  115. }
  116. $_SESSION['zalog'] = 'Y';
  117. fclose($uchwyt);
  118. //include ($lang.\"/\".\"news_show.php\");
  119. session_register('nowy_news');
  120. if (session_is_registered('nowy_news')==0) echo &#092;"ERROR nowy news\";
  121. include (&#092;"news_show.php\");
  122.  
  123.  
  124. }else echo &#092;"SESJA zapisana: \".$_SESSION['zalog'];
  125. }
  126. ?>
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.