如何从以前访问过的页面自动填充信息

时间:2012-03-25 20:05:57

标签: php e-commerce

我正在为我的一个客户开发一个不涉及任何类型的结账功能的电子商务解决方案;但相反,用户可以选择提交请求报价的表单。用户还可以选择单击产品显示,然后查看有关该产品的更详细说明。

以下是一个示例页面,其中显示了每种产品的这些选项:
    http://dev.welcome2solutions.com/magnetfactory/store/products/category/awareness/

虽然目前尚未启用,但我创建了一个自定义页面,供用户点击“查看产品详细信息”时 - 它会显示一个简单的图像以及有关该产品的一些详细信息。我需要自定义页面以某种方式填充用户选择的产品的产品详细信息。

在产品详细信息页面上调用产品详细信息以便自动填充的最佳方法是什么?我是否可以在不通过表单提交“获取”信息并将其发布到新页面的情况下执行此操作?

1 个答案:

答案 0 :(得分:2)

  

我需要自定义页面以某种方式填充用户选择的产品的产品详细信息

使用关联的productId构建产品的URL是完全可以接受的,这样您就可以在详细信息页面上调用$ _GET ['id']。在详细信息页面上对productId进行本地化后,您可以向产品数据库发出查询,以通过productId提取相关的产品数据。显然比尝试通过URL传递所有产品数据更好的解决方案。

示例:

// Results page
//  You can build links similar to the following
//  This assumes you have a product object from which you can get id and name
<a href="/product/detail/<?php echo $product->getId() ?>"><?php echo $product->getName() ?></a>

// Detail page

// Localize id
$productId = $_REQUEST['id']; // I prefer to use $_REQUEST vs $_GET

// Create our database object (dbo)
$dsn = 'mysql:dbname=mydbname;host=127.0.0.1';
$user = 'myusername';
$pass = 'mypass';

try {
    $dbo = new PDO($dsn, $user, $pass);
} catch (Exception $e) {
    echo 'Unable to connect: ' . $e->getMessage();
}

// Construct your read query
$sql = "SELECT * FROM my_product_table WHERE id = :productId";

// Prepare query (avoids nasty things like sql injection by properly escaping 
//  passed in parameters (:productId)
$stmt = $dbo->prepare($sql);

// Bind your local variable to the sql statement
$stmt->bindValue(':productId', $productId, PDO::PARAM_INT);

// Execute query
$stmt->execute();

// Localize query results (PDO::FETCH_OBJ will turn $product into a stdObject)
$product = $stmt->fetch(PDO::FETCH_OBJECT);

// Now you have access to the product data as it is stored in your database
var_dump($product->name);
var_dump($product->category); 
....

我建议你阅读PHP PDO(上面的内容)来进行数据库访问。有100种方法可以达到同样的目标,但我认为上面的例子足以让你开始朝着正确的方向前进。