hi I'm hoping that someone here can help me I'm totally new to object oriented
stuff and might be trying to do this totally ass backwards.
Having said that this also involves multidimensional arrays and I'm not to bright with
these either . :)
I have looked on the web and FAQ's and manuals for help but havenot found anything
that quite
covers this in this ..so I hope It's not so obvious that noone else has ever asked
this.
Thanks in advance.
What I am trying to make is just a small shopping type application. My idea is
for an Item code , an option for the item and the number wanted to be sent to a Cart
Class
and stored as an multi dimensional array that has structure like this :
($productid, ($option => $qty))
so that $option is a string index of the "second" array
or visually like this I think :
| Code1 || Code 2 ||
| Option1 | Option2 || Option1 | Option2 | Option3 ||
| QTY | QTY || QTY | QTY | QTY ||
What I am having problems with is setting the qty value correctly and updating it
Supposedly if you just keep hitting the update button then the qty should keep
incrementing
but on the first run (for each code entered) it is zeroed ! and not 1 as is on the
form .. after the first time all qty
for options are set correctly, but I cannot figure out how to 'reach' into the array
and update
or even overwrite the values I am setting (overwriting is what I was expecting for the
code below)
Thanks again
Jamie Smith
CODE follows
<?//This is self contained code just to show what I'm trying.
/* Start up the sessions,useing one array called MYSESSION to store all persistent
variables.*/
/* In this example just my Cart info is stored but other customer preferences can be
carried here later */
session_start();
session_register("MYSESSION");
if (!isset($MYSESSION)) { /* initialize the MYSESSION variable */
$MYSESSION = array();
}
/* initialize the CART objct if necessary */
if (! isset($MYSESSION["cart"])) {
$MYSESSION["cart"] = new Cart;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
switch ($action) {
case "clearall" :/*resets the array to null*/
$MYSESSION["cart"]->init();
header("Location: $HTTP_REFERER");
break;
case "add" :
$MYSESSION["cart"]->add($item_code, $form_qty, $option);
default:
?>
<html>
<body bgcolor="#FFFFFF">
<table align = "Center" width="300"><tr><td>
<form name="form" method="POST" >
CODE : <input type="text" name="item_code" value="ABC"><br>
Option:
<input type="radio" name="option" value="A2" CHECKED>A2
<input type="radio" name="option" value="A3"> A3
<input type="radio" name="option" value="A4"> A4<br>
Qty to add : <input type="text" name="form_qty" value="1">
<input type="hidden" name="action" value="add">
<input type="submit" name="Submit" value="Update">
</form>
<p><p><p>
<?
echo"Cart Contents :<br>\n<div align=\"right\"><a
href=\"$PHP_SELF?action=clearall\">Clear All</a></div>";
$itemarray = $MYSESSION["cart"]->items;
while (list ($code) = each ($itemarray)){
echo "<hr>\nCode : $code<br>\n<blockquote>\n";
while(list($option,$qty) = each ($itemarray["$code"])){
echo "Option = $option | QTY = $qty<br>\n";
}
echo"</blockquote>";
}
?></td></tr></table>
</body>
</html>
<?
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function setdefault(&$var, $default="")
{
/* if $var is undefined, set it to $default. otherwise leave it alone */
if (! isset($var)) {
$var = $default;
}
}
class Cart {
var $items; /* array of items ($productid, ($option => $qty))*/
function Cart() {
/* object constructor */
$this->init();
}
function init() {
/* this function is called to initialize (and reset) the cart */
$this->items = array();
}
function add(&$productid, $qty, $option) {
/* add an item to the shopping cart and update the total price */
if (isset($productid)) {
if(!($option))$option=0;/*not all products will have multiple options and may be
passed as $productid and $qty*/
$productinfoarray = array ($option => 0);
setdefault($this->items[$productid],$productinfoarray);
/* echo "Submitted : ".$productid." ".$option." ".$qty; */
$this->items[$productid] += array($option => $qty);
}
}
}
?>