Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z tablica $_session
lutador
post 12.03.2007, 18:39:57
Post #1





Grupa: Zarejestrowani
Postów: 183
Pomógł: 3
Dołączył: 5.03.2007
Skąd: Opole

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


witam

Od pewnego czasu mam problem sesjami i nie umiem sobie poradzic, napisalem bardzo prosty skrypt oparty na sesji ale nawet on mi nei dziala sad.gif moglby mi ktos pomoc i powiedziec co ejst z nim nie tak..

1 plik
  1. <?php
  2.  
  3.  
  4. print "<FORM ACTION="tlo.php" METHOD="POST">"
  5. ."PODAJ IMIE:<BR>"
  6. ."<INPUT NAME="imie" TYPE="TEXT" SIZE=20 MAXLENGTH=20>"
  7. ."<INPUT TYPE="submit" VALUE="wyslij">"
  8. ."</FORM>";
  9.  
  10. ?>


plik tlo.php:
  1. <?php
  2.  
  3.  
  4. if (empty($_SESSION['imie']))
  5. {
  6. $zm="placek";
  7. }
  8. else
  9. {
  10. $zm="jacek";
  11. }
  12.  
  13.  
  14.  
  15. ?>
  16. <html>
  17. <head>
  18. <title>Untitled Document</title>
  19. </head>
  20.  
  21. <?
  22.  
  23. echo "$zm";
  24.  
  25.  ?>
  26.  
  27. </body>
  28. </html>


nie zaleznie czy znaki sa wpisane w formularzu czy nie zawsze wyskakuje placek.. i jeszcze jedno pytanie jak zrobic zeby formularz pamietal wartosci? wystarczy dodac do formularza value = "$_SESSION['imie']" ?

dziekuje bardzo za pomoc

pozdrawiam
Jacek
Go to the top of the page
+Quote Post
strife
post 12.03.2007, 18:53:01
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Przenoszę na Przedszkole

1. Jeśli już to nie lepiej tak ( dodam, że ten formularz nie jest poprawnie zbudowany )

  1. <?php
  2. ?>
  3.  
  4. <FORM ACTION="tlo.php" METHOD="POST">
  5. PODAJ IMIE:<BR>"
  6. <INPUT NAME="imie" TYPE="TEXT" SIZE=20 MAXLENGTH=20>
  7. <INPUT TYPE="submit" VALUE="wyslij">
  8. </FORM>


2. Nie widzę, żebyś w tym skrypcie ustawiał gdzieś tą zmienną sesyjną. A jak jej nie deklarujesz to zawsze będzie empty. Zobacz rozdział o sesjach w manualu winksmiley.jpg

3.
Cytat
i jeszcze jedno pytanie jak zrobic zeby formularz pamietal wartosci? wystarczy dodac do formularza value = "$_SESSION['imie']" ?


  1. value="<?php echo $_SESSION['imie'] ?>"


Tak trudno sprawdzić?


--------------------
Go to the top of the page
+Quote Post
lutador
post 12.03.2007, 19:41:16
Post #3





Grupa: Zarejestrowani
Postów: 183
Pomógł: 3
Dołączył: 5.03.2007
Skąd: Opole

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


dzieki za pomoc smile.gif

czemu jest zle skonstruowany?
  1. <INPUT NAME="imie">

z tym jest cos nie tak?

przyczytalem manula ale znalazlem tylko cos takiego
  1. <?php
  2. $_SESSION['imie'] = "";
  3. ?>

ale po dodaniu dalej nie dziala :/ wiec pewnie nie o to chodzi.. wiec jak sie deklaruje ta zmienna?

Jacek
Go to the top of the page
+Quote Post
strife
post 12.03.2007, 19:50:42
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Miałem na myśli brak ciapków przy size i maxlength.

Cytat
ale po dodaniu dalej nie dziala :/ wiec pewnie nie o to chodzi.. wiec jak sie deklaruje ta zmienna?


Dobrze przeczytałeś, tak się deklaruje tą zmienną. Tylko Ty dajesz jej wartość NULL, także jest nadal pusta ... Spróbuj wpisać w nią coś innego i zobacz czy nadal będziesz miał placka biggrin.gif

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
lutador
post 12.03.2007, 20:02:46
Post #5





Grupa: Zarejestrowani
Postów: 183
Pomógł: 3
Dołączył: 5.03.2007
Skąd: Opole

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


jak wpisze cos innego to jest ok smile.gif

mi chodzi ze jak wpisze w formularzu jakas wartosci to zeby zostala przekazana do 2 skryptu i tam odpowiednie wykorzystana..
i to mi caly czas nie chce dzialac :/

