Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Ustawienie domyślnej wartości sesji
Basia555
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.04.2015

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


Witam
Mam problem z ustawieniem domyślnej wartości koszyka, problem polega na tym, że gdy dodam do koszyka jakieś produkty to tworzy mi sie sesja koszyka ale sesja powierzchni już niee. Domyślna wartość do wszystkich pól mam zapisana jako $powierzchnia=1 ale gdy mam np 4 produkty i pierwszego wartość zmienię na np 5 to reszta mi się restartuje i nic nie ma. Pokazałam na zdjęciach krok po kroku co się dzieje. Może coś podpowiecie (IMG:style_emoticons/default/smile.gif)

http://zapodaj.net/4a053a5f136b5.jpg.html
http://zapodaj.net/992284fa8c00e.jpg.html
http://zapodaj.net/fe1a486d719d1.jpg.html
http://zapodaj.net/ea09e6c28db87.jpg.html

A to jest kod którego problem dotyczy:

  1. <?php
  2.  
  3. /* inicjuje zmienna */
  4. if(empty($_SESSION['powierzchnia'])){
  5. $_SESSION['powierzchnia'] = 0;
  6. }
  7. if(isset($_GET['zapiszPowierzchnie'])){
  8. /* przetwarza dane formularza powierzchni */
  9. if(!is_array($_SESSION['powierzchnia'])){
  10. $_SESSION['powierzchnia'] = array();
  11. }
  12.  
  13.  
  14.  
  15. if (!isset($_SESSION['koszyk'])) {
  16. $_SESSION['koszyk'] = array();
  17. }
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25. if (isset($_GET['reset'])) //chcemy wyczyścić koszyk
  26. {
  27. unset($_SESSION['powierzchnia']);
  28. unset($_SESSION['koszyk']);
  29. header('location: '. $_SERVER['PHP_SELF']. '?'. SID);
  30. exit();
  31. }
  32. ?>
  33.  
  34. <!DOCTYPE html>
  35. <html>
  36. <head>
  37. <meta charset="UTF-8">
  38. <title>Firma budowlana </title>
  39. </head>
  40. <body>
  41. <h1>Twoj koszyk z zakupami</h1>
  42.  
  43.  
  44.  
  45. <?php
  46.  
  47. // definicja tablic z towarami oraz cenami
  48.  
  49.  
  50. $q = mysql_connect('localhost','root','haslo') or
  51. die('Padl serwer');
  52. $q = mysql_select_db('stronaphp') or die('Padla baza');
  53.  
  54.  
  55. $wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug")
  56. or die('Błąd zapytania');
  57.  
  58.  
  59. $towary = array();
  60. $ceny = array();
  61. while ($row = mysql_fetch_array($wynik))
  62. {
  63. $towary[$row['ID']]=$row['Nazwa_uslugi'];
  64. $ceny[$row['ID']]=$row['Cena_za_metr'];
  65. }
  66. ?>
  67.  
  68. <table border="1">
  69. </thead>
  70. <tr>
  71.  
  72. <th>Nazwa usługi</th>
  73. <th>Cena za metr</th>
  74. </tr>
  75. </thead>
  76. <tbody>
  77.  
  78.  
  79.  
  80. <?php
  81. $suma = 0;
  82. $powierzchnia = 1;
  83.  
  84. for ($i=0;$i < count($_SESSION['koszyk']); $i++)
  85. {
  86. if($_SESSION['powierzchnia']>0){
  87. $powierzchnia = $_SESSION['powierzchnia'][$i];
  88. }
  89. echo '<tr>';
  90. echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
  91. echo '<td align="right">';
  92. echo $powierzchnia.' m<sup>2</sup> x '.number_format ($ceny[$_SESSION['koszyk'][$i]],2);
  93. echo ' zlotych</td>';
  94. echo '<td>
  95.  
  96. <form method="post" action="'.$_SERVER['PHP_SELF'].'?zapiszPowierzchnie=1">
  97. <input type="text" name="powierzchnia" id="powierzchnia" value="'.$_SESSION['powierzchnia'][$i].'">
  98. <input type="hidden" name="iteamId" value="'.($i).'">
  99. <input type="submit" value="Zapisz">
  100. </form>
  101. </td>';
  102. echo '</tr>';
  103. $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]] * $powierzchnia);
  104. }
  105. ?>
  106.  
  107.  
  108. </tbody>
  109. <tfoot>
  110. <tr>
  111. <th align="right">Naleznosc: </th><br>
  112. <th align="right"><?php echo number_format($suma,2); ?> zlotych.</th>
  113. </tr>
  114. </tfoot>
  115. </table>
  116.  
  117. <p><a href="towary.php">Kupuj dalej</a> lub też: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?reset=1">Wyczysc swoj koszyk</a></p>
  118. </body>
  119. </html>


