【问题标题】:Looking for my array to show the result in table format寻找我的数组以表格格式显示结果
【发布时间】:2013-11-21 16:47:17
【问题描述】:

我希望能够单击一个复选框,然后从我的数据库中的表中返回结果。我认为我的一切都是正确的,除了我的查询以提取数据并以表格格式显示结果。

This is my index.php file that makes the checkboxes.

<html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Search</title>
    </head>
    <body>
    <form action="filter.php" method="post">
    <INPUT TYPE=CHECKBOX NAME="option[]" VALUE="PhoneName" id="r1">PhoneName
    <INPUT TYPE=CHECKBOX NAME="option[]" VALUE="8GB" id="b1">8GB 
    <INPUT TYPE=CHECKBOX NAME="option[]" VALUE="16GB" id="g1">16GB
    <INPUT TYPE=CHECKBOX NAME="option[]" VALUE="Android" id="g1">Android
    <INPUT TYPE=CHECKBOX NAME="option[]" VALUE="Apple" id="g1">Apple
    <input type="submit" name="formSubmit" value="Filter" />

    </form>

    </body>
    </html>

这是我的 filter.php,PHP 代码开始的地方

    <?php

         mysql_connect("localhost", "root", "") or die (mysql_error());
        mysql_select_db("James") or die (mysql_error());
        $sql = 'SELECT * FROM hardware';
    $query=array();
    if (isset($_POST['option'])){
       foreach ($_POST['option'] as $opt){
          switch ($opt){
             case 'PhoneName':  $query[] = "PhoneName='yes'";
             case '8GB': $query[] = "8GB='yes'"; 
             case '16GB': $query[] = "16GB='yes'"; 
             case 'Android': $query[] = "Android='yes'"; 
             case 'Apple': $query[] = "Apple='yes'";
    }

          }
        }

    if (count($query)>0){
      $sql .= 'WHERE '.implode(' IN ', $query);
      print_r($_POST['option']);
    }

任何帮助将不胜感激,因为我花了几天时间编写各种不同的代码,但这是我现在所能得到的。我几天前才开始学习php,所以我意识到它可能不太好

【问题讨论】:

  • id 对于所有复选框应该是唯一的

标签: php html mysql sql


【解决方案1】:

mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("James") or die (mysql_error());
$sql = 'SELECT * FROM hardware';
$query=array();
if (isset($_POST['option'])){
foreach ($_POST['option'] as $opt){
    if($opt=='PhoneName')
    $query[] = "PhoneName='yes'";        
    if($opt=='8GB')
    $query[] = "8GB='yes'"; 
    if($opt=='16GB')
    $query[] = "16GB='yes'"; 
    if($opt=='Android')
    $query[] = "Android='yes'"; 
    if($opt=='Apple')
    $query[] = "Apple='yes'";


    }
}

if (count($query)>0){
$sql .= ' WHERE '.implode(' AND ', $query);
print_r($_POST['option']);
echo $sql;
}

【讨论】:

  • 感谢 Harish Singh 的帮助。当我使用您的代码并单击 PhoneName 时,我得到 SELECT * FROM hardware WHERE PhoneName='yes' 的结果。我怎样才能让它从我的数据库中提取数据以表格格式显示结果?
【解决方案2】:

在 switch case 后使用 break 也将 implode(' IN ', $query) 替换为 implode(' OR ', $query)implode(' AND ', $query)

$sql = 'SELECT * FROM hardware';
    $query=array();
    if (isset($_POST['option'])){
       foreach ($_POST['option'] as $opt){
          switch ($opt){
             case 'PhoneName':  $query[] = "PhoneName='yes'";
              break;
             case '8GB': $query[] = "8GB='yes'"; 
              break;
             case '16GB': $query[] = "16GB='yes'"; 
              break;
             case 'Android': $query[] = "Android='yes'"; 
              break;
             case 'Apple': $query[] = "Apple='yes'";
         }

      }
  }

    if (count($query)>0){
      $sql .= ' WHERE '.implode(' OR ', $query);
    }

    echo $sql;

phpfiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-26
    • 2020-01-14
    • 2017-12-04
    • 2017-01-01
    • 2021-11-09
    • 2014-11-02
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多