Avatar billede Morten Professor
07. april 2015 - 07:57 Der er 9 kommentarer og
1 løsning

Slet en vare

Hvordan sletter jeg en vare. 

session_start();
   
    //så skal vi lige vide hvilken vare kunden vil have og hvor mange han skal have
    $id = "Ordre nr.: ".$row_rsVarer['id']."<br>".
    $id = "<br>"."Vare: ".$row_rsVarer['vare']."\n".
    $id = "<br>"."Pris: ".$row_rsVarer['pris']."\n".
    $id = "<br>"."Pris * antal: ".$row_rsVarer['antal'] * $row_rsVarer['pris']."<br>".
    $id = "<br>"."Oplysning: ".$row_rsVarer['tekst'];"<br>".            $antal = $row_rsVarer['antal'];
   
    //her kontrolleres det om kunden allerede har varen og hvis det er tilfældet tillægges antallet til den eksisterende værdi.
    //ellers oprettes varelinien blot med værdien af antal
    if(isset($_SESSION["kurv"][$id]))
        $_SESSION["kurv"][$id] += $antal;
    else
        $_SESSION["kurv"][$id] = $antal;
Avatar billede olsensweb.dk Ekspert
07. april 2015 - 08:26 #1
hvis det bare er at slette den fra session, så kig på
http://php.net/manual/en/function.unset.php

har du bygget dit session fornuftigt op, kan du nøjes med at skrive
unset($_SESSION["kurv"][$id]);
Avatar billede Morten Professor
07. april 2015 - 08:33 #2
Er den bygget fornuftigt op eller er det helt forkert?
Avatar billede olsensweb.dk Ekspert
07. april 2015 - 09:15 #3
prøv dette eks

<?php
session_start();
$SESSION['kurv']=array(
    "4"=>array("id"=>4, "antal"=>2),
    "2"=>array("id"=>2, "antal"=>1),
    "1"=>array("id"=>1, "antal"=>1),
    "7"=>array("id"=>7, "antal"=>1)
);
print_r($SESSION['kurv']);
unset($SESSION['kurv'][2]);
print_r($SESSION['kurv']);
?>


og nej det er ikke et tilfælde key og id har sammen værdi.

navn, beskrivelse, pris pr stk mv. henter jeg fra db når jeg skal bruge det

er dit array bygget sådan op ??, det er nemlig fornuftigt
Avatar billede Morten Professor
07. april 2015 - 09:55 #4
Hvor skal min data stå?
Avatar billede olsensweb.dk Ekspert
07. april 2015 - 12:36 #5
>Hvor skal min data stå?
dem henter du fra databasen via en function når du udskriver din kurv

kald kunne være
$item = vare_Read($conn, $vare_id);

her vil $item så indeholde oplysninger som: varenavn, varepris, varebeskrivelse osv.

on du så lader din function retunere et array eller et object, det er en smags sag (foretrækker object)

hvis vi udbygger det tidligere eks

<?php
session_start();

function vare_Read($conn, $id){
    // $sql = "SELECT * FROM vare WHERE id = ". $id;
   
    // skal normalt ikke være en switch, men hentes via sql
    $ar=array();
    switch($id){
        case 1:  $ar=array("id"=>1,  "pris"=>12.50, "name"=>"sofa0", "beskrivelse"=>"brun læder sofa0"); break;
        case 2:  $ar=array("id"=>1,  "pris"=>12.50, "name"=>"sofa1", "beskrivelse"=>"brun læder sofa1");break;
        case 4:  $ar=array("id"=>1,  "pris"=>12.50, "name"=>"sofa2", "beskrivelse"=>"brun læder sofa2");break;
        case 7:  $ar=array("id"=>1,  "pris"=>12.50, "name"=>"sofa3", "beskrivelse"=>"brun læder sofa3");break;
        default: $ar=array("id"=>"", "pris"=>0, "name"=>"", "beskrivelse"=>"");break;       
    }
    return (object) $ar;   
}

$conn = NULL; // mysql eller PDO connection

