Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Ustawienie domyślnej wartości sesji
Forum PHP.pl > Forum > Przedszkole
Basia555
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 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
Ether
Kod się prosi o przepisanie go na nowo...
Basia555
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
nospor
Poprostu sprawdzaj czy dany index tablicy, do ktorego sie dobierasz, istnieje. Robi sie to przy pomocy isset(). Wowczas nie bedziesz miala bledow
Basia555
Tylko że jak sprawdzam czy dany index istnieje to wywala mi wtedy błędy w linii 108 i 109 że index $powierzchnia nie istnieje :/
kapslokk
Sprawdzasz funkcją isset() czy jak?
nospor
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
Basia555
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
nospor
Przeciez ci podalem poprawny kod...
Basia555
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 smile.gif Jeszcze raz dziękuję smile.gif
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.