Php 输入值并选择返回数据

Php 输入值并选择返回数据,php,html,Php,Html,我正在尝试创建一个网页,用户可以在其中提交他们知道的信息,并选择他们想要返回的信息。例如,如果他们知道提交的ID号,他们可以输入ID号并要求返回的值为ID号和产品名称 正在检索的信息存储在MySQL数据库中,html页面由选择菜单、文本框和复选框组成(这样用户可以选择名称或输入其他信息,然后使用复选框选择他们想要返回的其他信息) 以下是相关的html: <table><tr> <form name="input" method="post" action="next

我正在尝试创建一个网页,用户可以在其中提交他们知道的信息,并选择他们想要返回的信息。例如,如果他们知道提交的ID号,他们可以输入ID号并要求返回的值为ID号和产品名称

正在检索的信息存储在MySQL数据库中,html页面由选择菜单、文本框和复选框组成(这样用户可以选择名称或输入其他信息,然后使用复选框选择他们想要返回的其他信息)

以下是相关的html:

<table><tr>
<form name="input" method="post" action="next.php">
<td width="120">Flowcell ID:<br />
<select name = "Flowcell_ID">
<option disabled="disabled" selected="selected">
Select...
</option>
<?php
$link = mysqli_connect("localhost","user","pass","db");
$query = "SELECT DISTINCT ID FROM table";
$result = mysqli_query($link, $query);
while ($row = mysqli_fetch_array($result)){
$id = $row['ID'];
echo "<option value=\"$id\">$id</option>";
}
mysqli_close($link);
?>
</select></td>
</tr><tr>
<td width="120">Name:<input type="text" name="Name" /></td>
</tr><tr>
<td width="120">Date:<input type="text" name="Date" /></td>
</tr><tr>
<td width="120">Group:<input type="text" name="Group" /></td>
</tr><tr>
<td width="120"><input type="checkbox" name="options[]" value="ID">ID</input></td>
<td width="120"><input type="checkbox" name="options[]" value="Name">Name</input></td>
<td width="120"><input type="checkbox" name="options[]" value="Date">Date</input></td>
<td width="120"><input type="checkbox" name="options[]" value="Group">Group</input></td>
</tr></table>
如何生成一个如下所示的MySQL查询

SELECT [checked checkboxes] FROM table WHERE [information field] = [user-entered information]
?


谢谢

您可以增量生成查询:

$fields = array(
   'ID'   => 'id',
   'Name' => 'name',
   'Date' => 'date',
   'Group' => 'group',
);

$query = 'SELECT';  // Optional fields to be displayed may go here
$comma = ' ';       // and if they do, start with $comma = ', ';

$where = array();

foreach($fields as $post => $mysql)
{
    // here we have $post equal to 'ID', our POST field, and
    // $mysql equal to, say, 'Id' -- the MySQL field name.
    // Check whether options['ID'] is set. If so, we must get
    // the _POST[ID] field and check its contents against "Id" field in DB.
    if (in_array($post, $_POST['options']))
    {
        $query .= "$comma$mysql";
        $comma = ', ';
        // Add WHERE condition
        $where[] = "$mysql = '" . mysql_real_escape_string($_POST[$post]) . "'";
    }
}
// $comma, the separator between option fields, also doubles up as a check
// to see whether we have conditions.
// another possibility would be, "if (empty($where))"
if (' ' == $comma)
   die("You must select at least one checkbox!");

$query .= ' FROM table WHERE ';
// Build WHERE condition
$query .= '(' . implode(' AND ', $where).')';

// Other conditions may go here (e.g. " AND record_valid = 1 ")

$query .= ';';

出于某种原因,它在
For
语句中不接受
作为$post=>$mysql
。是否可以改为foreach?好的,很抱歉评论两次。它使用
foreach
语句(我很确定只有他们使用
$x as$y=>$z
),并且它没有返回任何错误。然而,即使我选中了复选框,它也会死掉,并且在我注释掉该部分时忽略它们。如果(''=$逗号)的实际作用是什么?它是如何工作的?谢谢@user1504538
if(''=$comma)
如果未选择任何选项,将返回true。请注意,
$comma
以循环前的空格开始,如果字段数组中的一个键具有与之关联的值(即选中),则将其设置为“
”,“
”。因此,该条件只是检查
$comma
是否仍保留其原始值(没有用户输入会改变它)。@user1504538:是的,它是一个foreach()。很抱歉
$fields = array(
   'ID'   => 'id',
   'Name' => 'name',
   'Date' => 'date',
   'Group' => 'group',
);

$query = 'SELECT';  // Optional fields to be displayed may go here
$comma = ' ';       // and if they do, start with $comma = ', ';

$where = array();

foreach($fields as $post => $mysql)
{
    // here we have $post equal to 'ID', our POST field, and
    // $mysql equal to, say, 'Id' -- the MySQL field name.
    // Check whether options['ID'] is set. If so, we must get
    // the _POST[ID] field and check its contents against "Id" field in DB.
    if (in_array($post, $_POST['options']))
    {
        $query .= "$comma$mysql";
        $comma = ', ';
        // Add WHERE condition
        $where[] = "$mysql = '" . mysql_real_escape_string($_POST[$post]) . "'";
    }
}
// $comma, the separator between option fields, also doubles up as a check
// to see whether we have conditions.
// another possibility would be, "if (empty($where))"
if (' ' == $comma)
   die("You must select at least one checkbox!");

$query .= ' FROM table WHERE ';
// Build WHERE condition
$query .= '(' . implode(' AND ', $where).')';

// Other conditions may go here (e.g. " AND record_valid = 1 ")

$query .= ';';