PHP MySql - 通过Checkbox Select自定义列显示

时间:2012-07-24 12:15:47

标签: php mysql select

我是那些相对的php / mysql新手之一,他们的背景一直是支持而不是开发。然而,我已经成功地将很多我想要实现的东西放在一起,因为这些资源网站非常丰富,所以请提前感谢过去,现在和未来。但是,我要么无法构建一个合适的谷歌查询来查找我需要的信息,要么我在某个地方错过了一个简单的技巧。

简而言之,我有一个mysql数据库,其中一个表有大约15列(字段)。我有一个php前端,我可以在所有字段中查询数据库,返回所有行或只包含一般搜索项目的行。一切都很好,展示得很好,效果很好。但是,我想让用户可以选择他们想要在结果中返回的那些列(字段)。因此,我有一个搜索页面,其中显示的列名称带有复选框,并相应地分配了值(列名称)。代码如下:

<form action="result.php" method="post">     Search for* :  <input type="text" name="searchterm" />
<input type="submit" name="submit" value="Search Database" /> <br /><br /><br />
<input type=button value="Select ALL" onclick="select_all( check, true ); return false;">
<input type=button value="Clear ALL" onclick="select_all( check, false ); return false;">
<table>
<tr><th>FirstName<br/><input type="checkbox" id="check" name="field[]" value="FirstName,"></th> 
<th>LastName<br/><center><input type="checkbox" id="check" name="field[]" value="LastName,"></center></th> 
<th>Age<br/><center><input type="checkbox" id="check" name="field[]" value="Age,">        </center></th> 
<th>Instrument<br/><center><input type="checkbox" id="check" name="field[]" value="Instrument,"></center></th>
<th>Grade<br/><center><input type="checkbox" id="check" name="field[]" value="Grade,"></center></th> 
<th>LandlineNo<br/><center><input type="checkbox" id="check" name="field[]" value="LandlineNo,"></center></th>
<th>MobileNo<br/><center><input type="checkbox" id="check" name="field[]" value="MobielNo,"></center></th> 
<th>Email<br/><center><input type="checkbox" id="check" name="field[]" value="Email,"></center></th> 
<th>AddressLine1<br/><center><input type="checkbox" id="check" name="field[]" value="AddressLine1,"></center></th> 
<th>AddressLine2<br/><center><input type="checkbox" id="check" name="field[]" value="AddressLine2,"></center></th> 
<th>Town<br/><center><input type="checkbox" id="check" name="field[]" value="Town,"></center></th> 
<th>County<br/><center><input type="checkbox" id="check" name="field[]" value="County,"></center></th> 
<th>Postcode<br/><center><input type="checkbox" id="check" name="field[]" value="Postcode,"></center></th> 
<th>Price<br/><center><input type="checkbox" id="check" name="field[]" value="Price,"></center></th> 
<th>Paid<br/><center><input type="checkbox" id="check" name="field[]" value="Paid,"></center></th> 
<th>LastUpdated<br/><center><input type="checkbox" id="check" name="field[]" value="LastUpdated,"></center></th>
</tr>
</table>
</form>

所有复选框都分配了字段[]作为名称,因此输出到result.php中的数组。经过一点点的进一步阅读后,我可以让数组以逗号分隔显示(回显)所选列,每个:

for ($i=0; $i<count($_POST['field']); $i++){ 
$columns = addslashes($_POST['field'][$i]); 
echo $columns;
}

// output example

LastName,Age,Instrument,Email

但是,我现在不知道如何在结果视图中仅获取要检索的选定列。任何人都可以帮助我并朝着正确的方向发展。我有这个,但这不起作用,因为返回所有列。

$result = mysql_query("select * from TABLE where FirstName like '%$searchterm%' or LastName like '%$searchterm%' or Age like '%$searchterm%' or Instrument like '%$searchterm%' or Grade like '%$searchterm%' or LandlineNo like '%$searchterm%' or MobileNo like '%$searchterm%' or Email like '%$searchterm%' or AddressLine1 like '%$searchterm%' or AddressLine2 like '%$searchterm%' or Town like '%$searchterm%' or County like '%$searchterm%' or Postcode like '%$searchterm%' or Price like '%$searchterm%' or Paid like '%$searchterm%'");

echo '<table>';
while ($row = mysql_fetch_assoc($result)) {
if (empty($columns)) {
    $columns = array_keys($row);
    echo '<tr><th>'.implode('</th><th>', $columns).'</th></tr>';
}
$resultset[] = $row;
echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
}
echo '</table>';

最终触摸还可以根据结果集检索列标题并将其填充到表中。提前感谢任何指导,建议和改进。

吉姆

1 个答案:

答案 0 :(得分:0)

$result = mysql_query("select * from TABLE where FirstName like '%$searchterm%' or LastName like '%$searchterm%' or Age like '%$searchterm%' or Instrument like '%$searchterm%' or Grade like '%$searchterm%' or LandlineNo like '%$searchterm%' or MobileNo like '%$searchterm%' or Email like '%$searchterm%' or AddressLine1 like '%$searchterm%' or AddressLine2 like '%$searchterm%' or Town like '%$searchterm%' or County like '%$searchterm%' or Postcode like '%$searchterm%' or Price like '%$searchterm%' or Paid like '%$searchterm%'");
$start = FALSE;
echo '<table><thead><tr>';
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $column => $value)
{
// Now we print the columns if they aren't printed
if ($start === FALSE && !empty($value))
{
echo "<th>$column</th>";
}
}
// And if the columns were printed now we turn start to TRUE.
if ($start === FALSE)
{
echo "</tr></thead><tbody>";
$start === TRUE;
}
echo "<tr>";
// Now for each key and value in the array we verify if the user wanted to print the column and we print it.
foreach ($row as $column => $value)
{
if (!empty($value))
{
echo "<td>$value</td>";
}
echo '</tr>';
}
}
echo '</tbody></table>';

这应该有效。您可以在评论中看到它的工作原理。