【问题标题】:Display SQL Data in a list with check-box在带有复选框的列表中显示 SQL 数据
【发布时间】:2011-05-24 23:57:31
【问题描述】:

我不知道该怎么做,但我有一个 SQL 数据库,我可以在其中查询信息。我想在网页上的列表中显示查询结果,并在开头带有一个复选框,以便用户可以选择他们想要修改的信息记录。

我的数据库有超过 20 列,但我只想显示大约 5 列与我搜索的查询相关的数据。目前,我在文本字段中重新填充了数据。但我想更进一步,将数据显示在水平列表中。

基本上是这样的:

客户端在数据库中搜索订单。假设有 2 个不同的订单匹配数据库中的搜索条件。我想从数据库中说 5 列数据,用于显示在页面上的 2 个订单,每个订单旁边都有一个复选框,因此客户可以选择他们想要修改的订单。

我不确定用于在带有复选框的列表中显示 sql 数据的代码。谢谢!

【问题讨论】:

  • 你有没有写过任何代码,然后请粘贴并具体提出问题。

标签: php sql list checkbox


【解决方案1】:

下面的代码演示了如何:

  1. 查询您的数据库
  2. 在表格中显示其输出,每个条目旁边都有复选框
  3. 将选中的复选框提交到页面
  4. 页面重新加载时显示选择

注意一些您可能需要修改的参数,例如数据库名称、用户名、密码、主键名称(“id”)。

# connect to mysql
$db_link = mysql_connect('localhost', 'root', '');
if (!$db_link)
    die('Cannot connect : ' . mysql_error());

# select database
$db_selected = mysql_select_db('test_db', $db_link);
if (!$db_selected)
    die ('Cannot select database : ' . mysql_error());

# execute search query
$sql = 'SELECT * FROM `test_table` LIMIT 20';
$result = mysql_query($sql);

# check result
if (!$result)
    die('Could not successfully run query: ' . mysql_error());

# display returned data
if (mysql_num_rows($result) > 0)
{
    ?>
    <form action="" method="post">
    <table style="border: 1px solid black">
        <?php
            while ($row = mysql_fetch_assoc($result))
            {
                echo '<tr><td>';
                echo '<input type="checkbox" name="selected[]" value="'.$row['id'].'"/>';
                echo '</td>';
                foreach ($row as $key => $value)
                    echo '<td>'.htmlspecialchars($value).'</td>';
                echo '</tr>';
            }
        ?>
    </table>
    <input type="submit"/>
    </form>
    <?php
}
else
    echo '<p>No data</p>';

# free resources
mysql_free_result($result);

# display posted data
echo '<pre>';
print_r($_POST);
echo '</pre>';

?>

【讨论】:

  • 这将显示我的 SQL 中的所有数据,我如何让它只显示与我搜索的内容匹配的内容。就像我搜索时一样: $query = mysql_query("SELECT * FROM PropertyInfo WHERE sitestreet LIKE '$street'");
  • @Jason 您可以将自己的 sql 查询放在 $sql 变量中。示例中提供的内容仅用于演示。
  • @Denis 谢谢,我现在可以使用我自己的 sql 查询了。我只显示大约 5 个字段/列的数据。当我选中我想要的订单旁边的复选框时,我知道如何让表单操作起作用,但是如何从我检查的订单中获取数据以转移到下一页。我正在显示 5 行/列的信息,但是在我选择了我想要的订单并被重定向到一个新页面后,我希望我的数据库中的 40 个列/字段用于显示该订单。我怎样才能做到这一点?
  • @Jason 每个选定行的id 由表单提交到目标页面。目标页面可以通过$_POST['selected'] 访问提交的id 列表,这将是id 的数组。然后,您所要做的就是查询数据库中已提交 id 的行。
  • 好的,所以使用上面的代码我也将 value="'.$row['id'] 更改为 value="'.$row['clientreferrance']。因此,当我执行第一个查询以搜索订单时,假设它显示 1 个订单。我选中该 1 个订单旁边的复选框。在我点击提交查询并进入目标页面后,我查询或传递了什么值?该行的客户参考是否通过?或者上一页的 ID 中究竟存储了什么值?我很难用 ID 查询我的数据库。
【解决方案2】:

基本上是这样的:

$sql = "select primaryKey, field1, field2, ... FROM table"
$result = mysql_query($sql) or die(mysql_error());

echo <<<EOL;
<form ...>
<table>
<tr>
    <th></th>
    <th>Field 1</th>
    <th>Field 2</th>
    ...
</tr>

EOL;

while ($row = mysql_fetch_asssoc($result)) {
    echo <<<EOL
<tr>
    <td><input type="checkbox" name="primaryKey[]" value="{$row['primaryKey']}" /></td>
    <td>{$row['field1']}</td>
    <td>{$row['field2']}</td>
    ...
</tr>

EOL;
}

echo <<<EOL
</table>
<input type="submit" />
</form>

EOL;

如果您的意思是&lt;select&gt;中的列表,那么基本逻辑工作原理相同,只需调整html以根据需要输出&lt;select&gt;和一系列&lt;option&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2014-02-21
    相关资源
    最近更新 更多