jak mam zmodyfikowac moj skrypt zeby po wpisaniu w formularz wyswietlilo co inneg

pozdrawiam
Go to the top of the page
+Quote Post
strife
post 12.03.2007, 20:33:38
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Zmienne z Twojego formularza wysyłane są metodą POST, oznacza to, że aby je odebrać musisz użyć odpowiedniej tablicy:

  1. <?php
  2. echo $_POST['imie'];
  3. ?>


Co za tym idzie, aby przekazać wartość z formularza do zmiennej sesyjnej musisz do niej przypisać tą wartość:

  1. <?php
  2. $_SESSION['foo'] = $_POST['imie'];
  3. ?>


I wtedy, masz dostęp z każdego miejsca ( po uprzednim wystartowaniu sesji ) do tej zmiennej. Teraz rozumiesz? smile.gif


--------------------
Go to the top of the page
+Quote Post
lutador
post 12.03.2007, 20:59:40
Post #7





Grupa: Zarejestrowani
Postów: 183
Pomógł: 3
Dołączył: 5.03.2007
Skąd: Opole

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


ok teraz rozumiem smile.gif wnioskuje ze nie ma sensu za bardzo uzywac tablicy $_session przy takich formularzach lepiej poprostu uzyc tablice $_POST?

a teraz pytanie troche z innej beczki smile.gif mam skrypt w ktorym wystepuje problem odswiezania chcialem dodac header(location.. ) ale wyskakuje headers already sent..
czytalem juz manuala smile.gif i ten sposob tam podany nie pomaga :/
o to moj skrypt

  1. <?php
  2.  
  3. if (isset ($_POST['wyslij'])){
  4.  
  5. $problem = FALSE;
  6.  
  7.  
  8. if (empty ($_POST['nazwa_leku']))
  9. {
  10. $problem = TRUE;
  11.  
  12. print '<p>'; 
  13.  
  14. echo "podaj nazwe leku";
  15. }
  16.  
  17. print '<p>'; 
  18. if (empty ($_POST['opis']))
  19. {
  20. $problem = TRUE;
  21.  
  22. echo "podaj opis leku";
  23. }
  24.  
  25. if(!$problem)
  26.  
  27. {
  28.  
  29.  
  30. include("../httpd/zmienne.php"); // tutaj sa tylko zmienne do bazy
  31.  
  32. if(!($db_link = mysql_connect($mysql_host, $mysql_user, $mysql_pass))) 
  33. {
  34.  die("Could not connect with the database"); 
  35. }
  36.  
  37. if(!mysql_select_db($db, $db_link))
  38. {
  39. die("Could not select the database");
  40. }
  41.  
  42. $wstaw = mysql_query("INSERT INTO leki 
  43.  set
  44.  nazwa_leku = '$nazwa_leku',
  45.  opis = '$opis'");
  46.  
  47.  
  48.  
  49. echo "wszystko ok";
  50.  
  51. header('Location: ok.php');
  52.  
  53.  
  54. $_POST = array(); 
  55.  
  56. }
  57. else
  58.  
  59. {
  60.  
  61. print '<p>'; 
  62. echo "wypelnij poprawnie pola";
  63.  
  64.  
  65. }
  66.  
  67. }
  68. print '<p>';
  69.  
  70. print '<form action = "ok_leki.php" method = "POST"><p>';
  71.  
  72. print 'Nazwa leku: <input type = "text" name = "nazwa_leku" value = "' . $_POST['nazwa_leku'] . '"><p>';
  73.  
  74. print 'Opis dzialania: <input type = "text" name = "opis" value = "' . $_POST['opis'] . '"><p>';
  75.  
  76. print '<input type = "submit" value = "Dodaj lek" name = "wyslij">
  77. </form>';
  78.  
  79.  
  80. print '<a href="http://localhost/">strona glowna</a>';
  81. ?>


dzieki wielki za pomoc
pozdrawiam
Go to the top of the page
+Quote Post
strife
post 12.03.2007, 21:31:33
Post #8





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Przeczytaj proszę to: PHPedia::Cannot add header information - headers already sent

Pozdrawiam


--------------------
Go to the top of the page
+Quote Post
lutador
post 12.03.2007, 22:06:47
Post #9





Grupa: Zarejestrowani
Postów: 183
Pomógł: 3
Dołączył: 5.03.2007
Skąd: Opole

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


doczytalem i zrobilem smile.gif dzieki za pomoc
pozdrawiam
Jacek
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 10.06.2024 - 16:16