2013-03-22 112 views
0

我正在创建一个在线商店网站,正在工作的篮子正在工作。我试图添加一个功能,当用户点击添加按钮确认该项目确实已添加到购物篮时,将回显消息。PHP回声消息

我创建了一个简单的if语句,我相信应该很好地处理这个事情,但没有任何事情发生。没有消息被回应。

代码:

if (isset($_GET['add'])){ 
    $quantity = mysql_query('SELECT product_id, product_qua FROM products WHERE product_id='.$_GET['add']); 
    while($quantity_row = mysql_fetch_assoc($quantity)){ 
     if($quantity_row['product_qua'] !=$_SESSION['cart_'.$_GET['add']]){ 
      $_SESSION['cart_'.$_GET['add']]+='1'; 
     } 
    } 
} 

if (isset($_GET['add'])){ 
    $basketMessage = "Item Sucesfully Added To Your Basket"; 
    echo $basketMessage; 
} 

任何建议...?

解答:

行忘记上述代码........

的洛夫代码是代码形式,其中产品列,然后连接一个文件来cart.php代码的切片以上:

代码:

while($get_row = mysql_fetch_assoc($get)){ 
    ?> 
     <table id='display'> 
     <tr><td><?php echo "<img src=$get_row[$product_image] class='grow'>" ?></td></tr> 

     <tr> 
      <th></th> 
      <th><strong>Avalible</strong></th> 
      <th><strong>Price</strong></th> 
      <th><strong>Description</strong></th> 
     </tr> 

     <tr> 
     <td width='290px'><?php echo "$get_row[$product_name]" ?></td> 
     <td width='290px'><?php echo "$get_row[$product_qua]" ?></td> 
     <td width='290px'><?php echo "&pound $get_row[$product_price]" ?></td> 
     <td width='290px'><?php echo "$get_row[$product_des]" ?></td> 

     </tr> 
     <tr> 
     <td><?php echo '<a href="cart.php?add='.$get_row['product_id'].'" onclick="return basketMessage()">Add</a>';?></td> 
     </tr> 
     </table> 

    <?php 
     } 
    } 

    ?> 

<script>  
function basketMessage(){ 
     var confirmed = confirm("Add this item to Basket ?"); 
     return confirmed; 
} 
</script> 

OK,你都可以看到形成的代码,我循环的产品数据库,并列出与ADD按钮.....ň分配一些项目嗷嗷我加了一些JavaScript来此按钮可以告知用户,如果这是他们想加入到他们的购物篮

+3

PHP在网页发送给用户时完成执行。 Javascript在用户收到网页时开始执行。因此,生成网页后发生的任何事情(客户端脚本)都需要使用Javascript。 – Patashu 2013-03-22 00:33:25

+1

您需要在使用数据库查询之前清理GET变量。不这样做会给你的网上商店带来不好的问题。 – 2013-03-22 00:52:20

+0

...要做到这一点,你应该看看'mysql_real_escape_string()',或者更好的是[PDO](http://php.net/pdo)。 – rid 2013-03-22 00:55:12

回答

1

为@patashu说,这是不可能单独使用PHP。您应该添加处理通过AJAX将项目添加到您的购物车的JavaScript,然后侦听您已回显的响应,并且如果成功,则显示成功消息。

这可能是一个起点:

HTML:

<button class="mybutton">add to cart</button> 

的javascript:就是听你的Ajax调用

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('.mybutton').click(function(){ 
     $.ajax({ 
     url:"yourscript.php", 
     data: {stuff: 'your cart data', productid: 134} 
     success: function(data){ 
      alert("your success message'); 
     } 
     }); 
    }); 

    }); 
    </script> 

PHP函数:

//does stuff 
$basketMessage = "Item Sucesfully Added To Your Basket"; 
echo json_encode($basketMessage); 

obviou狡猾,这是不完整的......这实际上只是一个起点/一个你应该做什么的一般想法。

0

首先的项目,你在这行错误:

$quantity = mysql_query('SELECT product_id, product_qua FROM products WHERE product_id='.$_GET['add']); 

如果必须

$add = $_GET['add']; 
$quantity = mysql_query("SELECT product_id, product_qua FROM products WHERE product_id='$add'"); 

$quantity = mysql_query("SELECT product_id, product_qua FROM products WHERE product_id='".$_GET['add']."'"); 

而且你不必使用mysql_ *更多的原因是deprecat编辑。 您可以使用http://php.net/manual/en/book.mysqli.phphttp://php.net/manual/en/book.pdo.php

+0

10他的问题呢? – Philipp 2013-03-22 00:47:45

+0

Thx为您的答案但我不能明白为什么我的初步查询将是错误的,它工作正常.......? – Tomazi 2013-03-22 00:53:34

-1

你为什么要分两个阶段来做?试试这个:

if (isset($_GET['add'])){ 
$quantity = mysql_query('SELECT product_id, product_qua FROM products WHERE product_id='.$_GET['add']); 
while($quantity_row = mysql_fetch_assoc($quantity)){ 
       if($quantity_row['product_qua'] !=$_SESSION['cart_'.$_GET['add']]){ 
        $_SESSION['cart_'.$_GET['add']]+='1'; 
    } 
} 
$basketMessage = "Item Sucesfully Added To Your Basket"; 
echo $basketMessage; 
} 
+0

Ur正确!我认为错误是Memolition所说的。 – 2013-03-22 00:53:41

+0

我试过这没有工作,为什么我试着做这两部分 – Tomazi 2013-03-22 00:56:01

1

这是不可能在PHP不重新发送整个页面。您可以使用JavaScript对某些按钮点击事件做出反应。

与jQuery的组合,这会导致这样的事情

<div id="messagefield"></div> 
<button id="buttonid">click me!</button> 
<script> 
    $("#buttonid").click(function() { 
     $("#messagefield").html("The button was clicked"); 
    }); 
</script>