Błąd składniowy w aplikacji z koszykiem

0

Chodzi o ten fragment kodu:

session_start();

$product_id = $_POST["product_id"];
$quantity = $_POST["quantity"];
$product_name = $_POST["product_name"];

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

if ($_SESSION['koszyk'][]=array($product_id,$product_name,$quantity))
{
foreach($_SESSION['koszyk'] as $key=>$val) 
           
{

	echo "Nazwa: '.$val['product_name'].', Cena: '.$val['product_id'].' Ilość: '.$val['quantity'].' Razem: '.$suma.'";



}

};

Dlaczego wyświetla ten błąd i skrypt nie działa ? Ta strona nie działaSerwer serwer2232156.home.pl nie może teraz obsłużyć tego żądania.
HTTP ERROR 500

0

masz dostęp do jakichś bardziej szczegółowych logów w tym home? Pomijając ten konkretny błąd, to ogólnie jak masz samą 500, to jest to zgadywanka, a jeśli masz jakiś błąd typu "error, bo coś tam", to byś miał wiele łatwiej.

3

Wydaje się, że masz błąd składniowy:

 echo "Nazwa: '.{$val['product_name']}.', Cena: '.{$val['product_id']}.' Ilość: '.{$val['quantity']}.' Razem: '.$suma.'";

po wrzuceniu tego kodu

$suma = 100;
$val = array("quantity" => 3, "product_id" => 13, "product_name"=> "masło"); // testowo, żeby coś było
echo "Nazwa: '.$val['product_name'].', Cena: '.$val['product_id'].' Ilość: '.$val['quantity'].' Razem: '.$suma.'";

do PHP sandbox https://onlinephp.io/

wyskakuje błąd
Parse error: syntax error, unexpected string content "", expecting "-" or identifier or variable or number in /home/user/scripts/code.php on line 5

ale jak poprawisz na

echo "Nazwa: {$val['product_name']}, Cena: {$val['product_id']} Ilość: {$val['quantity']} Razem: $suma";

to zadziała
ogólnie wygląda na to, że próbujesz jednocześnie interpolować zmienne, jak i dodawać stringi. Stąd piszesz niepotrzebne kropki i apostrofy, ale z jakichś powodów też wygląda na to, że potrzebne są tutaj dodatkowe klamerki. Ogólnie tak jakby tutaj gdzieś wystąpił błąd składni (chociaż nie piszę już w PHP, więc nie pamiętam wszystkich zawiłości interpolacji zmiennych).

1

Po pierwsze to jakieś dwa dni temu poruszaliśmy temat apostrof kontra cudzysłów i jak robić złączenia literałów. Było to tutaj Dlaczego zdjęcie się nie wyświetla?
Przeczytałeś? Spróbowałeś zrozumieć? Jeśli tego nie rozumiesz to napisz. Może uda się wytłumaczyć.
Po drugie pisaliśmy Ci już 125 razy zrób jakiś kurs i dopiero pisz kod bo nic z tego nie będzie.
Po trzecie jesteś na forum ładnych kilka lat i mógłbyś nauczyć się formatować kod przy użyciu znaczników. Tak admini poprawiają najczęściej Twoje wpisy. I tu gorący apel do administracji aby przyszłe posty po prostu kasowali jeśli będą pisane w tym stylu. I to paradoksalnie dla Twojego dobra. Bo jak zaczniesz formatować kod, nauczysz się czytać składnię to nauczysz się czytać i wyłapywać błędy.
Po czwarte testuj kod lokalnie na swoim komputerze. Po włączeniu obsługi błędów okaże się, że masz komunikaty które pomagają w procesie pisania kodu. To nie wymaga jakichś skomplikowanych konfiguracji. Jest Xampp ale też serwer testowy PHP uruchomisz po prostu przez polecenie php -S localhost:8000 wpisane w konsoli w katalogu projektu. Więcej znajdziesz w dokumentacji.
https://www.php.net/manual/en/features.commandline.webserver.php

Odnośnie kodu, to jest słabo i ciągle nie uczysz się na błędach.

// Nie sprawdzasz czy te dane są w tablicy POST, a może ich nie być.
$product_id = $_POST["product_id"];
$quantity = $_POST["quantity"];
$product_name = $_POST["product_name"];

if(!isset($_SESSION['koszyk']))
}
// Po co tu przypisujesz zero?
$_SESSION['koszyk'] = 0;
}

// Tutaj w tym warunku nie sprwdzasz nic tylko przypisujesz wartość- użyłeś pojedynczego znaku równości.
if ($_SESSION['koszyk'][]=array($product_id,$product_name,$quantity))
{
foreach($_SESSION['koszyk'] as $key=>$val) 
           
{
// O złączeniach literałów już było.
	echo "Nazwa: '.$val['product_name'].', Cena: '.$val['product_id'].' Ilość: '.$val['quantity'].' Razem: '.$suma.'";



}

};

No i ostanie używaj jakiegoś IDE typu VSC, formatuj kod.
Inaczej nigdy nie napiszesz 5 linijek poprawnego kodu.

1

@LukeJL:

@jurek1980:

To troll.

Od wielu lat wkleja ewidentnie błedne zestawy kodów w netu, i ma radochę że ktoś to traktuje serio, gdy udaje głupszego niż jest.
Prawdziwy adept o niskim poziomie pokazałby jakieś emocje wreszcie po którejś krytyce, tu nic.

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