Avatar billede peecee Nybegynder
20. december 2002 - 11:44 Der er 12 kommentarer og
1 løsning

Shop - Hjælp!

Jeg er ved at lave en onlineshop, nu er jeg så kommet til kurven.

Jeg har varenr man vil købe og antal af det varenr man vil købe. Via varenr finder jeg varepris og varenavn.

Jeg skal have disse data midlertidigt i kurven så man kan slette og tilføje flere af samme varenr, jeg tænkte at det kunne gøres med sessions, men her kommer så mine problemer:

Jeg ved ikke hvordan jeg laver en session der indeholder BÅDE varenavn, varepris og vareantal(det er vist noget med explode eller implode). OG hvordan jeg laver en ny session for hver vare man vil købe og snupper dataene derfra i selve kurv.php.

Nogen der kan hjælpe?
Avatar billede sostack Nybegynder
20. december 2002 - 12:11 #1
Avatar billede peecee Nybegynder
20. december 2002 - 12:18 #2
Jeg har kigget der.. men jeg synes ikke at jeg får så meget ud af det ift. mine problemer!
Avatar billede sostack Nybegynder
20. december 2002 - 12:35 #3
prøv at kigge nærmere på denne superglobale variabel:
$_SESSION
Til den kan du tilføje alt muligt:

$_SESSION[$varenummer] = $antal;

Her lægger du $antal af $varenummer i kurven. Når brugeren så vælger at gå til kassen, henter du alle items ud og finder varenavne og priser.

$_SESSION[$varenavn] = $antal;
$_SESSION[$samletpris] += $antal * $varepris;

Her har du hentet varenavnet lægger dette i "kurven", samtidig med du opdaterer det samlede beløb der er "købt" for.

Leg lidt med det, det er egentligt meget underholdende at få det til at virke ;-}
Avatar billede peecee Nybegynder
20. december 2002 - 12:44 #4
Det ser godt ud det der sostack.. kigger på det
Avatar billede peecee Nybegynder
20. december 2002 - 12:59 #5
Hvordan arbejder jeg videre med varenavne(fx. hvis $varenummer er navn og $antal er værdien)?

Og hvordan henter jeg de forskellige session-data hvis de har navne fra 0-100($varenr) allesammen.
Avatar billede sostack Nybegynder
20. december 2002 - 13:11 #6
Prøv med:

foreach($_SESSION as $key -> $value) {
echo $key .": ". $value ."<br>";
}

Så får du alle oplysninger der ligger i $_SESSION skrevet ud som
værdinavn0 : værdi0
værdinavn1 : værdi1
værdinavn2 : værdi2
o.s.v.
Avatar billede peecee Nybegynder
21. december 2002 - 15:53 #7
den skriver bare Object når jeg prøver det med foreach. Jeg synes ellers at min kode ser rigtig ud..
Avatar billede peecee Nybegynder
21. december 2002 - 16:11 #8
Hmm.. nu vil den gerne skrive en session ud jeg har oprettet normalt, men ikke dem jeg sætter når man bestiller, der er som om den ikke vil acceptere sessionsene. Her er den kode jeg bruger til at sætte sessions:

$vareantal = $_SEND["antal"];
$varenr = $_GET["nr"];
if($_SEND["send"]){
    $_SESSION[$varenr] = $vareantal;
}

Jeg kan ikke se at der er noget galt, kan i? Det eneste skulle være at jeg bruger en funktion til at lave formularen, kan det være det?
Avatar billede peecee Nybegynder
21. december 2002 - 17:43 #9
Det var bare mig der var spasser :) det skulle selvfølgelig være $_POST i stedet for $_SEND :/

sostack, du får pointene hvis du kan forklare mig hvorfor mit foreach ikke virker!

Her er koden jeg bruger til at hente sessionsne med:

mysqlaccess();
            foreach($_SESSION as $key -> $value){
                $spoerg = mysql_query("select navn,pris FROM onlinevarer WHERE nr = '$key' ORDER BY nr DESC") or die('MySQL fejl: '.mysql_error());
                while($data = mysql_fetch_row($spoerg)){
                $_SESSION['samletpris'] += $varepris * $value;
                echo $value ." stk:". $data[0] ." pris pr. styk:". $data[1];
                }
            }
            echo $_SESSION['samletpris'];

