Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z indeksami w zmiennych sesyjnych, wyświetlanie wartości zmiennych sesyjnych
tenlepszy
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.10.2010

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


Witam,

Mój problem dotyczy odczytania zmiennych sesyjnych. Otóż na pierwszej stronie nadaje wartości zmiennym sesyjną za pomocą zwykłej pętli for, zmienne sesyjne przyjmują następującą postać $_SESSION[i]=x; gdzie i oznacza krok pętli, natomiast x dowolną wartość. Na tej stronie wyświetlam też (dla sprawdzenia) wartości zmiennych sesyjnych i wszystko działa tj. wyświetla się. Problem dotyczy natomiast drugiej strony na której chce ponownie wyświetlić wartości zmiennych sesyjnych. Etap ten robię również za pomocą pętli for i wygląda to następująco echo $_SESSION[i];. I tu zaczyna się problem gdyż nie wyświetla niczego. Inne zmienne sesyjne są wyświetlane normalnie. Nie mam pomysłu jak skorygować ten problem. Próbowałem to zrobić za pomocą zmiennych zmiennych ale coś nie wychodziło. Bardzo bym prosił o jakiekolwiek rady i pomoc.


Pozdrawiam
Go to the top of the page
+Quote Post
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


pokaż kod

1. a na obu stronach dajesz session_start()?
2. możesz sprawdzić zmienne sesyjne używając print_r($_SESSION)
3. dajesz $_SESSION[i] czy $_SESSION[$i]?
Go to the top of the page
+Quote Post
zamper
post
Post #3





Grupa: Zarejestrowani
Postów: 156
Pomógł: 17
Dołączył: 11.12.2010
Skąd: Częstochowa

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


wydaje mi się, że gdzieś jest użyte
(IMG:style_emoticons/default/smile.gif) chyba
Go to the top of the page
+Quote Post
tenlepszy
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.10.2010

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


A więc tak:
1. na obu stronach jest session_start()
2. Sprawdzałem używając print_r($_SESSION) i wyświetla wszystkie zmienne sesyjne, tylko nie te "potrzebne"
3. tak daje $_SESSION[$i]
4. Nie ma nigdzie session_destroy();

Ogólnie wydaje mi się, że wszystko należy sprowadzić do postaci którą wyglądała by następująco $_SESSION('$i') z tym, że dla wielu elementów ;/

Ten post edytował tenlepszy 27.12.2010, 20:38:27
Go to the top of the page
+Quote Post
tehaha
post
Post #5





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


pokaż kody na obu stronach
Go to the top of the page
+Quote Post
tenlepszy
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.10.2010

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


