logo    PHP - Indkøbskurv.





Nedenfor er vist koderne til en indkøbskurv (ikke css).


Omdrejningspunktet er $_SESSION-arrayen [kurven].


Data indtastes til feltet , der har karakteristikaene:
<input class="bredde" type='textbox' name='planter_antal[$plan_id]' />.
Det indebærer, at feltet nu ikke blot indeholder er variabel (antal), men er udvidet til at være et associativt array der også indeholder variablen [$plan_id] der er til rådighed fra et forudgående udtræk fra databasen.



Slet SESSION
Slet alle data i $_SESSION
session_destroy(); //slettet session
Slet alle elementer i SESSION
Tøm specifikt array
$_SESSION['kurv'] = array(); // tøm array
Slet element i $_SESSION
Sletter element med dent pågældende variabel-værdi.
unset ($_SESSION['kurv'][$vare_id]);
Indkøbskurv
Indkøbskurven indeholder oplysninger om, hvilke varer brugeren har markeret at ville købe. Oplysningerne hentes dels fra $_SESSION (varenumre og antal) og dels fra databasen.

Foreach bruges til udtræk af data fra $_SESSION og tilknytning af data fra databasen.
De enkelte elementer i arrayen deles op i navnet $plan_id og værdien $plan_antal, der så kan anvendes hver for sig.
<?php //echo "<table><tr><td><a href='kurven.php?handling=tom'><button type='button'>Tøm</button></a></td/gt;<td>  Tøm indkøbskurven>/td></tr></table>";
//echo "<table><tr><td><a href='ordre.php'><button type='button'>Køb</button></a></td><td>  Køb varerne</td></tr></table>";

$sum = 0;
//$teller = count($_SESSION['kurv']);

if (!isset($_SESSION['kurv']) || count($_SESSION['kurv']) == 0)
{
echo "Din kurv er tom";
}
else
{
//
//$sum = 0;
//$teller = count($_SESSION['kurv']);
//
//echo "Du har " . $teller . " varer i kurven<br /><hr />";

echo "<table>";
echo "<tr><td colspan='2'>  Produkt</td><td> Pris</td></tr>";
foreach ($_SESSION['kurv'] as $plan_id => $plan_antal)
{
$query = "SELECT * from plantestam where plan_id =$plan_id";
$result = mysqli_query($db_link, $query);
$antal = mysqli_num_rows ($result);
$row = mysqli_fetch_assoc ($result);

$vare_pris = $plan_antal * $row['plan_pris'];
$vare_pris = number_format($vare_pris, 2, ',', '.');
echo "<tr><td>" . $plan_antal . "</td><td>" . $row['plan_navn'] . "</td><td>". $vare_pris . " kr</td></tr> ";

} //foreach


echo "<tr><td colspan='3'>Til kassen</td></tr>";
echo "</table>";
} //Teller
?>
Varevalg - fra liste
Bruger URL-parameter som grundlag for at trække data fra databasen til opbygning af liste, som brugerne kan angive købsvalg i (i feltet 'planter_antal[$plan_id]').
Afventer at brugeren trykker på "Opdater kurv".
Opdaterer derpå $_SESSION.

'planter_antal[$plan_id]': I listen udtrækkes data for de felter, der er foretaget indtastning til. Disse data overføres til $_POST.

