2016-08-13 54 views
0

我正在做一個簡單的PHP購物車。基本上是爲了學習目的,我正在嘗試爲我的問題搜索解決方案。但是,我不確定我的問題的關鍵字是什麼。因此,我在這裏發佈。PHP如何使URL像product.php?id = 1

echo "<p>Product A | <a href='product.php?id=a'>Add to Cart</a></p>"; 
echo "<p>Product B | <a href='product.php?id=b'>Add to Cart</a></p>"; 
echo "<p>Product C | <a href='product.php?id=c'>Add to Cart</a></p>"; 

基本上,每個產品都與普通的購物車共享相同的着陸頁 - > product.php。因此,當用戶點擊產品A「添加到購物車」時,它將落在produt.php?id = a,如果產品B,則將是produt.php?id = b。我的問題是如何使url像我提到的那樣?

請參照截圖。

enter image description here

+2

而你確切的問題是? – SuperDJ

+0

我編輯了這個問題。 PLZ檢查 – gosulove

+1

我認爲你的意思是你不完全知道如何從數據庫中獲得ID? – SuperDJ

回答

2

由於id參數是URL,它被稱爲GET參數。您可以使用全局變量$_GET訪問GET參數。

product.php你應該是這樣的:

if(isset($_GET['id'])){ 
    $id = $_GET['id']; 
    if($id=='a'){ 
     // do something 
    } 
    else if($id=='b'){ 
     // do something else 
    } 
} 
+0

請注意,在做任何事情之前最好首先轉義'$ _GET ['id']' – SuperDJ

+0

可能我剛剛編輯過;-)我甚至不確定它是否回答OP的問題... –

+0

我正好把它設置爲「(int)」,所以即使其他人使用了id也不行。其次檢查數據庫中是否存在該ID,以確保人們不會看到空白頁面。除了對int類型轉換,你還可以做更多的事情。 – SuperDJ

1
if(isset($_GET['id'])){ 
    if(is_numeric($_GET['id'])) 
    { 
     $id = $_GET['id']; 
     if($id=='a') 
     { 

     } 
     else if($id=='b') 
     { 
     // do something else 
     }else 
    { 
     echo "product does not exists"; 
    } 

    } 
    else{ 
    echo "product does not exists"; 
    } 



}else 
{ 
    echo "product does not exists";  
} 
+0

對不起,我的問題還不夠清楚。我添加了一個截圖讓我們更容易理解它。截圖正是我想要實現的。 – gosulove

2

嘗試以下操作:

// Show all products 
$q = mysqli_query($con, "SELECT `id` FROM `products`"); 
if(mysqli_num_rows($q) > 0) { // Check if there are results 
    while($row = mysqli_fetch_assoc($q)) { 
     echo '<p>Product A | <a href="product.php?id='.$row['id'].'">Add to Cart</a></p>'; 
    } 
} 

product.php

function productExists($id) { 
    if(!empty($id)) { 
     $q = mysqli_query($con, "SELECT `id` FROM `products` WHERE `id` = $id"); 

     if(mysqli_num_rows($q) > 0) { 
      return true; 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

function productData($id) { 
    if(!empty($id)) { 
     $q = mysqli_query($con, "SELECT `id`, `product_name`, `product_price`, `product_quantity`, `product_image` FROM `products` WHERE `id` = $id"); 

     if(mysqli_num_rows($q) > 0) { 
      $data = array(); // Store data 
      while($row = mysqli_fetch_assoc($q)) { 
       $data[] = $row; 
      } 

      if(!empty($data)) { // Make sure all data is gathered before proceeding 
       return $data; 
      } else { 
       return false; 
      } 
     } else { 
      return false; 
     } 
    } else { 
     return false; 
    } 
} 

if(!empty($_GET['id'])) { // empty does the same as isset() but also checks if the value is not empty 
    $id = (int)mysqli_real_escape_string($con, $_GET['id']); 

    if(productExists($id)) { 
     $data = productData($id); 

     echo 'Product: '.$data['product_name']; // Etc. 
    } else { 
     echo 'Product doesn\'t exists'; 
    } 
} 

當調整一些的T他的代碼你也可以得到其他列