Avatar billede snigeren Nybegynder
23. september 2005 - 14:25 Der er 14 kommentarer og
1 løsning

tjeck antal i databasen og vis på sitet?

Hej eksperter

Jeg bruger følgende script i min indkøbskurv, i scriptet kunne jeg godt tænke mig at den går ind i databasen og tjecker hvor mange der er af hver item og skriver det antal på sitet i "antal" drop down menuen.

Det vil sige hvis der kun er 3 kan man vælge 1-3 styk af den givne vare:

<?php

    include("db.php");
       
    switch($_GET["action"])
    {
        case "add_item":
        {
            AddItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "update_item":
        {
            UpdateItem($_GET["id"], $_GET["qty"]);
            ShowCart();
            break;
        }
        case "remove_item":
        {
            RemoveItem($_GET["id"]);
            ShowCart();
            break;
        }
        default:
        {
            ShowCart();
        }
    }

    function AddItem($itemId, $qty)
    {
        // Will check whether or not this item
        // already exists in the cart table.
        // If it does, the UpdateItem function
        // will be called instead
       
        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        // Check if this item already exists in the users cart table
        $result = mysql_query("select count(*) from cart where cookieId = '" . GetCartId() . "' and itemId = $itemId");
        $row = mysql_fetch_row($result);
        $numRows = $row[0];
       
        if($numRows == 0)
        {
            // This item doesn't exist in the users cart,
            // we will add it with an insert query

            @mysql_query("insert into cart(cookieId, itemId, qty) values('" . GetCartId() . "', $itemId, $qty)");
        }
        else
        {
            // This item already exists in the users cart,
            // we will update it instead
           
            UpdateItem($itemId, $qty);
        }
    }
   
    function UpdateItem($itemId, $qty)
    {
        // Updates the quantity of an item in the users cart.
        // If the qutnaity is zero, then RemoveItem will be
        // called instead

        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        if($qty == 0)
        {
            // Remove the item from the users cart
            RemoveItem($itemId);
        }
        else
        {
            mysql_query("update cart set qty = $qty where cookieId = '" . GetCartId() . "' and itemId = $itemId");
        }
    }
   
    function RemoveItem($itemId)
    {
        // Uses an SQL delete statement to remove an item from
        // the users cart

        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        mysql_query("delete from cart where cookieId = '" . GetCartId() . "' and itemId = $itemId");
    }
   
    function ShowCart()
    {
        // Gets each item from the cart table and display them in
        // a tabulated format, as well as a final total for the cart
       
        global $dbServer, $dbUser, $dbPass, $dbName;

        // Get a connection to the database
        $cxn = @ConnectToDb($dbServer, $dbUser, $dbPass, $dbName);
       
        $totalCost = 0;
        $result = mysql_query("select * from cart inner join items on cart.itemId = items.itemId where cart.cookieId = '" . GetCartId() . "' order by items.itemName asc");
        ?>
<html>
<head>
<title>Jernbanemaerker.dk - Indk&oslash;bskurv</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css/styles.css" rel="stylesheet" type="text/css">
<script language="JavaScript">

    function UpdateQty(item)
    {
    itemId = item.name;
    newQty = item.options[item.selectedIndex].text;
       
    document.location.href = 'cart.php?action=update_item&id='+itemId+'&qty='+newQty;
    }
       
</script>
</head>

<body bgcolor="#D8C5A3">
<table width="900" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr align="right" valign="top">
    <td width="900" height="143" class="top"><table width="555" height="138" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td align="left" valign="bottom"><a href="#">FORSIDE</a> | <a href="#">PRODUKTER</a> | <a href="#">KONTAKT</a> | <a href="#" class="style2">INDK&Oslash;BSKURV</a></td>
      </tr>
    </table></td>
  </tr>
  <tr>
    <td height="503" valign="top" class="body" bgcolor="#F2E3C8"><p>&nbsp;</p>
    <form name="frmCart" method="get">
        <table width="100%" cellspacing="0" cellpadding="0" border="0">
            <tr class="text">
                <td height="12">&nbsp;</td>
                <td width="37%" height="12">PRODUKT</td>
                <td width="16%">VARETYPE</td>
                <td height="12">ANTAL</td>
                <td height="12">PRIS PR. STK.</td>
                <td height="12">SLET VAREN?</td>
          </tr>
            <tr class="text">
              <td height="13" colspan="6"><img src="gfx/prik.jpg" width="100%" height="1"></td>
          </tr>
            <?php
           
            while($row = mysql_fetch_array($result))
            {
                // Increment the total cost of all items
                $totalCost += ($row["qty"] * $row["itemPrice"]);
                ?>
                    <tr class="text">
                        <td width="2%" height="25">&nbsp;</td>
                        <td class="text"><?php echo $row["itemName"]; ?></td>
                        <td class="text"><?php echo $row["itemType"]; ?></td>
                        <td width="14%" height="25" class="text">
                           
                            <select name="<?php echo $row["itemId"]; ?>" onChange="UpdateQty(this)">
                              <?php
                               
                                    for($i = 1; $i <= 20; $i++)
                                    {
                                        echo "<option ";
                                        if($row["qty"] == $i)
                                        {
                                            echo " SELECTED ";
                                        }
                                        echo ">" . $i . "</option>";
                                    }
                                ?>
                            </select>
                        </td>
                        <td width="19%" height="25">
                              KR.<?php echo " ".number_format($row["itemPrice"], 2, ".", ","); ?>
                        </td>
                        <td width="12%" height="25">
                              <a href="cart.php?action=remove_item&id=<?php echo $row["itemId"]; ?>" class="style2">SLET VAREN</a>
                        </td>
                    </tr>
                <?php
            }
           
            // Display the total
            ?>
                    <tr class="text">
                        <td colspan="6"><img src="gfx/prik.jpg" width="100%" height="1"> </td>
                    </tr>
                    <tr class="text">
                        <td>&nbsp;</td>
                        <td colspan="2"><a href="products.php" class="style2">&lt;&lt; Keep Shopping</a></td>
                        <td align="right">TOTAL: </td>
                        <td colspan="2"> KR.<b><?php echo " ".number_format($totalCost, 2, ".", ","); ?></b></td>
                    </tr>
        </table>
      </form>
    </p></td>
  </tr>
</table>
</body>
</html>
            <?php
    }

?>


Håber der er nogen der kan hjælpe mig med problemet...

/Snig
Avatar billede jakobdo Ekspert
23. september 2005 - 14:34 #1
Antal af hvad?
Hvor mange varer der er på dit laver? (i databasen)
I indkøbskurven?
Avatar billede snigeren Nybegynder
23. september 2005 - 15:06 #2
Altså under products kan man vælge nogle produkter man ka "putte i indkøbskurv" Hvis man så vælger indkøbskurven kan man ændre antallet fra at være 1 til det antal man nu ønsker af de varer man har proppet i indkøbskurven.

Hvordan kan jeg så sige til indkøbskurven at der måske kun er 8 styk af den pågældende vare så man ikke kan vælge mere end 8 styk?
Avatar billede snigeren Nybegynder
23. september 2005 - 15:37 #3
der skal selvfølgelig være en entry i databasen der hedder "itemQty" som så f.eks. er 8 for item nr. 1
Avatar billede jakobdo Ekspert
23. september 2005 - 15:41 #4
Det du skal gøre i første omgang er:
træk antal ud i en form -> input.
Så kan du submitte denne form, og gemme de nye data.
Giver det mening?
Avatar billede snigeren Nybegynder
23. september 2005 - 15:57 #5
uhm,.. ikke nok desværre,.. jeg er ski ikke den skarpeste til php... er det meget advanceret at lave?
Avatar billede snigeren Nybegynder
23. september 2005 - 15:57 #6
hvor er det jeg skal gøre dette? er det på products siden eller hvordan?
Avatar billede jakobdo Ekspert
24. september 2005 - 09:04 #7
Du har jo allerede noget kode som laver en select hvor antal kan sættes!
Må jeg ikke se din side?

Og vil du kunne vælge køb 4 produkter af den her vare.
Eller her er min indkøbskurv, ret antal til 4.
Avatar billede snigeren Nybegynder
24. september 2005 - 11:44 #8
Siden ligger kun lokalt på min maskine lige nu,.. men jeg kan da godt sende dig et par php filer,.. databasen er nemlig ikke lige sat op på serveren endnu...

Som det ser ud nu kommer der en quantity dropdown box for hvert item man har smidt i indkøbskurven så man kan købe det antal man vil have (det er julemærker, jernbanemærker vi snakker, så det er meget sansynligt nogen vil købe flere).

Problemet er så at nogle af varerne er der mange af andre er meget sjældne og dem er der måske kun én af. Derfor er det ikke så hensigtsmæssigt at man kan vælge at købe 20 hvis der kun er én.

Men den dropdown ting hvor man kan vælge x-antal står lige nu bare til at man kan vælge op til 20 styk... men den skal så gerne have at vide når der f.eks. er mindre end 20 styk tilbage på lageret. Hvis du kan følge mig...

Jeg har ingen anelse om hvor denne kode skal ind henne, men jeg ville selv gætte på indkøbskurven. Man må på en eller anden måde ved den quantity dropdown kunne tjecke antallet i databasens felt for "itemQty" og så lave det antal i dropdown boxen.
Avatar billede jakobdo Ekspert
24. september 2005 - 12:00 #9
Du har fat i den lange ende ja!
Du skal lave tjekket flere steder ja!
Du har dette kode:
<select name="<?php echo $row["itemId"]; ?>" onChange="UpdateQty(this)">
<?php
    for($i = 1; $i <= 20; $i++)
    {
        echo "<option ";
        if($row["qty"] == $i)
        {
            echo " SELECTED ";
        }
        echo ">" . $i . "</option>";
    }
?>
</select>

Hvis du har et felt i din database, som fortæller hvor mange vare du har af hver.
Så er det "bare" at ændre linien:

for($i = 1; $i <= 20; $i++)

til:

for($i = 1; $i <= $row["antalAfVarenPaaLager"]; $i++)
Avatar billede snigeren Nybegynder
24. september 2005 - 13:34 #10
jammen det fungerer jo helt som det skal! jeg siger mange tak for hjælpen,.. smider du ikke lige et svar så får du et par points =)
Avatar billede jakobdo Ekspert
24. september 2005 - 13:35 #11
$var!
Avatar billede snigeren Nybegynder
24. september 2005 - 14:08 #12
haha smarte =)
Avatar billede snigeren Nybegynder
24. september 2005 - 14:09 #13
tænk at det var så let,.. tsk tsk,.. jeg burde virkelig sætte mig noget bedre ind i php. Det er jo super lækkert når man kan det ^ ^
Avatar billede jakobdo Ekspert
24. september 2005 - 14:09 #14
Takker for point!
Avatar billede jakobdo Ekspert
24. september 2005 - 14:10 #15
Php kan rigtig mange ting + lidt til!
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