php - 有没有更好的方法来设置来自 php 脚本中具有相似值的表单的两个输入字段的四个不同变量

标签 php mysql sorting tablesorter

我有一个表单,通过两个输入字段传递两个值,其中的数据来自从数据库表预加载的 16 个字段。此表单的目的是将数据库字段和数据传递给 php 脚本,该脚本将根据这些输入字段和值进行 sql 查询,并使用给定的过滤器打印过滤后的表条目

我的数据库表结构是这样的:

field1, field2, field3, field4, field5, field6, field7, field8, field9, field10, field11, field12, field13, field14, field15, field16

我目前正在使用这个:

<?php
$searchfield1='';
$searchfield2='';
$searchquery1='';
$searchquery2='';

//setting value of variable $searchquery1 depending on the incoming value
if ($_POST=['field1Name1']) {$searchfield1='field1'; $searchquery1='field1Data';}
else if ($_POST=['field2Name1']) {$searchfield1='field2'; $searchquery1='field2Data';}
else if ($_POST=['field3Name1']) {$searchfield1='field3'; $searchquery1='field3Data';}
else if ($_POST=['field4Name1']) {$searchfield1='field4'; $searchquery1='field4Data';}
else if ($_POST=['field5Name1']) {$searchfield1='field5'; $searchquery1='field5Data';}
else if ($_POST=['field6Name1']) {$searchfield1='field6'; $searchquery1='field6Data';}
else if ($_POST=['field7Name1']) {$searchfield1='field7'; $searchquery1='field7Data';}
else if ($_POST=['field8Name1']) {$searchfield1='field8'; $searchquery1='field8Data';}
else if ($_POST=['field9Name1']) {$searchfield1='field9'; $searchquery1='field9Data';}
else if ($_POST=['field10Name1']) {$searchfield1='field10'; $searchquery1='field10Data';}
else if ($_POST=['field11Name1']) {$searchfield1='field11'; $searchquery1='field11Data';}
else if ($_POST=['field12Name1']) {$searchfield1='field12'; $searchquery1='field12Data';}
else if ($_POST=['field13Name1']) {$searchfield1='field13'; $searchquery1='field13Data';}
else if ($_POST=['field14Name1']) {$searchfield1='field14'; $searchquery1='field14Data';}
else if ($_POST=['field15Name1']) {$searchfield1='field15'; $searchquery1='field15Data';}
else if ($_POST=['field16Name1']) {$searchfield1='field16'; $searchquery1='field16Data';}

//setting value of variable $searchquery2 depending on the incoming value
if ($_POST=['field1Name2']) {$searchfield2='field1'; $searchquery2='field1Data';}
else if ($_POST=['field2Name2']) {$serachfield2='field2'; $searchquery1='field2Data';}
else if ($_POST=['field3Name2']) {$serachfield2='field3'; $searchquery1='field3Data';}
else if ($_POST=['field4Name2']) {$serachfield2='field4'; $searchquery1='field4Data';}
else if ($_POST=['field5Name2']) {$serachfield2='field5'; $searchquery1='field5Data';}
else if ($_POST=['field6Name2']) {$serachfield2='field6'; $searchquery1='field6Data';}
else if ($_POST=['field7Name2']) {$serachfield2='field7'; $searchquery1='field7Data';}
else if ($_POST=['field8Name2']) {$serachfield2='field8'; $searchquery1='field8Data';}
else if ($_POST=['field9Name2']) {$serachfield2='field9'; $searchquery1='field9Data';}
else if ($_POST=['field10Name2']) {$serachfield2='field10'; $searchquery1='field10Data';}
else if ($_POST=['field11Name2']) {$serachfield2='field11'; $searchquery1='field11Data';}
else if ($_POST=['field12Name2']) {$serachfield2='field12'; $searchquery1='field12Data';}
else if ($_POST=['field13Name2']) {$serachfield2='field13'; $searchquery1='field13Data';}
else if ($_POST=['field14Name2']) {$serachfield2='field14'; $searchquery1='field14Data';}
else if ($_POST=['field15Name2']) {$serachfield2='field15'; $searchquery1='field15Data';}
else if ($_POST=['field16Name2']) {$serachfield2='field16'; $searchquery1='field16Data';}

include 'dbase.php';

$data = "SELECT * FROM SOMETABLE WHERE $searchfield1='$searchquery1' AND $serachfield2='$searchquery2' ORDER BY ID DESC";
$result = $conn->query($data);

if ($result->num_rows > 0) {
  // display data in table
echo 'table HTML code goes here'; ?>

虽然,我能够通过上面的代码获得所需的结果,但我知道一定有更好的方法来实现这一点,我对堆栈社区的问题是,有没有更好的方法来做到这一点?所以我可以缩短这段代码或者使其更加有效和精确。实际上,我想在这个脚本中使用更多的过滤器来对数据进行排序,但是代码会变得越来越长,因为我将使用上面的格式应用过滤器,我已用于定义变量。

让我澄清一下,该字段的编号并不像上面的代码中所示,它们被命名为一些文本字段,例如客户、地址、产品、仓库、销售、发货等。

最佳答案

使用for循环:

for ($i=1; $i<=16; $i++) {
  if ($_POST=['field'.$i.'Name1']) {
    $searchfield1='field'.$i; 
    $searchquery1='field'.$i.'Data';
  }
  if ($_POST=['field'.$i.'Name2']) {
    $searchfield2='field'.$i; 
    $searchquery2='field'.$i.'Data';
  }
}

关于php - 有没有更好的方法来设置来自 php 脚本中具有相似值的表单的两个输入字段的四个不同变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42822822/

相关文章:

mysql - 我需要在我的存储过程中执行 varchar SQLcode

javascript - Internet Explorer 9 不向 Nodejs 中的数据库发送数据

algorithm - 将 B 个芝士蛋糕分给 N 个类(class),以尽量减少每个蛋糕的最大学生人数

Java,归并排序

php - Mysql - 序列化失败 : 1213 Deadlock found when try to get lock; try restarting transaction, 但查询不在事务中

php - 使用 session_start() 时 Varnish Cache 不缓存 PHP 页面

php - 在表中显示 MYSQL 数据库中的数据(不单独)

javascript - 脚本在任何基于 WebKit 的浏览器中都可以正常工作,但在 Firefox 中却不行

mysql - 如何使用 Sequelize 连接两个表?

php - MySql - 按姓名和合作伙伴对人员进行排序