Przekazywanie danych w sesji

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 ;)

0

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

Niepoprawne jest to że:

0

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

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