$_SESSION opdateres. Der bruges den samme kode hvadenten, der er data fra et eller flere inddatafelter.
<?php
if (isset ($_GET['planty_id'])) // start GET
{
$planty_id = $_GET['planty_id'];

?>

<form method='post'>
<?php
$antal = 0;
$sql = "SELECT * FROM plantestam where fk_planty_id =$planty_id";
$result = mysqli_query ($db_link, $sql) or die (mysqli_error($db_link));

echo "<table>";
echo "<tr><td> Stk</td><td>< Produkt navn</td><td>Pris </td><td>mere info</td></tr>";

while ($row = mysqli_fetch_assoc ($result))
{
$plan_id = $row['plan_id'];
echo "<tr>";
echo "<td><input type='text' name='planter_antal[$plan_id]' /></td>"; // etablerer 'planter_id' som array
echo "<td>" .$row['plan_navn'] . "</td>";
$plan_pris = number_format($row['plan_pris'], 2, ',', '.');
echo "<td>" . $plan_pris . "</td>";
echo "<td><a href='info.php?plan_id=" . $plan_id . "&plan_navn" . $row['plan_navn'] . "'/>Info</a>/lt;/td>";
echo "</tr>";
} // while slut
echo "</table>";
?>

<br /><input type='submit' name='submit_kurv' value='Opdater kurv' />

</form>
<?php

if (isset ($_POST['submit_kurv']))
{
$planter_antal = $_POST['planter_antal'];

foreach ($planter_antal as $vare_id => $antal) // Opdeler arrayen i navnet $vare_id og værdien $antal
{
$antal = trim ($antal);

if (is_numeric ($antal) && $antal >= 0)
{
$antal = (int) $antal; // antal juggles til heltal

if ($antal == 0)
{
unset ($_SESSION['kurv'][$vare_id]); // sletter varen i $_SESSION
}
else
{
$_SESSION['kurv'][$vare_id] = $antal; // indsætter nyt eller overskriver i $_SESSION
} // slut antal
} // slut is_numeric
} // slut foreach

header ("Location: " . $_SERVER['REQUEST_URI']); exit;
}

// slut isset ?>

<?php
}
else // GET
{
echo "<p>Der problemer med URL-parameter i adresselinien</p>";
} // slut GET
?>
Varevalg - enkelt vare
Bruger URL-parameter som grundlag for at trække data fra databasen til opbygning af liste, som brugerne kan angive købsvalg i (i feltet 'planter_antal[$plan_id]'). Afventer at brugeren trykker på "Opdater kurv". Opdaterer derpå $_SESSION.

'planter_antal[$plan_id]': I listen udtrækker data fra feltet, hvis der er foretaget indtastning. Dataene overføres til $_POST.

$_SESSION opdateres. Der bruges den samme kode hvadenten, der er data fra et eller flere inddatafelter.
<!-- --Her starter content---------------------------- -->

<?php
if (isset ($_GET['plan_id'])) // start GET
{
$plan_id = $_GET['plan_id'];
$plan_navn = $_GET['plan_navn'];

$query = "select * from plantestam
where plan_id = $plan_id";
$result = mysqli_query($db_link, $query);
$antal = mysqli_num_rows ($result);
$row = mysqli_fetch_assoc ($result);
echo "<h1 class='overskr'>" . $row['plan_navn'] . "</h1>";
echo "<p><br /></p>";

$plan_besk = html_entity_decode($row['plan_besk']);
echo $plan_besk;
?>
<div>
<div class="166">
<table class="border01">
<tr><td class="width166 height28 bg02 txcen">Køb nu</td></tr>
<tr><td class="height125 txcen">
<table class="w100">
<tr class="txcen"><td class="overskr02">Pris: <?php $plan_pris = number_format($row['plan_pris'], 2, ',', '.');
echo $plan_pris ?> kr.</td></tr>
<form method='post'>
<?php
echo "<tr><td class='txcen'>Antal: <input type='text' class='antalbredde' name='planter_antal[$plan_id]' /></td></tr>";
?>
<tr><td class="txcen"> <input class='tilfojknap' type='submit' name='submit_kurv' value='Tilføj til kurv'/></td></tr>
</form>
</table>
</td></tr>
</table>

<?php
if (isset ($_POST['submit_kurv']))
{
$planter_antal = $_POST['planter_antal'];
foreach ($planter_antal as $vare_id => $antal)
{
$antal = trim ($antal);
if (is_numeric ($antal) && $antal >= 0)
{
$antal = (int) $antal;
if ($antal == 0)
{
unset ($_SESSION['kurv'][$vare_id]);
}
else
{
$_SESSION['kurv'][$vare_id] = $antal;

} // slut numeric
} // slut antal
} // slut foreach

// header ("Location: " . $_SERVER['REQUEST_URI']); exit;
} // slut if isset

?>
</div>
<div class="clearboth"> </div>
</div>

<button class="tilbageknap" onclick="history.back()">Tilbage</button>
<?php
}
else // GET
{
echo "<p>Der problemer med URL-parameter i adresselinien</p>";
} // slut GET
?>
<!-- --Her slutter content---------------------------- -->
Ordre
Bestilling
Bestilling version 2
Indkøbskurveni $_SESSION
Ordreoversigt
Adresse
Betaling
Ordrebekræftelse
Afslutning af køb
Handelsbetingelser
Oprettelse af kundedata




















x
x