Php 输入值并选择返回数据
我正在尝试创建一个网页,用户可以在其中提交他们知道的信息,并选择他们想要返回的信息。例如,如果他们知道提交的ID号,他们可以输入ID号并要求返回的值为ID号和产品名称 正在检索的信息存储在MySQL数据库中,html页面由选择菜单、文本框和复选框组成(这样用户可以选择名称或输入其他信息,然后使用复选框选择他们想要返回的其他信息) 以下是相关的html:Php 输入值并选择返回数据,php,html,Php,Html,我正在尝试创建一个网页,用户可以在其中提交他们知道的信息,并选择他们想要返回的信息。例如,如果他们知道提交的ID号,他们可以输入ID号并要求返回的值为ID号和产品名称 正在检索的信息存储在MySQL数据库中,html页面由选择菜单、文本框和复选框组成(这样用户可以选择名称或输入其他信息,然后使用复选框选择他们想要返回的其他信息) 以下是相关的html: <table><tr> <form name="input" method="post" action="next
<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
),并且它没有返回任何错误。然而,即使我选中了复选框,它也会死掉,并且在我注释掉该部分时忽略它们。如果(''=$逗号)的实际作用是什么?它是如何工作的?谢谢@user1504538if(''=$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 .= ';';