strona 1:

  1. <?php
  2. include "auth1.inc.php";
  3. $polaczenie=mysql_connect("localhost","root","") or
  4. die ("Sprawdź połączenie z bazą danych.");
  5. mysql_select_db("praca_dyplomowa");
  6.  
  7. $id = $_REQUEST['id'];
  8.  
  9. ?>
  10.  
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  12. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  13. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>
  16. <title><?php echo $nazwa; ?></title>
  17. <meta name="keywords" content="Rezerwacja biletów"/>
  18. <meta name="description" content="Rezerwacja biletów"/>
  19. <meta name="author" content="xxx"/>
  20. <meta name="language" content="pl"/>
  21. <link rel="Stylesheet" href="tim.css" type="text/css" />
  22.  
  23. </head>
  24.  
  25. <body>
  26.  
  27. <div id="naglowek">
  28.  
  29. <img src="grafika/baner.jpg" alt="logo" />
  30.  
  31. </div>
  32.  
  33. <div id="obszar_glowny">
  34.  
  35. <div id="zakladka">
  36.  
  37. <ul id="zakladki">
  38. <li><a href="index.php">Start</a></li>
  39. <li><a href="impreza.php">Imprezy</a></li>
  40. <li><a href="galeria.php">Galeria</a></li>
  41. <li><a href="kontakt.php">Kontakt</a></li>
  42. <?php
  43. if ($_SESSION['username']== "admin")
  44. {
  45. echo ('<li><a href="edycja_impreza.php">Edycja imprez</a></li>');
  46. echo ('<li><a href="edycja_obiekt.php">Edycja obiektów</a></li>');
  47. echo ('<li><a href="zarzadzanie.php">Zarządzania transakcjami</a></li>');
  48. echo ('<li><a href="wylogowany.php">WYLOGUJ [ ');
  49. echo $_SESSION['username'];
  50. echo('] </a></li>');
  51.  
  52. }
  53. ?>
  54. </ul>
  55.  
  56. </div>
  57.  
  58.  
  59. <div id="tresc">
  60. <ol>
  61. <li>Wybór miejsc</li>
  62. <li><b>Wpisanie danych</b></li>
  63. <li>Potwierdzenie rezerwacji</li>
  64. </ol>
  65.  
  66.  
  67.  
  68.  
  69. <?php
  70. $polaczenie=mysql_connect("localhost","root","") or
  71. die ("Sprawdź połączenie z bazą danych.");
  72. mysql_select_db("praca_dyplomowa");
  73. $zapytanie = "SELECT cena_normalna, cena_ulgowa FROM impreza WHERE id=$id";
  74. $rezultat = mysql_query($zapytanie)
  75.  
  76.  
  77. while ($row = mysql_fetch_array($rezultat)) {
  78. extract($row);
  79. $cena_calosc=0;
  80. $cena_normalny=$cena_normalna;
  81. $cena_ulgowy=$cena_ulgowa;
  82. }
  83. $licznik_normalny=0;
  84. $licznik_ulgowy=0;
  85.  
  86. for ($i=1;$i<91;$i++)
  87. {
  88. if ($_POST[$i]==2)
  89. {
  90. $_SESSION[$i]=$_POST[$i];
  91. $licznik_normalny=$licznik_normalny+1;
  92.  
  93.  
  94.  
  95. }elseif($_POST[$i]==3)
  96. {
  97. $_SESSION[$i]=$_POST[$i];
  98. $licznik_ulgowy=$licznik_ulgowy+1;
  99. }
  100.  
  101.  
  102. }
  103. $cena_normalny=$cena_normalny * $licznik_normalny;
  104. $cena_ulgowy=$cena_ulgowy * $licznik_ulgowy;
  105. $cena_calosc=$cena_ulgowy+$cena_normalny;
  106. $_SESSION[cena_calosc]=$cena_calosc;
  107.  
  108. if($cena_calosc>0)
  109. {
  110. echo ('<br>');
  111. echo('Ilosc biletów normalnych: '.$licznik_normalny.'- Cena: '.$cena_normalny.'zł');
  112. echo ('<br>');
  113. echo('Ilosc biletów ulgowych: '.$licznik_ulgowy.'- Cena: '.$cena_ulgowy.'zł');
  114. echo ('<br>');
  115. echo ('Łączna cena za bilety to: '.$cena_calosc.'zł');
  116. echo ('<br>');
  117. echo ('<br>');
  118. echo ('<br>');
  119. echo ('Podaj swoje dane');
  120. echo ('<br>');
  121. echo ('<form method="POST" action="rezerwacja3.php?id=');
  122. echo $id;
  123. echo('" name="formularz2" id="formularz2">');
  124. echo('Imie: ');
  125. echo('<input type="text" name="imie" maxlength="50" />');
  126. echo ('<br>');
  127. echo('Nazwisko: ');
  128. echo('<input type="text" name="nazwisko" maxlength="50" />');
  129. echo ('<br>');
  130. echo('<input type="submit" name="Submit" value="DALEJ">');
  131. echo ('<br>');
  132. echo('</form>');
  133.  
  134. }else
  135. {
  136. echo ('Nie zamówiłeś żadnego biletu!');
  137. echo ('<br>');
  138. echo ('<a href="index.php">POWRÓT</a>');
  139.  
  140.  
  141. }
  142.  
  143.  
  144. ?>
  145. </div>
  146.  
  147. </div>
  148.  
  149.  
  150. </div>
  151.  
  152. <div id="stopka">
  153.  
  154. <img src="grafika/stopka1.jpg" alt="logo" />
  155.  
  156. </div>
  157.  
  158.  
  159. </body>
  160. </html>

