【问题标题】:How to auto-populate info from a previously-visited page如何从以前访问过的页面自动填充信息
【发布时间】:2012-03-25 20:05:57
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你有什么反对只在 url 中传递产品 ID 的?
  • 我这样做完全没有任何问题,尽管每个产品 url 都是通过 MarketPress Lite 插件动态创建的。所以也许一个更具体的问题可能是“我如何动态创建该产品 url ID?”在插件中,他们预先将链接定义为变量。例如,$link = 或类似的东西。
  • 我可以在 url 引用中使用 php 以某种方式动态调用该 url 吗?
  • 您可能想阅读您正在使用的软件的文档。他们在演示中解决了这个问题,所以有一种方法:wp-ecommerce.org 另请阅读 en.wikipedia.org/wiki/Representational_state_transfer 以获得通常更好的创建 URL 的方法。
  • 不知道具体的软件,只能自己回答。

标签: php e-commerce


【解决方案1】:

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

使用关联的 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 种方法可以实现相同的目标,但我认为上面的示例应该足以让您朝着正确的方向开始。

【讨论】:

  • 迈克,这听起来可以接受。那么你能举个例子更具体吗?我理解这个想法,但不知道如何开始。我不需要一个确切的答案,但你可能会想到任何简单的例子。另外,我不能通过在 url 中插入 PHP 引用来简单地动态调用产品 url 吗?比这更复杂吗?
  • 添加了一个基本示例,说明如何访问驻留在数据库中的所述数据。
  • 迈克,太好了。一个问题....我的产品作为帖子存储在 wordpress 中。我不知道对象ID是什么?是帖子ID还是标题?这些对你的例子有用吗?
  • 您是否在为 wordpress 使用 ecomm 插件?
  • 是的,我是。这就是我目前所处的位置。在插件文件中,我可以将 ?post_id 添加到 url 的末尾,但它根本没有调用 id。我可能做这一切都错了。如果您将鼠标悬停在我的产品布局上的图片上,您可以看到网址 dev.welcome2solutions.com/magnetfactory/store/products/category/…
猜你喜欢
  • 2015-06-25
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2017-02-17
相关资源
最近更新 更多