Thanks to Jason and ³Sp² for the tip on ³print_r². After all the books Iıve read, and 
all the 
scrounging through the manual, Iım amazed I missed that one. Itıs VERY helpful!

Thanks for your comments Dan. Iıve actually spent quite some time trying to rework the 
cart because 
I agree that the way itıs written now is strange. However, I hit a wall trying to 
rework it, and 
decided to go back to the same wall Iıve been banging my head against all week.

I think you understand most of the process with one clarification. When the user 
unchecks a checkbox 
to remove an article from the cart, they click a ³save² button (which triggers the 
if($save) part of 
the script). The ³checkout² button triggers a separate process thatıs not really 
involved here. The 
show_cart page is only showing the articles added to the cart and refreshing the cart 
when articles 
are removed ­ and of course setting the session variables for the cart.

Iıve included the information you requested at the bottom of this message, showing the 
contents of 
the $cart and $checkbox arrays at various stages. The relevant code from the show_cart 
page is this:

     if($new)  //new item selected
  {
    if(!session_is_registered("cart"))
    {
      $cart = array();
      session_register("cart");
      $article_qty = 0;
      session_register("article_qty");
      $total_words = 0;      
      session_register("total_words");
    }
   if($cart[$new])
         $cart[$new]++;
    else 
      $cart[$new] = "1";

   }
   
  if($save)  //save button clicked
  {
   foreach($cart as $artID => $value)
   {
      if(!isset($yes))
        unset($cart[$artID]);
      else 
        $cart[$artID] = $$artID;
    }
  }

I know the ³foreach² part under if($save) is all wrong. It seems to me that it should 
be possible to 
write some sort of loop that says ³if the artID (key) for an element in the cart array 
doesnıt match 
an artID in the checkbox array, then unset the element with that artID from the cart 
array.² OR 
³only display those elements in the cart array for which an element exists in the 
checkbox array 
that has the same key.²

Iıve tried a bunch of different ways to do this with no success. Iım not even sure you 
can work with 
two arrays in this way in PHP. Couldnıt you do something like

if ($checkbox[$artID] == $cart[$artID]))
     { then those are the elements that make up the array $cart }

I havenıt been able to figure this part out. Aargh! Perhaps something is patently 
obvious in this 
code to PHPers. If so, I truly welcome your suggestions, and Dan I really appreciate 
your looking at 
this so closely. 

Exasperated, Vicki

PS when I use print_r to display the contents of the arrays, I see a "1" after the 
array contents. I 
have no idea what that refers to. Any ideas?
___________________________________________________
Here's the code you requested. This is from the View Source window so hopefully you 
can see what's 
going on more clearly.  The first sample is when two new articles have been added to 
the cart. I've 
included the array info and the relevant html.


<pre> Cart Array at top of show_cart page: Array
(
    [3] => 1
    [1] => 1
)
1</pre>
<pre> Checkbox Array at top of show_cart page: 1</pre>
<pre> Cart Array after "if($save)": Array
(
    [3] => 1
    [1] => 2
)
1</pre>
<pre> Checkbox Array after "if($save)": 1</pre>
//
//
//HTML header info deleted here . . .
//
// 
   <p align="center"><strong>Welcome, User!</strong></p>
      <center><a href="show_cat.php?catID=3"><img src="images/continue-shopping.gif" 
       alt="Continue Shopping" border=0 height = 25 width = 160></a></center>
      <center><a href="http://127.0.0.1/ifiosx/checkout.php";>
      <img src="images/go-to-checkout.gif" alt="Go To Checkout" 
         border=0 height = 25 width = 160></a></center></td>   
    <td class="maincontent" valign="top">
      <img src="images/misc/shim.gif" width="160" height="1">
      <p><span class="mediumheading"></span></p>
      <table border = 0 width = 100% cellspacing = 0>
        <form action = show_cart.php method = post>
         <tr>
            <th bgcolor="#cccccc">&nbsp;</th>
            <th align=left bgcolor="#cccccc">Article</th>
            <th bgcolor="#cccccc">Word Count</th></tr>
         <tr><td width=5% align = left>
            <input type = checkbox name = "checkbox[3]" value = yes checked></td>
            <td align = left><a href = "show_article.php?artID=3">Q & A</a></td>
            <td align = center>235</td>
         <tr><td width=5% align = left bgcolor="#f4f4ea">
            <input type = checkbox name = "checkbox[1]" value = yes checked></td>
            <td align = left><a href = "show_article.php?artID=1">The Photos We 
Keep</a></td>
            <td align = center>300</td>
         <tr>
               <th bgcolor="#cccccc">&nbsp;</th>
            <th align=left bgcolor="#cccccc">Number of Articles = 2</th>
               <th align = center bgcolor="#cccccc">535</th>
         </tr>
         <tr>
            <td colspan=3 align = center>
               <br>To remove an article from your order, <br>
               uncheck the box to the left of the title 
               and click on the "Save Changes" button.
            <br><br>
              <input type = hidden name = save value = true>
           <input type = image src = "images/save-changes.gif" border = 0
           alt = "Save Changes"></td></tr></form></table> 
</table>
</body>
</html>
___________________________________
The arrays after "save" button has been clicked (but checkboxes left checked). The 
keys are the 
correct artID for the articles chosen. 

<pre> Cart Array at top of show_cart page: Array
(
    [1] => 1
    [3] => 1
)
1</pre>

<pre> Checkbox Array at top of show_cart page: Array
(
    [1] => yes
    [3] => yes
)
1</pre>

<pre> Cart Array after "if($save)": Array
(
    [1] => 
    [3] => 
)
1</pre>

<pre> Checkbox Array after "if($save)": Array
(
    [1] => yes
    [3] => yes
)
1</pre>
______________________________________
The arrays after the checkbox for the article with artID==3 has been unchecked. This 
results in the 
cart being emptied entirely and the result "There are no items in your cart."

<pre> Cart Array at top of show_cart page: Array
(
    [1] => 
    [3] => 
)
1</pre>

<pre> Checkbox Array at top of show_cart page: Array
(
    [1] => yes
)
1</pre>

<pre> Cart Array after "if($save)": Array
(
)
1</pre>

<pre> Checkbox Array after "if($save)": Array
(
    [1] => yes
)
1</pre>

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to