--------------------------------------------------------------------------------------------------------------------------------------------
Strona 2:

  1. <?php
  2. include "auth1.inc.php";
  3. $polaczenie=mysql_connect("localhost","root","") or
  4. die ("Sprawdź połączenie z bazą danych.");
  5. mysql_select_db("praca_dyplomowa");
  6.  
  7. $id = $_REQUEST['id'];
  8.  
  9. ?>
  10.  
  11. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  12. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  13. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  14. <head>
  15. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2"/>
  16. <title><?php echo $nazwa; ?></title>
  17. <meta name="keywords" content="Rezerwacja biletów"/>
  18. <meta name="description" content="Rezerwacja biletów"/>
  19. <meta name="author" content="Olszewski"/>
  20. <meta name="language" content="pl"/>
  21. <link rel="Stylesheet" href="tim.css" type="text/css" />
  22.  
  23. </head>
  24.  
  25. <body>
  26.  
  27. <div id="naglowek">
  28.  
  29. <img src="grafika/baner.jpg" alt="logo" />
  30.  
  31. </div>
  32.  
  33. <div id="obszar_glowny">
  34.  
  35. <div id="zakladka">
  36.  
  37. <ul id="zakladki">
  38. <li><a href="index.php">Start</a></li>
  39. <li><a href="impreza.php">Imprezy</a></li>
  40. <li><a href="galeria.php">Galeria</a></li>
  41. <li><a href="kontakt.php">Kontakt</a></li>
  42. <?php
  43. if ($_SESSION['username']== "admin")
  44. {
  45. echo ('<li><a href="edycja_impreza.php">Edycja imprez</a></li>');
  46. echo ('<li><a href="edycja_obiekt.php">Edycja obiektów</a></li>');
  47. echo ('<li><a href="zarzadzanie.php">Zarządzania transakcjami</a></li>');
  48. echo ('<li><a href="wylogowany.php">WYLOGUJ [ ');
  49. echo $_SESSION['username'];
  50. echo('] </a></li>');
  51.  
  52. }
  53. ?>
  54. </ul>
  55.  
  56. </div>
  57.  
  58.  
  59. <div id="tresc">
  60. <ol>
  61. <li>Wybór miejsc</li>
  62. <li>Wpisanie danych</li>
  63. <li><b>Potwierdzenie rezerwacji</b></li>
  64. </ol>
  65.  
  66.  
  67.  
  68.  
  69. <?php
  70. for ($i=1;$i<91;$i++)
  71. {
  72. if ($_SESSION[$i]>1)
  73. {
  74. $a=2;
  75. $b=1;
  76. $polaczenie=mysql_connect("localhost","root","") or
  77. die ("Sprawdź połączenie z bazą danych.");
  78. mysql_select_db("praca_dyplomowa");
  79. $sql="INSERT INTO impreza_miejsce (id,impreza_id,miejsce_id,dosteposc)
  80. VALUES
  81. ('',
  82. '". $a . "',
  83. '". $id . "',
  84. '". $_SESSION[$i] . "',
  85. '". $b . "')";
  86.  
  87. echo ('Zarezerwowane');
  88. $_SESSION[$i];
  89. }
  90. }
  91.  
  92.  
  93. ?>
  94.  
  95. </div>
  96. </div>
  97.  
  98. </div>
  99.  
  100. <div id="stopka">
  101.  
  102. <img src="grafika/stopka1.jpg" alt="logo" />
  103.  
  104. </div>
  105.  
  106. </body>
  107. </html>

--------------------------------------------------------------------------------------------------------------------------------------------
auth1.inc.php:
  1. <?php
  2. session_name("rezerwacja");
  3. ?>

--------------------------------------------------------------------------------------------------------------------------------------------
Sorry za estetykę kodu

Ten post edytował tenlepszy 27.12.2010, 21:10:35
Go to the top of the page
+Quote Post
tehaha
post
Post #7





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


wydaje mi się, że tak bardzo namieszałeś, że aż się w tym pogubiłeś.

1. jeżeli już wstawiasz tak dużo zmiennych to do zmiennej sesyjnej przypisz tablicę z tymi zmiennym, będzie miał lepszą kontrolę np.

zamiast $_SESSION[$i] zrób
  1. $_SESSION['tablica_z_zmiennymi'] = array()
  2. for()
  3. {
  4. $_SESSION['tablica_z_zmiennymi'][$i]
  5. }


2. wtedy nie będziesz już musiał używać pętli for() do odczytu, tylko foreach() co znowu da lepszą kontrolę i uprości sprawy
3. jeżeli używasz w zapytaniu zmiennych pochodzących od użytkownika, zawsze dawaj je w apostrofy/cudzysłowie i funkcje mysql_real_escape_string()
4. z bazą łączysz się tylko raz, a nie przy każdym zapytaniu
5. być może $_POST jest puste i dlatego nic nie jest przypisywane do zmiennych?

Go to the top of the page
+Quote Post
tenlepszy
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.10.2010

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


Zatem:
jak będzie wyglądało odczytanie za pomocą pętli foreach?
Wiem, że z bazą łącze się raz kod jeszcze nie jest do końca zwalidowany. A co do zmiennej $_POST, to nie jest pusta bo ją sprawdzałem.

dzięki za rady (IMG:style_emoticons/default/winksmiley.jpg)

Ten post edytował tenlepszy 27.12.2010, 21:39:24
Go to the top of the page
+Quote Post
tehaha
post
Post #9





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

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


http://php.net/manual/en/control-structures.foreach.php

ciężko stwierdzić czemu Ci nie działo bo bardzo namieszałeś, dużo warunków itd i nie wiadomo gzie skrypt zachowuję się nie tak jak chciałeś

tu masz kilka rad jak diagnozować błędy Temat: Jak poprawnie zadac pytanie i tutaj Temat: Najczestsze bledy

ogólnie to możesz napisać co chcesz osiągnąć to Cię skrótowo nakieruję jak to zrobić, bo widzę, że się trochę gubisz, ale to normalne na początku:)
Go to the top of the page
+Quote Post
tenlepszy
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.10.2010

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


Wiem, kod nie jest przejrzysty i mogłem wkleić tylko potrzebny fragment a nie całość. Sprawdzę jeszcze warunki, spróbuje z pętlą foreach. Najlepsze jest to, że ten sposób tj. przekazanie wartości w tablicy gdzie indeksem jest zmienna $i między stronami działa tyle że ze zmienną $_POST[$i]. Pewnie przyczyna niejasności jest jakaś banalna, tylko trzeba ją znaleźć (IMG:style_emoticons/default/winksmiley.jpg)


Pozdrawiam
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: 24.09.2025 - 02:04