PHP session, felétel kérdés
Heló!
Szeretnék segítséget kérni az alábbi problémámra. Van egy oldal, ahol lehet rendelni, s a kosar.php-ben írom ki az aktuális rendelés állását. Eddig úgy volt, hogy a "nev" feltétel szerint irta ki az újabb tételeket a listába, viszont meg kéne valahogy (nem tudom hogy) oldani, hogy a "nev" és a "nev_feltet" alapján írja ki.
Mutatom a kódot:
<?
// Új termék felvétele a kosárba
if (isset($_POST['kosarba']))
{ // Ha a kosár nem üres
if (!empty($_SESSION['kosar_tartalom']))
{ // Ha van már a kosárban ilyen termék, csak hozzáadjuk az új darabszámot
if (isset($_SESSION['kosar_tartalom'][$_POST['id']]))
{
$_SESSION['kosar_tartalom'][$_POST['nev']]['darab'] += $_POST['darab'];
}
// Ellenkező esetben felvisszük a kosárba
else
{
$_SESSION['kosar_tartalom'][$_POST['nev']] = array("id" => $_POST['id'],
"nev" => $_POST['nev'],
"nev_feltet" => $_POST['nev_feltet'],
"ar" => $_POST['ar'],
"far" => $_POST['far'],
"darab" => $_POST['darab']);
}
}
// Ha a kosár üres
else
{ // Kiválasztott termék felvitele
$_SESSION['kosar_tartalom'][$_POST['nev']] = array("id" => $_POST['id'],
"nev" => $_POST['nev'],
"nev_feltet" => $_POST['nev_feltet'],
"ar" => $_POST['ar'],
"far" => $_POST['far'],
"darab" => $_POST['darab']);
}
}
// Hány termék található a kosárban
echo @count($_SESSION['kosar_tartalom'])." Termék a kosárban";
if (@count($_SESSION['kosar_tartalom'])>0) {echo " - <a class='kosar' href=rendeles.php target='_parent'>Kosár</a><br />"; }
// Kosár tartalmának kiiratása
if (!empty($_SESSION['kosar_tartalom']))
{
foreach ($_SESSION['kosar_tartalom'] as &$aaa)
{
echo $aaa['nev'].": <br> ".$aaa['darab']." db | <a class='kosar' title='Eggyel többet a kosárba' href='kosar.php?act=plusz&id=".$aaa['nev']."'> + </a> :
<a class='kosar' title='Eggyel kevesebbet a kosárba' href='kosar.php?act=minusz&id=".$aaa['nev']."'> - </a><br/>".$aaa['nev_feltet']."<hr>
";
}
}
■ Szeretnék segítséget kérni az alábbi problémámra. Van egy oldal, ahol lehet rendelni, s a kosar.php-ben írom ki az aktuális rendelés állását. Eddig úgy volt, hogy a "nev" feltétel szerint irta ki az újabb tételeket a listába, viszont meg kéne valahogy (nem tudom hogy) oldani, hogy a "nev" és a "nev_feltet" alapján írja ki.
Mutatom a kódot:
<?
// Új termék felvétele a kosárba
if (isset($_POST['kosarba']))
{ // Ha a kosár nem üres
if (!empty($_SESSION['kosar_tartalom']))
{ // Ha van már a kosárban ilyen termék, csak hozzáadjuk az új darabszámot
if (isset($_SESSION['kosar_tartalom'][$_POST['id']]))
{
$_SESSION['kosar_tartalom'][$_POST['nev']]['darab'] += $_POST['darab'];
}
// Ellenkező esetben felvisszük a kosárba
else
{
$_SESSION['kosar_tartalom'][$_POST['nev']] = array("id" => $_POST['id'],
"nev" => $_POST['nev'],
"nev_feltet" => $_POST['nev_feltet'],
"ar" => $_POST['ar'],
"far" => $_POST['far'],
"darab" => $_POST['darab']);
}
}
// Ha a kosár üres
else
{ // Kiválasztott termék felvitele
$_SESSION['kosar_tartalom'][$_POST['nev']] = array("id" => $_POST['id'],
"nev" => $_POST['nev'],
"nev_feltet" => $_POST['nev_feltet'],
"ar" => $_POST['ar'],
"far" => $_POST['far'],
"darab" => $_POST['darab']);
}
}
// Hány termék található a kosárban
echo @count($_SESSION['kosar_tartalom'])." Termék a kosárban";
if (@count($_SESSION['kosar_tartalom'])>0) {echo " - <a class='kosar' href=rendeles.php target='_parent'>Kosár</a><br />"; }
// Kosár tartalmának kiiratása
if (!empty($_SESSION['kosar_tartalom']))
{
foreach ($_SESSION['kosar_tartalom'] as &$aaa)
{
echo $aaa['nev'].": <br> ".$aaa['darab']." db | <a class='kosar' title='Eggyel többet a kosárba' href='kosar.php?act=plusz&id=".$aaa['nev']."'> + </a> :
<a class='kosar' title='Eggyel kevesebbet a kosárba' href='kosar.php?act=minusz&id=".$aaa['nev']."'> - </a><br/>".$aaa['nev_feltet']."<hr>
";
}
}
A forráskód részleteket légy
[colorer=***]
és[/colorer]
BBCode formázók közé (ahol *** helyére a kód nyelvét írod).Az ilyen típusú kérdésekre általában sokkal egyszerűbb válaszolni, ha adat példát is látunk. Jelen esetben a $_SESSION és az $aaa volna érdekes.
Kérdés
Ezt definiálnád, hogy mit jelent? És hogy egyáltalán miért nincsen semmi ellenőrzés arra vonatkozóan, hogy mi lett beküldve? Mert teszem azt, én módosítom a változókat a weboldalon, hogy mondjuk az ár legyen 1 Ft, a darab mondjuk 1000 és rendeltem 1000 darab netbookot összesen 1000 Forintért.
Legyen minden elemhez csak az azonosító és a darabszám tárolva, és a többi adatot pedig vedd adatbázisból, gondolom úgy is ott tárolod őket.
Bocsi, nem tudtam, hogyan
Most már látom is, hogyan kell...
Szóval az adatbázisból jön le kb minden, kivéve az nev_feltet és a hozzá tartozó ár, mert azokat nem tudtam úgy megoldani.
nekem most nem is az a lényeg.
nos akkor megmutatom, hogyan is van ez:
ez itt a pl. index.php szükséges fájlja
Szóval ha így beütöm, hogy mit is akarok rendelni, akkor csak úgy csinál új bejegyzést a kosar.php-ba, ha a név változik, tehát ha rendelek x ételt kukorica feltéttel, az jó. De ha e mellé x pizzát akarok rendelni feltétel nélkül, akkor az előzőt felülirja, s nem új sorba. Ez az amit meg kéne oldani....
remélem érthető a problémám
Problémák
empty
-t hajlamos kétszer kiírni.Bízom benne, hogy nem teszed.
Na meg, a nevében benne van az ára a feltétnek, a pizzának meg az ára db-ből jön le...
látom írtál egy szép kódsort. ki fogom próbálni, köszi
...
Ha kész a webshop megmondod a címet? :)
Egyébként elég a termék ID-jté és darabszámát a session-ben eltárolnod, a többi jön az adatbázisból és nincs gond, persze az előbbeieket sem árt ellenőrizni.
Már vásároltam
Hmm... Erre megtaníthatnál
Erre megtaníthatnál hogyan kell, érdekelne:)
Elvégre ha valamit tud az ember, könnyebb ellene védekezni is.