PHP如何使URL像product.php?id = 1

时间:2016-08-13 10:19:29

标签: php

我正在做一个简单的php购物车。基本上是出于学习目的,我正在尝试为我的问题搜索解决方案。但是,我不确定我的问题的关键字是什么。因此,我在这里发布。

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>";

基本上,每个产品都共享相同的目标网页 - &gt; product.php就像普通的购物车一样。因此,当用户点击产品A“添加到购物车”时,它将登陆produt.php?id = a,如果是产品B,那么将是produt.php?id = b。我的问题是如何像我提到的那样制作网址?

请参阅截图。

enter image description here

3 个答案:

答案 0 :(得分:2)

由于id参数位于网址中,因此称为GET参数。您可以使用全局变量$_GET访问GET参数。

product.php中你应该有:

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

答案 1 :(得分: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';
    }
}

调整部分代码时,您还可以获得其他列

答案 2 :(得分: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";     
}