Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Wybór wysyłki / aktualizacja ceny produktu / aktualizacja koszyka?
Forum PHP.pl > Forum > Przedszkole
vLeK
Witam.

W tematyce PHP i MySQLa jestem początkujący i nie mogę sobie poradzić z pewnym problemem. Swója pracę opieram na książce "Dynamiczne strony WW PHP i MySQL" Larry'ego Ullmana. Fragment kodu z którym mam problem jest następujący:

  1. <?php
  2. // Sprawdzenie czy formularz został wypełniony(aktualizacji koszyka zakupów).
  3. if (isset ($_POST['submit'])) {
  4.    foreach ($_POST['qty'] as $key => $value) {
  5.        if ( ($value == 0) AND (is_numeric ($value)) ) {
  6.            unset ($_SESSION['cart'][$key]);
  7.        } elseif ( is_numeric ($value) AND ($value > 0) ) {
  8.            $_SESSION['cart'][$key] = $value;
  9.        }
  10.        
  11.    }
  12. }
  13.  
  14. // Sprawdzenie czy koszyk zakupów jest pusty.
  15. $empty = TRUE;
  16. if (isset ($_SESSION['cart'])) {
  17.    foreach ($_SESSION['cart'] as $key => $value) {
  18.        if (isset($value)) {
  19.            $empty = FALSE;    
  20.        }
  21.    }
  22. }    
  23.  
  24. // Wyświetlenie koszyka zakupów jeśli nie jest pusty.
  25. if (!$empty) {
  26.  
  27.    require_once ('./../mysql_connect.php'); // Nawiązanie połączenia z bazą danych.
  28.  
  29.    // Pobranie wszystkich informacji dotyczących produktów umieszczonych w koszyku.
  30.    $query = 'SELECT * FROM kategorie, produkty WHERE kategorie.kat_id = produkty.kat_id AND produkty.pro_id IN (';
  31.    foreach ($_SESSION['cart'] as $key => $value) {
  32.        $query .= $key . ',';
  33.    }
  34.    $query = substr ($query, 0, -1) . ') ORDER BY kategorie.kat_nazwa ASC';
  35.    $result = mysql_query ($query);
  36.    // Utworzenie tabeli i formularza.
  37.    echo '<table style="border: solid 1px; width: 770px; margin: 0 auto; margin-top: 20px; padding: 0 0; font-size: 12px" cellspacing="3" cellpadding="3">
  38.    <tr>
  39.        <td style="text-align: left; width: 35%; background-color: #DDDDEE;" >Produkt</td>
  40.        <td style="text-align: center; width: 20%; background-color: #35356A; color: white">ID produktu</td>
  41.        <td style="text-align: center; width: 15%; background-color: #DDDDEE;">Cena</td>
  42.        <td style="text-align: center; width: 10%; background-color: #35356A; color: white">Ilość</td>
  43.        <td style="text-align: right; width: 20%; background-color: #DDDDEE;">Suma</td>
  44.    </tr>
  45. <form action="index.php?p=koszyk" method="post">
  46. ';
  47.  
  48.    // Wyświetlenie każdej pozycji.
  49.    $total = 0; // Całkowity koszt zamówienia.
  50.    while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
  51.    
  52.        
  53.        // Obliczenie sumy końcowej i częściowych.
  54.        $subtotal = $_SESSION['cart'][$row['pro_id']] * $row['pro_cena'];
  55.        $total += $subtotal;
  56.        
  57.        // Wyświetlenie wiersza.
  58.        echo "    <tr>
  59.        <td style='text-align: left;'>{$row['pro_nazwa']}</td>
  60.        <td style='text-align: center;'>{$row['pro_ident']}</td>
  61.        <td style='text-align: center'>{$row['pro_cena']} zł</td>
  62.        <td style='text-align: center;'><input type=\"text\" size=\"3\" name=\"qty[{$row['pro_id']}]\" value=\"{$_SESSION['cart'][$row['pro_id']]}\" /></td>
  63.        <td style='text-align: right;'>" . number_format ($subtotal, 2) . " zł</td>
  64.    </tr>";
  65.    } // Koniec pętli WHILE.
  66.    
  67.    
  68.    // Wyświetlenie stopki HTML oraz zamknięcie tabeli i formularza.
  69.    echo '    <tr>
  70.        <td colspan="4" align="right"><b>Suma zamówienia:<b></td>
  71.        <td align="right">' . number_format ($total, 2) . ' zł</td>
  72.    </tr>
  73.    </table>
  74.    <div style="text-align: left; margin-left: 10px "><p>W celu usunięcia produktu z koszyka należy zmienić "ilość" na 0 i następnie zaktualizować koszyk.</p></div>
  75.    <div style="text-align: right; padding-right: 10px; padding-top: 5px"><input type="submit" name="submit" value="Aktualizuj koszyk" /></div>
  76.    </form>
  77.    ';
  78.    
  79.    // POŁĄCZENIE Z BAZĄ WYSYLKA
  80.    $query = 'SELECT * FROM wysylka ';
  81.    $result = mysql_query ($query);
  82.    
  83.    
  84.    echo '
  85.    <table style="border: solid 1px; width: 770px; margin: 0 auto; margin-top: 20px; padding: 0 0; font-size: 12px" cellspacing="3" cellpadding="3">    
  86.        <tr>
  87.            <td style="text-align: left; width: 70%; background-color: #DDDDEE;">Wybierz rodzaj przesyłki</td>
  88.            <td style="text-align: center; width: 20%; background-color: #35356A; color: white">Cena</td>
  89.            <td style="text-align: center; width: 10%; background-color: #DDDDEE;">Wybierz</td>
  90.        </tr>
  91.     ';
  92.    
  93.    // Wyświetlenie każdej pozycji.
  94.    while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
  95.    
  96.    echo "
  97.    <form action='index.php?p=koszyk' method='post'>
  98.        <tr>
  99.            <td style='text-align: left'>{$row['wys_nazwa']}</td>
  100.            <td style='text-align: center'>{$row['wys_cena']} zł</td>
  101.            <td style='text-align: center'><input type='radio' id='pp_pp' name='wysylka' value='{$row['wys_cena']}'></td>
  102.        </tr>
  103.    </form>
  104.    ";
  105.    
  106.    } // Koniec pętli WHILE.
  107.    
  108.    echo "
  109.    </table>
  110.    <div style='padding-right: 10px; width: 150px;  margin-top: 3px; float: right'><a href='index.php?p=checkout'><p class='p_button'>Realizuj zamówienie</p></a></div>
  111.    ";
  112.    
  113.    mysql_close(); // Zamknięcie połączenia z bazą danych.
  114.  
  115. } else {
  116.    echo '<p style="text-align: center; margin-top: 30px;">Aktualnie koszyk zakupów jest pusty.</p>
  117.    ';
  118. }
  119.  
  120. ?>


