怎么,大家觉得分少吗?可以再加呀!我是一个初学者,帮一下忙吧,我修改好了大部分,就差删除不会了<?
session_start();
?>
<?
// 记住在代码片段1中, 决定是不是要增加? 
// 让我们在这里重复它if ($basket!="")

// 在这里,项目将要加到篮中。让我们检查一下是否存在一个注册过的篮子 
if (session_is_registered("ses_basket_items"))

// 存在一个注册过的篮子,将代码片段4放在这里。 
// 它增加项目到注册过的篮子中,检查重复记录,更新它们或在数组的最后增加项目
$basket_position_counter = 0;  //篮子中的位置 
$double = 0;                   //双重入口标志设为NO 
if ($ses_basket_items > 0)

// 检查是否篮子包含的项目中有双重入口 
foreach ($ses_basket_name as $basket_item)

// 遍历数组所包含的名字,检查是否与从href所传来的相配匹 
if ($basket_item==$basket)

// 如果在篮子中已经有了一个项目,将flag设为1 

$double=1;
print ("<script>alert('这个项目已经存在.');</script>");
// 记住项目的位置,将进行更新 
$basket_position=$basket_position_counter; 

$basket_position_counter++; //增加篮子中的实际位置 

}  // 更新篮子 
if ($double==1)

// 如果项目在你的篮子中已经存在则更新在$basket_position处理的数量和位置 
$oldamount=$ses_basket_amount[$basket_position];
//$ses_basket_amount[$basket_position]++; 
$amount=$ses_basket_amount[$basket_position]; 
$oldprice=$ses_basket_price[$basket_position]; 
//更新价格 
$newprice=($oldprice/$oldamount)*$amount; 
$ses_basket_price[$basket_position]=$newprice; 

}
else

// 如果它不在你的篮子中,则在数组末尾增加新的项目 
$ses_basket_name[]=$basket; 
$ses_basket_amount[]=1; 
$ses_basket_price[]=$price; 
$ses_basket_id[]=$id; 
$ses_basket_items++; 
}  } 
else

// 不存在注册过的篮子,将代码片段3放在这里。它创建一个新的篮子,并且 
// 通过session注册它。 
$ses_basket_items=1;  // 填充4个数组的第0个位置,使用从href链接传过来的值 
// 链接是在‘给你的页面增加链接’部分所讲的 
$ses_basket_name[0] = $basket; 
$ses_basket_amount[0]= 1; 
$ses_basket_price[0] = $price; 
$ses_basket_id[0] = $id;  // 在session中注册新的篮子 

session_register("ses_basket_items"); 
session_register("ses_basket_name"); 
session_register("ses_basket_amount"); 
session_register("ses_basket_price"); 
session_register("ses_basket_id");


// 剩下的都是代码片段2。如果篮子中有物品时用于显示它们。 
// 加到这里。
if ($ses_basket_items > 0)

// 如果在篮子中有项目 
printf("<table border=1 width=400>");
printf("<form action='gwc.php' method='post'>");
printf("<tr>");
printf("<td>数量</td>");
printf("<td>名称</td>");
printf("<td>价钱</td>");
printf("<td>删除</td>");
printf("</tr>");
$price_count = 0; 
for ($basket_counter=0;$basket_counter<$ses_basket_items;$basket_counter++)

   // 遍历篮子,打印出每一行 
   // 你当然可以用格表来格式化显示 
   // 需要通过格式化来显示价格的分值。如果没有格式化,则.00是不会显示出来的 
$price=sprintf("%01.2f",$ses_basket_price[$basket_counter]); 
$amount=$ses_basket_amount[$basket_counter]; 
$name=$ses_basket_name[$basket_counter]; 
printf("<tr><td><input type=text name=amount[$basket_counter] value=$ses_basket_amount[$basket_counter] size=4></td><td>$ses_basket_name[$basket_counter]</td><td>$price</td><td><a href=del.php?name=$ses_basket_name[$basket_counter]>册除</a></td></tr>");

$price_count = $price_count + $price;
printf("<input type=hidden name=name[$basket_counter] value=$ses_basket_name[$basket_counter]>");

}
printf("</table>");
printf("<input type='submit' value='更新数量'>");

printf("</form>");
printf("%01.2f",$price_count);

else

// 在篮子中没有商品 
// 设置项目计数为0,且清除所有的变量 
// 这是一个清除处理。它防止人们得到旧的数组 
$ses_basket_items=0; 
unset($ses_basket_name); 
unset($ses_basket_amount); 
unset($ses_basket_price); 
unset($ses_basket_id); 

?> 
<a href="del_cat.php">清空</a> 

解决方案 »

  1.   

    <?php
    session_start();
    if(!session_is_registered('stationery')) session_register('stationery');//清空
    if ($action=="clear")

    session_unregister('stationery');
    ?>
    <script>
    window.close()
    </script>
    <?
    }//删除
    if ($action=="delete" && isset($no))
    {
    $stationery[$no]['id']="null";
    }if (isset($book_id))
    {
    $i=count($stationery);
    if($i==0)
    {
    $stationery[$i]['id']=$book_id;
    $stationery[$i]['name']=$book_name;
    $stationery[$i]['price']=$price;
    }
    else
    {
    for($j=0;$j<$i;$j++)
    {
    if($stationery[$j]['id']==$book_id)
    {
    break;
    }
    else
    {
    if ($j==($i-1))
    {
    $stationery[$i]['id']=$book_id; //如没有记录,给数组增添一个元素
    $stationery[$i]['name']=$book_name;
    $stationery[$i]['price']=$price;
    }
    }
    }
    }
    reset($stationery);
    }
    ?><body bgcolor="#Efefef">
    <table width="98%" border="1" align="center" cellpadding="0" cellspacing="0">
    <tr bgcolor="#CCCCCC" align="center" height=22> 
    <td width=30%>编号</td>
    <td width=30%>名称</td>
    <td width=30%>价格</td>
    <td width=10%>&nbsp;</td>
    </tr>
    <?
    for ($a=0;$a<count($stationery);$a++)
    {
    $t_id=$stationery[$a]['id'];
    if ($t_id!="null")
    {
    $t_name=$stationery[$a]['name'];
    $t_price=$stationery[$a]['price'];
    ?>
    <tr align="center" valign="middle" height=22> 
    <td><?=$t_id?></td>
    <td><?=$t_name?></td>
    <td><?=$t_price?></td>
    <td><a href="<?=$PHP_SELF?>?action=delete&no=<?=$a?>">删除</a></td>
    </tr>
    <?
    }
    }
    ?>
    </table><BR><a href="<?=$PHP_SELF?>?action=clear">清空购物篮</a>
      

  2.   

    stsit(今天开始挣分...) 你这个有修改吗?如何使用呢?能根我好好说一下吗?
    对不起,我很笨!
      

  3.   

    说一下思路:
    数组:
    第一个记录:
    $stationery[0]['id']
    $stationery[0]['name']
    ...第二个记录:
    $stationery[1]['id']
    $stationery[1]['name']
    ...第三个记录:
    $stationery[2]['id']
    $stationery[2]['name']
    ...修改功能:
    提取 $stationery[$a],更改数据后再写回$stationery[$a]删除功能:
    提取 $stationery[$a],令提取 $stationery[$a]['id'] = ""显示(或保存到数据库)时,检查$stationery[$a]['id']是否为空,如是就跳过(实际在session中还有此记录,但不会有影响)
      

  4.   

    stsit(今天开始挣分...) 好了,分都给你吧!谢谢你啊。我不搞了,没有想到php的这个功能比asp差呀,
    但!主要还是因为我笨