Przekazywanie danych w sesji

Odpowiedz Nowy wątek
2015-07-22 07:21
0

Witam
Mam zrobiony taki kod koszyka z zakupami:

<?php
session_start();

if (!isset($_SESSION['koszyk'])) {
  $_SESSION['koszyk'] = array();
}

/* inicjuje zmienna */
if(empty($_SESSION['powierzchnia'])){
  $_SESSION['powierzchnia'] = 0;
}
if(isset($_GET['zapiszPowierzchnie'])){
  /* przetwarza dane formularza powierzchni */
  $_SESSION['powierzchnia'] = floatVal($_POST['powierzchnia']);
}

if (isset($_GET['reset']))  //chcemy wyczy¶cić koszyk
{
      unset($_SESSION['koszyk']);
            header('location: '. $_SERVER['PHP_SELF']. '?'. SID);
            exit();
}
?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Firma budowlana </title>
  </head>
  <body>
<h1>Twoj koszyk z zakupami</h1>

<?php

   // definicja tablic z towarami oraz cenami

$i= isset($_GET['i']) ? (int)$_GET['i'] : 0;

$q = mysql_connect('localhost','root','555') or
die('Padl serwer');
$q = mysql_select_db('stronaphp') or die('Padla baza');

$wynik = mysql_query("SELECT ID, Nazwa_uslugi, Cena_za_metr FROM cennik_uslug") 
or die('Błąd zapytania'); 

$towary = array();
$ceny = array();
while ($row = mysql_fetch_array($wynik))
{
    $towary[$row['ID']]=$row['Nazwa_uslugi'];
    $ceny[$row['ID']]=$row['Cena_za_metr'];
}
?>

<table border="1">
  </thead>     
             <tr>

                   <th>Nazwa usługi</th>
                     <th>Cena za metr</th>
                </tr>
        </thead>
    <tbody>

<?php
$suma = 0;
$powierzchnia = 1;
if($_SESSION['powierzchnia']>0){
  $powierzchnia = $_SESSION['powierzchnia'];
}

for ($i=0;$i < count($_SESSION['koszyk']); $i++)
{

        echo '<tr>';
        echo '<td>'.$towary[$_SESSION['koszyk'][$i]].'</td>';
        echo '<td align="right">';
        echo $powierzchnia.' m<sup>2</sup> x '.number_format ($ceny[$_SESSION['koszyk'][$i]],2);
        echo ' zlotych</td>';

?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>?zapiszPowierzchnie=1">
<td><input type="text" name="powierzchnia[<?= $i ?>]" id="powierzchnia" value="<?=htmlspecialchars($_SESSION['powierzchnia'][$i]); ?>"></td>
<td><input type="submit" value="Zapisz"></td>
</form>

<?php

        $suma = $suma + ($ceny[$_SESSION['koszyk'][$i]]* $powierzchnia );

}
print_r($_POST);
?>

</tbody>
 <tfoot>
  <tr>
      <th align="right">Naleznosc: </th><br>
        <th align="right"><?php echo number_format($suma,2); ?> zlotych.</th>
    </tr>
 </tfoot>
</table>

<p><a href="towary.php">Kupuj dalej</a> lub też: <a href="<?php echo $_SERVER['PHP_SELF']; ?>?reset=1">Wyczysc swoj koszyk</a></p>
</body>
</html>

A mój problem polega na tym, że nie działa mi zapisywanie ilości produktów. Mam taki koszyk: http://zapodaj.net/2a9d03c72ce00.jpg.html i gdy wpisuje jakieś wartości to w tabeli nic się nie dzieje tylko pojawia mi się tablica $_POST. Po wpisaniu i zapisaniu w zależności które to pole pojawia się:

Array ( [powierzchnia] => Array ( [4] => 13 ) )

Array ( [powierzchnia] => Array ( [1] => 5 ) )

Array ( [powierzchnia] => Array ( [4] => 8 ) )

Array ( [powierzchnia] => Array ( [1] => 50 ) )

Jedynie gdy usunę z linii:

<td><input type="text" name="powierzchnia[<?= $i ?>]" id="powierzchnia" value="<?=htmlspecialchars($_SESSION['powierzchnia'][$i]); ?>"></td>

tą część kodu:

[<?= $i ?>]

to działa ale niestety tylko w ten sposób że obojetnie gdzie wpisze liczbę to zapisuje mi dla wszystkich wierszy tą samą wartość (ilość artykułów). w tym przypadku $_POST pokazuje: Array ( [powierzchnia] => 3 )

Mógłby mi ktoś coś podpowiedzieć? Jestem dopiero początkujący ;)

Nie nazywaj zmiennych $i; $q; $a; $b; $c bo jak bedziesz mial dluzszy kod to sie nie połapiesz co jest czym i jak wstawiasz tagi to bez udziwnien tylko jezyk, bo Cie dzek okrzyczy :D - Fi3rce 2015-07-22 08:10

Pozostało 580 znaków

2015-07-22 10:07
0

@Fi3rce: $i jest tu użyte poprawnie - jako iterator pętli.

Niepoprawne jest to że:


Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2015-07-22 10:08
Ja miałem na myśli dokładnie to co Ty (to na początku skryptu) :) Nie sprecyzowałem. - Fi3rce 2015-07-22 10:19
Serio, mysql ? - Tumeg 2015-07-29 13:24

Pozostało 580 znaków

2015-07-22 18:34
0

a może tak dokładniej co zrobić bo jestem początkujący i prosiłbym tak bardziej łopatologicznie ;)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0