Forresten, hvad betyder det += ift. den session? Er det noget med "opdater session"?
Avatar billede peecee Nybegynder
21. december 2002 - 17:45 #10
Nu skriver den nemlig bare "Object" ved foreach funktionen. Jeg har tjekket på siden jeg bruger til at sætte sessions at sessionsne bliver sat.
Avatar billede peecee Nybegynder
21. december 2002 - 19:04 #11
OK! nu virker det med 1 vare(mangler dog alle funktionerne endnu :)) Men hvis man efter man har valgt en vare går tilbage fra kurven for at finde flere varer glemmer kurven den første vare. Fejlen kan ses her: http://www.peecee.dk/onlineshop

Hvad kan dette skyldes?
Avatar billede peecee Nybegynder
21. december 2002 - 19:47 #12
Det er ligesom at scriptet glemmer sessionsne, aner ikke hvorfor, men nu virker foreach og det så du har fået pointene sostack!

Men jeg vil gerne have hjælp til lige at få mit script til at huske sessionsne, så her kommer scriptet kurv.php:

<?
session_start();
require("config.php");
if(!isset($_SESSION['UserID'])){
    mysqlaccess();
    $spoerg = mysql_query("select UserID FROM ordrer ORDER BY nr DESC limit 1") or die('MySQL fejl: '.mysql_error());
    $data = mysql_fetch_row($spoerg);
    $sessionuserid = $data[0];
    $_SESSION['UserID'] = $sessionuserid + 1;
}
$ersendt = $_POST["send"];
$vareantal = $_POST["antal"];
$varenr = $_GET["nr"];
if($ersendt){
    $_SESSION[$varenr] = $vareantal;
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
    <title>Onlineshop</title>
<link href="style/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<table width='500' height='550' cellpadding='0' cellspacing='0'>
    <tr>
        <td height='50' width='500' colspan='3'>
            <p><img src="pics/banner.gif"></p>
        </td>
    </tr>
    <tr>
        <td height='485' width='100' valign="top">
            <div align="center"><a href="kurv.php" class="menu">Kurv</a></div><p>
            Produkter:<br><br>
            Køling:<br>
            &nbsp;-<a href="index.php?kategori=blæsere">Blæsere</a><br>
            &nbsp;-<a href="index.php?kategori=gitre">Gitre</a><br>
            &nbsp;-<a href="index.php?kategori=kølere">Kølere</a><br><br>

            Shoppen:<br>
            &nbsp;-<a href="profil.php">Profil</a><br>
            &nbsp;-<a href="kontakt.php">Kontakt</a><br>
            &nbsp;-<a href="info.php">Info</a><br>
            &nbsp;-<a href="betingelser.php">Salg/levering</a><br>       
            </p>
        </td>
        <td width='15' class="usynlig"></td>
        <td height='500' width='385' class='usynlig' rowspan="2" valign="top">
           
            <table width="70%" cellpadding="1" cellspacing="0"><tr><td width="40%"><p>Varenavn:</p></td><td width="30%"><p>Antal:</p></td width="30%"><td><p>Pris pr. styk:</p></td></tr>
            <?
            mysqlaccess();
            while(list($key, $value) = each ($_SESSION)) {
                $spoerg = mysql_query("select navn,pris FROM onlinevarer WHERE nr = '$key' ORDER BY nr DESC") or die('MySQL fejl: '.mysql_error());
                while($data = mysql_fetch_row($spoerg)){
                $_SESSION['samletpris'] += $data[1] * $value;
                echo "<tr><td><p>$data[0]</p></td><td><p>$value</p></td><td><p>$data[1]</p></td>";
                echo "<br>";
                }
            }
            $prisialt = $_SESSION['samletpris'];
            echo "<tr><td height='15' class='usynlig'></td></tr>";
            echo "<tr><td colspan='2'><p>Pris i alt:</p></td><td><p>$prisialt kr</p></td></tr>";
            echo "</td></tr></table>";
            tilbage();
            ?>           
           
        </td>
    </tr>
    <tr>
        <td height='15' align="center">
            <p>Copyright 2002<br>PeeCee.dk</p>
        </td>
    </tr>
</table>
</body>
</html>
Avatar billede sostack Nybegynder
23. december 2002 - 07:12 #13
Jeg tror du skal checke om $_SESSION er sat, allerførst,  og kun hvis den ikke er, skal du have en session_start(), ellers laver den jo en ny session hvergang siden loades.

/sostack
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