Na stronie wygląda to tak:


Chciałbym sprawić aby po wybraniu jednego z pól radio, który dotyczy wyboru wysyłki (wiersz 104 skryptu), aktualizowana była Suma całkowita zamówienia (wiersz 71), a pole radio pozostawało nadal zaznaczone.

Z góry dzięki za pomoc.
erix
onchange i dodanie/odjęcie wartości?
vLeK
Niestety nadal nie wiem jak sobie poradzić z tym problemem.

Kombinuję, kombinuję i nadal nic nie działa tak jak bym sobie tego życzył.

Zależy mi na tym, by po zaznaczeniu jednego z pól "radio", wartosc "value='{$row['wys_cena']}' (102 wiersz) została dodana do $subtotal = $_SESSION['cart'][$row['pro_id']] * $row['pro_cena']; (55 wiersz).

Męczę się z tym już 3 dzień i trochę jestem sfrustrowany.

P.S. Zmodyfikowałem 102 linię kodu
  1. <?php
  2. <td style='text-align: center'><input type='radio' id='{$row['wys_id']}' name='przesylka' value='{$row['wys_cena']}'></td>
  3. ?>


Teraz tylko muszę wykombinować jak pobrać value i wrzucić do subtotala...grrr.
Jeżeli ktoś zna rozwiązanie to proszę o wyjasnienie gdzie tkwi błąd lub też jak należy to zrobić by działało.

Pozdrawiam
erix
Cytat
Kombinuję, kombinuję i nadal nic nie działa tak jak bym sobie tego życzył.

Pokaż, jak kombinujesz.

Cytat
Męczę się z tym już 3 dzień i trochę jestem sfrustrowany.

Napisałem onchange i tego nie wykorzystałeś. A jeśli chcesz dodatkowo zmieniać dane w sesji, to AJAX.
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.