Może coś podpowiecie? Na początku kodu zapisałam print_r aby pokazać co i jak zmienia sie po dodaniu

Ten post edytował Basia555 31.07.2015, 20:52:09
Go to the top of the page
+Quote Post
Ether
post
Post #2





Grupa: Zarejestrowani
Postów: 16
Pomógł: 1
Dołączył: 21.03.2015

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


Kod się prosi o przepisanie go na nowo...
Go to the top of the page
+Quote Post
Basia555
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.04.2015

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


Cytat(Ether @ 31.07.2015, 07:49:48 ) *
Kod się prosi o przepisanie go na nowo...


Czemu na nowo skoro działa poprawnie tylko jest problem z tą sesją powierzchnia? Gdy wpiszę recznie do wszystkich pól wartości i zapiszę to wtedy jest świetnie. Właśnie problem jest tylko z tym ustawieniem domyslnej wartości żeby się nie restartowała i nie wywalała błędu
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Poprostu sprawdzaj czy dany index tablicy, do ktorego sie dobierasz, istnieje. Robi sie to przy pomocy isset(). Wowczas nie bedziesz miala bledow
Go to the top of the page
+Quote Post
Basia555
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.04.2015

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


Tylko że jak sprawdzam czy dany index istnieje to wywala mi wtedy błędy w linii 108 i 109 że index $powierzchnia nie istnieje :/
Go to the top of the page
+Quote Post
kapslokk
post
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Sprawdzasz funkcją isset() czy jak?
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Masz przyklad:
  1. if(isset($_SESSION['powierzchnia']) && isset($_SESSION['powierzchnia'][$i]) && $_SESSION['powierzchnia'][$i]>0){
  2. //lub poprostu
  3. //if(!empty($_SESSION['powierzchnia'][$i])){
  4.  
  5.  
  6. $powierzchnia = $_SESSION['powierzchnia'][$i];
  7.  
  8. } else
  9. $powierzchnia = 1;

Reszte popraw sama
Go to the top of the page
+Quote Post
Basia555
post
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.04.2015

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


tak funkcją isset tylko że sprawdzam sesje, a jak to zdefiniować żeby działało?

  1. $powierzchnia = 1;
  2.  
  3. for ($i=0;$i < count($_SESSION['koszyk']); $i++)
  4. {
  5. if($_SESSION['powierzchnia']>0){
  6. $powierzchnia = $_SESSION['powierzchnia'][$i];
  7. }
  8. echo '<tr>';
  9. echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
  10. echo '<td align="right">';
  11. echo $powierzchnia.' m<sup>2</sup> x '.number_format ($ceny[$_SESSION['koszyk'][$i]],2);
  12. echo ' zlotych</td>';
  13. echo '<td>


bo tu mi teraz wywala błędy, że jest nie zdefiniowane
Go to the top of the page
+Quote Post
nospor
post
Post #9





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Przeciez ci podalem poprawny kod...
Go to the top of the page
+Quote Post
Basia555
post
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 19.04.2015

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


Cytat(nospor @ 31.07.2015, 08:16:57 ) *
Przeciez ci podalem poprawny kod...


tak wiem, wielkie dzięki za pomoc. Już wszystko działa tak jak powinno (IMG:style_emoticons/default/smile.gif) Jeszcze raz dziękuję (IMG:style_emoticons/default/smile.gif)
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.12.2025 - 23:21