【问题标题】:Filling multiple html fields with a single DB access使用单个数据库访问填充多个 html 字段
【发布时间】:2011-12-29 12:21:42
【问题描述】:

这是一个很长的问题,但不是太复杂,所以请多多包涵。

我正在建立一个 WordPress 网站。
其中一个页面应该显示商店列表。
我应该在 5 个字段中填充我从数据库中获取的商店。

现在我正在这样做(在页面模板中):

有一个 javascript ajax 请求在加载 html 后运行,并要求服务器端的 PHP 代码从数据库中获取商店。
当它们返回时,javascript 然后用这些商店填充 html 字段。

现在,我知道这是错误的表现。
在将 html 发送到客户端之前,我应该填充服务器端的字段。

所以我的问题是:
访问数据库 5 次(对于 5 个商店和字段)没有任何意义。
我只想访问一次,获取所有 5 家商店,然后填充字段。
但是如何在 html 的 5 个不同位置使用从数据库返回的数组?

在此示例中,我将所有商店都放在一个字段中。我如何将它们传递给其他领域?

<tr><td><input id="shop1" type="textbox" value="<?php global $wpdb; echo $wpdb->get_results("SELECT * FROM shops"); ?>"></td></tr>
<tr><td><input id="shop2" type="textbox" value=""></td></tr>
<tr><td><input id="shop3" type="textbox" value=""></td></tr>
<tr><td><input id="shop4" type="textbox" value=""></td></tr>
<tr><td><input id="shop5" type="textbox" value=""></td></tr>

【问题讨论】:

  • 我不太确定我是否遇到了问题:在您的示例中,5 家商店彼此相邻,因此您可以使用一个简单的循环。这是一个真实世界的例子吗? IE。这 5 家商店总是挨着吗?
  • 嗯,这是一个非常简单的例子。在我的代码的某些部分,它们彼此相邻,所以我想我可以使用循环,但在某些部分它们不是。所以我正在寻找一种在非相邻字段之间传递数据的方法。

标签: php html ajax wordpress


【解决方案1】:

试试这个

<?php 
global $wpdb; 
$results =  $wpdb->get_results("SELECT * FROM shops");
$i = 1;    
foreach ( $results as $shop ) 
{
  echo '<tr><td><input id="shop'.$i.
       '" type="textbox" value="">'.$shop->name_of_field_you_need.'</td></tr>';
      $i++;
}
?>

【讨论】:

  • 所以,我打破了 HTML 代码(应该在你的代码之前)并编写 PHP 代码(你的代码),它创建了更多的 HTML 代码,然后我打破了 PHP继续使用 HTML 的代码(应该在您的代码之后)?
  • 这回答了我需要的部分内容,但那部分写得很好,所以谢谢+1。
【解决方案2】:

如果商店之间没有 HTML:

<?php
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM shops");
?>

//stuff

<?php foreach( $results as $result ): ?>
<tr><td><input id="shop<?php echo $result -> shop_id; ?>" type="textbox" value="<?php echo $result -> fieldName; ?>"></td></tr>
<?php endforeach; ?>

如果有的话,像这样:

<?php
global $wpdb;
$results = $wpdb->get_results("SELECT * FROM shops");
?>

<tr><td><input id="shop1" type="textbox" value="<?php echo $results[0] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop2" type="textbox" value="<?php echo $results[1] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop3" type="textbox" value="<?php echo $results[2] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop4" type="textbox" value="<?php echo $results[3] -> fieldName; ?>"></td></tr>

//random stuff here

<tr><td><input id="shop5" type="textbox" value="<?php echo $results[4] -> fieldName; ?>"></td></tr>

【讨论】:

  • 所以 PHP 代码知道不同代码部分中的变量,就好像两个代码部分是连续的(参考您的第一个建议)?
  • 我更改了建议顺序,因为我意识到这些商店可能会紧随其后。是的,他们知道变量,除非有什么东西明确地删除了它们之间的变量。请注意,我只是在这里猜测mysql结果结构..根据需要修改。
  • 其实这两种情况我都需要。做得好!谢谢!
猜你喜欢
  • 2010-11-16
  • 2023-03-11
  • 2020-05-06
  • 2023-03-16
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多