Napisałem skrypt koszyka. Problem jest następujący - kiedy zmienię ilość jakiegoś produktu w koszyku (w polu input), to pod wszystkimi produktami pojawia się kolejny input, ale pusty - bez nazwy producenta, produktu i domyślnej wartości (powinno nią być 1). Dzieje się to jednak tylko raz. Dodanie kolejnych produktów i zmiana ich ilości nie powoduje pojawienia się kolejnego pustego inputa. Spędziłem nad tym ładnych kilkanaście godzin i wciąż nie mam pojęcia co jest nie tak [glowa] . O co chodzi, przecież w skrypcie nie ma żadnej linii kodu dodającej puste rekordy do tabeli :/ . Będę cholernie wdzięczny za pomoc: (od razu uprzedzam, że to ma być zrobione w sesji - robię to po to, żeby się nauczyć - potem zrobię koszyk w bazie, a na samym końcu kod proceduralny stanie się obiektowym, ale najpierw chciałbym się dowiedzieć co tu nie gra)
session_start();
tworz_pocz();
$wynik = dodaj_do_koszyka($_GET['id_cz']);
//pętla poniżej zapobiega zwiększeniu stanu wybranego produktu o 1 w wyniku odświeżenia strony
//dwie ostatnie linie tej pętli ustawiają ilość poszczególnych produktów
for ($j = 0; $j < count($_SESSION['koszyk']); $j++)
{
if($_SESSION['koszyk'][$j]['nazwa_cz'] == $wynik[1] && $_SESSION['koszyk'][$j]['producent_cz'] == $wynik[2]
&& $_SESSION['koszyk'][$j]['cena_cz'] == $wynik[3])
{
break;
tworz_kon();
exit();
}
if($_GET['przelicz'])
$_SESSION['koszyk'][$j]['ilosc'] = $_GET['ilosc'.$j];
}
if(!isset($_GET['przelicz']))
$_SESSION['koszyk'][$j]['ilosc'] = 1;
$_SESSION['koszyk'][$j]['nazwa_cz'] = $wynik[1];
$_SESSION['koszyk'][$j]['producent_cz'] = $wynik[2];
$_SESSION['koszyk'][$j]['cena_cz'] = $wynik[3];
echo "<table>";
echo "<tr><td>Nazwa</td><td>Producent</td><td>Cena</td><td>Ilość</td><td>Wartość</td><tr>";
echo "<form action = \"koszyk.php\" method = \"get\">";
//alternatywnie można użyć pętli foreach, wtedy liczniki nie będą się różnić o 1, co dla działania aplikacji nie ma znaczenia - wygląda na to, że
//pomimo różnicy liczników skrypt dopisuje wartości we właściwych miejscach, licznik z poniższej pętli jest większy o 1 od $j przez dziwnego inputa ;)
//foreach ($_SESSION['koszyk'] as $i => $v)
for ($i = 0; $i < count($_SESSION['koszyk']); $i++)
{
echo "<tr><td>".$_SESSION['koszyk'][$i]['nazwa_cz']."</td><td>".$_SESSION['koszyk'][$i]['producent_cz']."</td><td>".
$_SESSION['koszyk'][$i]['cena_cz'].
"</td><td><input type = \"text\" size = 3 name = \"ilosc".$i."\" value = \"".$_SESSION['koszyk'][$i]['ilosc']."\" /></td><td>".
$_SESSION['koszyk'][$i]['wartosc'] = $_SESSION['koszyk'][$i]['cena_cz'] * $_SESSION['koszyk'][$i]['ilosc']."</td></tr>";
$sum += $_SESSION['koszyk'][$i]['wartosc'];
}
echo "<tr><td><input type = \"submit\" name = \"przelicz\" value = \"Przelicz\" /></td></tr>";
echo "</table>";
echo "</form>";
$_SESSION['suma'] = $sum;
echo "<a href = \"katalog.php?id_kat=".$_SESSION['id_kat']."\">Kontynuuj zakupy</a><br />";
echo "<a href = \"oproznij.php\">Opróżnij koszyk</a>";
echo "<br />j =".$j."<br />";
echo "i =".$i;
tworz_kon();