$id=2;
$antal =4;
$SESSION['kurv']=array(
    "4"=>array("id"=>4, "antal"=>2),
    "2"=>array("id"=>2, "antal"=>2),
    "1"=>array("id"=>1, "antal"=>2),
    "7"=>array("id"=>7, "antal"=>2)
);
echo "<pre>";
print_r($SESSION['kurv']);
echo "</pre>";
// læg til antal, der skal sikres mod at $antal bliver negativ, eller ihvetfald $SESSION['kurv'][$id]['antal'] bliver negativ
$SESSION['kurv'][$id]['antal']+=$antal;
$pris_total=0;
$antal_vare =0;
foreach($SESSION['kurv'] as $varer => $vare){
    $item = vare_Read($conn, $vare['id']);echo "<br>";
    echo "varenavn = ". $item->name ;        echo "<br>";
    echo "beskrivelse = ".  $item->beskrivelse;    echo "<br>";
    echo "pris pr stk = ".$item->pris;    echo "<br>";
    echo "antal = ".$vare['antal'];    echo "<br>";
    $varepris = $item->pris *  $vare['antal'];   
    echo "varepris = ".$varepris;echo "<br>";
    $pris_total += $varepris;
    $antal_vare += $vare['antal'];
}
echo "<br>";
echo "<br>";
echo "total pris = ".$pris_total; echo "<br>";
echo "total antal  vare = ".$antal_vare;

// komtrol
echo "<pre>";
print_r($SESSION['kurv']);
echo "</pre>";

unset($SESSION['kurv'][$id]);

// komtrol
echo "<pre>";
print_r($SESSION['kurv']);
echo "</pre>";
// tilføje en vare til kurven
$SESSION['kurv'][42]=array("id"=>42, "antal"=>5);

// komtrol
echo "<pre>";
print_r($SESSION['kurv']);
echo "</pre>";
?>
Avatar billede Morten Professor
09. april 2015 - 13:05 #6
Hej ronols

//så skal vi lige vide hvilken vare kunden vil have og hvor mange han skal have
   
    $id = $row_rsVarer['id'];
    $_SESSION['pris'][$id] = $row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Vare: ".$row_rsVarer['vare']."\n".
    $_SESSION['vare'][$id] = "<br>"."Pris: ".$row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Oplysning: ".$row_rsVarer['tekst'];"<br>".            $antal = $row_rsVarer['antal'];
   
    //her kontrolleres det om kunden allerede har varen og hvis det er tilfældet tillægges antallet til den eksisterende værdi.
    //ellers oprettes varelinien blot med værdien af antal
    if(isset($_SESSION["kurv"][$id]))
        $_SESSION["kurv"][$id] += $antal;
    else
        $_SESSION["kurv"][$id] = $antal;

Mangler nu bare at hvad en samlet pris.
Avatar billede olsensweb.dk Ekspert
09. april 2015 - 13:27 #7
>Mangler nu bare at hvad en samlet pris.
kig i foreach($SESSION['kurv'] as $varer => $vare){

nærmere betegnet disse 2 linjer
$varepris = $item->pris *  $vare['antal'];   
$pris_total += $varepris;

hvis du bygger dit session op som vist har du faktisk fået hele coden i #5
afprøv eks i #5 og leg med det.
Avatar billede Morten Professor
09. april 2015 - 14:02 #8
Tak for hjælpen for denne gang.

Vil du give et svar så du kan få point for din hjælp.

Så vil jeg lege videre :o)
Avatar billede olsensweb.dk Ekspert
09. april 2015 - 14:14 #9
svar
Avatar billede Morten Professor
09. april 2015 - 21:37 #10
Jeg fandt ud af hvad jeg kunne gøre, men ikke uden din hjælp lærte meget ud af din kode.

    $id = $row_rsVarer['id'];
    $_SESSION['pris'][$id] = $row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Vare: ".$row_rsVarer['vare']."\n".
    $_SESSION['vare'][$id] = "<br>"."Pris: ".$row_rsVarer['pris']."\n".
    $_SESSION['vare'][$id] = "<br>"."Oplysning: ".$row_rsVarer['tekst'];"<br>".
    $_SESSION['samletpris'] += $row_rsVarer['pris'] * $row_rsVarer['antal'];        $antal = $row_rsVarer['antal'];

Nu kommer den med en samlet pris :o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester