Avatar billede banbib Nybegynder
25. marts 2008 - 09:33 Der er 9 kommentarer og
1 løsning

"Bestillingssystem" at gemme flere forskellige varer i en kurv

Hejsa!

Jeg har nogle problemer med at gemme flere ting i en "indkøbskurv".
Kan sagtens gemme 1 enkelt ting i kurven, samt antal af denne vare,
men hvis folk ønsker flere end 1 vare, så er jeg lidt på herrens mark.
Jeg har prøvet med disse koder:
<?php
include('MIN CONNECTIONFIL');


        $sql="SELECT * FROM Vare";
        $result = mysql_query($sql);
        while($row = mysql_fetch_assoc($result)){
echo    "<table width='168' border='1'><tr>";
echo    "<td colspan='2'>";
echo    $row['VareNavn'];
echo    "</td></tr><tr>";
echo    "<td width='143'>";
echo    $row['VareInfo'];
echo    "</td><td width='25'>";
echo    $row['VarePris']. ",-";
echo    "</td></tr></table>";
echo    "<br /><form id='koeb' method='post' action='basket.php'>";
echo    "<input name='id' type='hidden' id='id' value='";
echo    $row['VareNr'];
echo    "' />";
echo    "<input name='navn' type='hidden' id='id' value='";
echo    $row['VareNavn'];
echo    "' />";
echo    "<input name='antal' type='text' id='antal' size='2'
maxlength='2' />
  <p>
    <label>
      <input type='submit' name='button' id='button' value='Bestil' />
    </label>
  </p><br /><br /></form>";
        }
                ?>
Det er min fulde liste over varer (den virker fint)


<?php
include('MIN CONNECTIONFIL');


if(isset($_POST['VareNr'])){
        $_SESSION['VareNr'] = $_POST['id'];
                $_SESSION['VareNavn'] = $_POST['navn'];
        $_SESSION['antal'] = $_POST['antal'];
                $vareNr = $_SESSION['VareNr'];
                $vareNavn = $_SESSION['VareNavn'];
                $vareAntal = $_SESSION['antal'];
                $_SESSION["varer"][$vareNavn] = $vareAntal;



}


if (!empty($_SESSION["varer"]))
{
        echo "Indholdet af kurven: <br /><br />";
    foreach ($_SESSION["varer"] as $vareNr => $vareAntal)
        {
                $query= mysql_query("SELECT * FROM Vare WHERE VareNr=$vareNr");
        while($row = mysql_fetch_array($query))
                        {
            echo $vareAntal . " stk " . $row['VareNavn'] .
"&nbsp;á&nbsp;" . $row['VarePris'] . "<br />";
            }
    }

}


else
{
        echo "Kurven er tom";

}


?>
Dette er filen "basket.php", hvor varerne der er blevet "bestilt"
gerne skulle vises. Den viser dog ingenting andet end "Kurven er tom"
- har jeg ødelagt min kode på en eller anden måde? Jeg tror
efterhånden ejg har set mig blind på det.

Jeg håber der er nogen derude der kan guide mig tilbage på sporet.


Mvh
Peter nielsen
Avatar billede jakobdo Ekspert
25. marts 2008 - 10:22 #1
Husker du: session_start(); i toppen af filen ?
Avatar billede banbib Nybegynder
25. marts 2008 - 10:25 #2
Ja, jeg har session_start(); med i begge dokumenter.
Avatar billede jakobdo Ekspert
25. marts 2008 - 10:29 #3
Prøv at test om dette går godt:

if(isset($_POST['VareNr'])){
        $_SESSION['VareNr'] = $_POST['id'];
                $_SESSION['VareNavn'] = $_POST['navn'];
        $_SESSION['antal'] = $_POST['antal'];
                $vareNr = $_SESSION['VareNr'];
                $vareNavn = $_SESSION['VareNavn'];
                $vareAntal = $_SESSION['antal'];
                $_SESSION["varer"][$vareNavn] = $vareAntal;
Avatar billede banbib Nybegynder
25. marts 2008 - 10:56 #4
Hmm... jah ok, $_POST['VareNr'] findes jo ikk rigtig nogen steder.. (Flot af mig).
efter jeg har lavet den om til $_POST['id'] virker det fint :) - den del. (Før viste den overhovedet ingen fejl).

Nu får jeg dog denne fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/bregnholm.sub.ots.dk/public_html/wap/basket.php on line 58
^^        while($row = mysql_fetch_array($query))

Skal siges, jeg er stadig rimelig ny i PHP verden - står og er i gang med et eksamensprojekt, hvor vi skal lave et funktionelt bestillingssystem.
Avatar billede jakobdo Ekspert
25. marts 2008 - 11:16 #5
Det er muligvis en fejl i sql'en lige over linje 58.
Avatar billede banbib Nybegynder
25. marts 2008 - 12:29 #6
Kan ikke lige finde fejlen.

if (!empty($_SESSION['varer']))
{
    echo "Indholdet af kurven: <br /><br />";
    foreach ($_SESSION['varer'] as $vareNr => $vareAntal)
    {
        $sql ="SELECT * FROM Vare WHERE VareNr = $vareNr";
        $result = mysql_query($sql);
        while($row = mysql_fetch_array($result))
            {
            echo $vareAntal . " stk " . $row['VareNavn'] . "&nbsp;á&nbsp;" . $row['VarePris'] . "<br />";
            }
    }
}
else
{
        echo "Kurven er tom";
}

Når jeg ikke har valgt nogen produkter, kører min else statement fint.. Jeg er fuldstændig på bar bund.
Avatar billede jakobdo Ekspert
25. marts 2008 - 13:01 #7
Prøv at ret: $result = mysql_query($sql);
til: $result = mysql_query($sql) or die(mysql_error());
Avatar billede banbib Nybegynder
25. marts 2008 - 13:34 #8
Omg - hvor dum kan jeg være... Hvis jeg nu bare lod min array pege mod den rigtige variabel, så kunne det måske være det ville virke..

$_SESSION["varer"][$vareNavn] = $vareAntal;
- ændret til -
$_SESSION["varer"][$vareNr] = $vareAntal;

Og nu virker det hele perfekt..

Tak for hjælpen!
Avatar billede jakobdo Ekspert
25. marts 2008 - 13:39 #9
Svar!
Avatar billede jakobdo Ekspert
28. maj 2008 - 21:00 #10
Takker for point.
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