• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Problem z sesją- nie wyświetla zawartości koszyka

Object Storage Arubacloud
0 głosów
405 wizyt
pytanie zadane 6 marca 2020 w PHP przez matysz21 Nowicjusz (120 p.)

Witam,

Mam problem mianowicie gdy wciskam dodaj do koszyka wszystko ładnie działa ale gdy już odświeżam stronę zawartość koszyka znika. Myślę że to problem zmiennej sesyjnej. Proszę o pomoc kod poniżej:

plik index.php:

 


<?php
session_start();
$paintInfo = array();
$_SESSION['cart'] = $booksInfo;
?>
<html>

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>GENC- oferta</title>
	<meta name="description" content="Serwis prezentuje ofertę firmy GENC POLSKA" />
	<meta name="keywords" content="lakiery do drewna podłady, genc, Wola Rzędzińska"/>
	<link rel="Stylesheet" href="style.css">
	<script type="text/javascript" src="./java/jquery-3.2.1.min.js"></script>
	<script type="text/javascript" src="/koszyk.js"></script>
	<script type="text/javascript" src="./java/koszyk2.js"></script>
	
</head>

<body>

<div id="container">
<div class="cart">
<strong>Twój koszyk</strong>
<p id="cart">Koszyk jest pusty</p>
</div>
<?php
$objXML = simplexml_load_file('podkładyy.xml');
foreach($objXML->paint as $paint)
{
echo '<div class="produkt">';

echo 'Tytuł : '. $paint->name,'<br/>';
echo 'Cena : '. $paint->price,' <br/>';
echo 'Opis : '. $paint->specification,' <br/>';
?>
Ilość(KG):
<input type="number"></input>
-
<input type="hidden" value="<?php echo $paint['id']; ?>"/>
<input type="button" value="Do koszyka"/>
<?php
echo '</div>';
}
?>
</div>

</body>
</html>

plik poklady.php

 

<?php
session_start();
if ((!isset($_SESSION['cart']))
{
$paintsInfo = $_SESSION['cart'];
$paintFound = false;
}
if(count($paintsInfo) > 0)
{
for($i=0;$i< count($paintsInfo);$i++)
{
if($paintsInfo[$i]['paintId'] == $_POST['paintId'])
{
$paintsInfo[$i]['quantity'] = $_POST['quantity'];
$paintFound = true;
break;
}
}
}
if(!$paintFound)
{
$paint = array('paintId' => $_POST['paintId'], 'quantity' => $_POST['quantity']);
array_push($paintsInfo, $paint);
}
$_SESSION['cart'] = $paintsInfo;
$grossTotal = 0;
$str='';
$brutto= 1.23;

for($i=0; $i<count($paintsInfo); $i++)
{


$paintName = getPaintName($paintsInfo[$i]['paintId']);
$paintPrice = getPriceForPaint($paintsInfo[$i]['paintId']);
$totalPrice = $paintPrice * $paintsInfo[$i]['quantity'];
$grossTotal+= $totalPrice;
$str.= '<strong>Nazwa - </strong>'.$paintName;
$str.= '<br/>';
$str.= ' <strong>Ilość - </strong>'.$paintsInfo[$i]['quantity'].'KG';
$str.= '<br/>';
$str.= '<strong>Cena - </strong>'.$paintPrice. ' PLN '
.$paintsInfo[$i]['quantity'].' = '.$totalPrice.' PLN';

$str.= '<br/><br/>';
}
$str.= '<strong>Suma zamówienia: <br>  </strong>'.$grossTotal.' PLN/NETTO <br> '.round ($grossTotal * $brutto,2).' PLN/BRUTTO';

echo $str;
function getPaintName($id)
{
$objXML = simplexml_load_file('podkladyy.xml');
foreach($objXML->paint as $paint)
{
if($paint['id'] == $id)
{
return $paint->name;
}
}
return false;
}
function getPriceForPaint($id)
{
$objXML = simplexml_load_file('podkladyy.xml');
foreach($objXML->paint as $paint)
{
if($paint['id'] == $id)
{
return $paint->price;
}
}
return false;
}
?>

plik koszyk.js

$(document).ready(function()
{
$('input:button').click(function()
{
$.post('podklady.php',
{
paintId : $(this).prev('input:hidden').val(),
quantity: $(this).prev().prev('').val()
},
function(data)
{
$('#cart').html(data);
}
)
});
});

 

1 odpowiedź

0 głosów
odpowiedź 6 marca 2020 przez Comandeer Guru (601,590 p.)
$_SESSION['cart'] = $booksInfo;

Jaki jest cel tej linii? Zwłaszcza, że nie istnieje zmienna $booksInfo.

komentarz 6 marca 2020 przez matysz21 Nowicjusz (120 p.)

Przepraszam zły kod skopiowałem

plik index.php:

 

<?php
session_start();
$paintsInfo = array();

$_SESSION['cart'] =$paintsInfo;
?>

<html>

<!DOCTYPE HTML>
<html lang="pl">
<head>
	<meta charset="utf-8" />
	<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
	<title>GENC- oferta</title>
	<meta name="description" content="Serwis prezentuje ofertę firmy GENC POLSKA" />
	<meta name="keywords" content="lakiery do drewna podłady, genc, Wola Rzędzińska"/>
	<link rel="Stylesheet" href="style.css">
	<script type="text/javascript" src="/jquery-3.2.1.min.js"></script>
	<script type="text/javascript" src="/koszyk.js"></script>
	<script type="text/javascript" src="./java/koszyk2.js"></script>
	
</head>

<body>

<div id="container">
<div class="cart">
<strong>Twój koszyk</strong>
<p id="cart">Koszyk jest pusty</p>
</div>
<?php

$objXML = simplexml_load_file('podkładyy.xml');
foreach($objXML->paint as $paint)
{
echo '<div class="lista">';
echo '<img class="podkła" src="img/bp531.jpg" />';

echo 'Nazwa : '. $paint->name,'<br/>';
echo 'Cena : '. $paint->price,' <br/>';
echo 'Opis : '. $paint->specification,' <br/>';
?>
<div id="kupteraz">
Ilość(KG):
<input type="number" value="ilość"></input>

<input type="hidden" value="<?php echo $paint['id']; ?>"/>
<input type="button" class="kup" value="Do koszyka"/>
</div>
<?php
echo '</div>';
}
?>
</div>

</body>
</html>

 

Podobne pytania

+1 głos
3 odpowiedzi 456 wizyt
pytanie zadane 10 stycznia 2020 w C i C++ przez amtrax Dyskutant (9,630 p.)
0 głosów
0 odpowiedzi 212 wizyt
0 głosów
1 odpowiedź 191 wizyt
pytanie zadane 3 lutego 2022 w SQL, bazy danych przez chrystian Gaduła (4,780 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...