2013-03-22 106 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>