Avatar billede Hans1 Praktikant
23. marts 2011 - 08:53 Der er 9 kommentarer og
1 løsning

Indkøbskurv samlet pris

Hej
Så er jeg gået i stå igen :(
Det sidste jeg mangler er den samlede pris i indkøbskurven.

Hvis vi nu siger at jeg har prisen på hvert produkt her:

$item["pris"]
[/div

Jeg har læst på andre sider at dette kunne være en mulighed:
Men jeg kan ikke lige gennemskue det.
[div]
$price = $item["pris"];
$antal = $item["antal"];

foreach($_SESSION["cart"] as $item => $et-eller-andet-her)
$total += $antal * $price;



Her er koden:


<?php
session_start();
if( !isset($_SESSION["cart"]) || count($_SESSION["cart"]) == 0){ 
echo 'Kurven er tom!';
}else{
foreach($_SESSION["cart"] as $item)
    {
          $br = "<br />";
        echo "vare ID: ".$item["vare_id"].$br;
        echo "Antal: ".$item["antal"].$br;
        echo "Valg:".$br;
        foreach($item["attributter"] as $key => $value)
            echo " - ".$key.": ".$value.$br;
     
        echo $br.$br;
    }
}
?>
Avatar billede majbom Novice
23. marts 2011 - 08:58 #1
$total = 0;
foreach($_SESSION["cart"] as $item)
    {
        $br = "<br />";
        echo "vare ID: ".$item["vare_id"].$br;
        echo "Antal: ".$item["antal"].$br;
        echo "Valg:".$br;
        foreach($item["attributter"] as $key => $value)
            echo " - ".$key.": ".$value.$br;
   
        echo $br.$br;
        $total += ($item['pris']*$item['antal']);
    }

echo $antal;
Avatar billede repox Seniormester
23. marts 2011 - 09:01 #2
Hvis du stadigvæk har fortsat med den indkøbskurv jeg konstruerede i http://www.eksperten.dk/spm/934726 er der lagt op til at du må enten lave et database opslag for hver linie i indkøbskurven eller også må du medtage prisen i indkøbskurven.

Database:
        $samlet_pris = 0;
        foreach($_SESSION["cart"] as $item)
    {
                $sql = "SELECT pris FROM varer WHERE vare_id = '".$item["vare_id"]."' LIMIT 1";
                $res = mysql_query($sql);
                $pris = mysql_result($res, 0, "pris");
                $samlet_pris += $pris * $item["antal"];
    }


Medtaget i indkøbskurven:
    //Når varen lægges i kurven
    if( !isset($_SESSION["cart"][$cart_row_id]) )
        {
           
            $_SESSION["cart"][$cart_row_id]["vare_id"] = $vare_id;
            $_SESSION["cart"][$cart_row_id]["antal"] = $antal;
            $_SESSION["cart"][$cart_row_id]["pris"] = 179.95; //Varens pris, når den lægges i kurven
            $_SESSION["cart"][$cart_row_id]["attributter"] = $options;           
        }
        else
            $_SESSION["cart"][$cart_row_id]["antal"] += $antal;

        // Visning af den samlede pris
        $samlet_pris = 0;
        foreach($_SESSION["cart"] as $item)               
                $samlet_pris += $item["pris"] * $item["antal"];
Avatar billede Hans1 Praktikant
23. marts 2011 - 09:05 #3
Jeg ville nok bruge databasen da jeg alligevel skal udskrive et enkelte produktpris, beskrivelse samt produktnavn.

Tak for hjælpen :)
Avatar billede Hans1 Praktikant
23. marts 2011 - 09:17 #4
Hmm jeg får følgene fejl:

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/domæne.dk/index.php on line 32

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /var/www/domæne.dk/index.php on line 32

Den der "pris" er det kolonnen i databasen?
$pris = mysql_result($res, 0, "pris");  // linie 32



if( !isset($_SESSION["cart"]) || count($_SESSION["cart"]) == 0){ 
echo 'kurv tom!';

}else{


  $samlet_pris = 0;
        foreach($_SESSION["cart"] as $item)
    {
                $sql = "SELECT price FROM shop_item WHERE id = '".$item["vare_id"]."' LIMIT 1";
                $res = mysql_query($sql);
                $pris = mysql_result($res, 0, "pris");
                $samlet_pris += $pris * $item["antal"];
    }

echo $samlet_pris;
echo $varer_i_kurven;
}
Avatar billede repox Seniormester
23. marts 2011 - 09:20 #5
Har du husket at åbne forbindelsen til MySQL?
Avatar billede Hans1 Praktikant
23. marts 2011 - 09:23 #6
Ja sådan her:

<?php
$host = 'dbhost';
$user = 'dbuser';
$pass = '****';
$name = 'dbnavn';
$db = &new MySQL($host,$user,$pass,$name);
?>
Avatar billede Hans1 Praktikant
23. marts 2011 - 09:26 #7
Ups det er mig som har kaldt henter fra shop_item istedet for shop_items Dooh!

Sorry!
Avatar billede repox Seniormester
23. marts 2011 - 09:26 #8
Det ser mærkeligt ud - det lader til at du bruger et abstraktionslag, hvorimod mit eksempel blot bruger PHP's native mysql funktioner.
Avatar billede Hans1 Praktikant
23. marts 2011 - 09:44 #9
Det var fordi at den gamle indkøbskurv jeg havde benyttede sig af filen mysql.class.php

Og den har jeg stadig inkluderet på siden.
Jeg ved at jeg ikke har brug for den nu med det nye system.
Så den vil jeg derfor også fjerne nu :)

Men dellers virker den perfekt nu repox.
Den sidste fejl var blot mig som ikke lige huskede rigtigt mht tabellens nav.
Avatar billede repox Seniormester
23. marts 2011 - 10:50 #10
Du fik et svar her...
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