首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何制作用户三栏查询表单到search.Using PHP和SQL

如何制作用户三栏查询表单到search.Using PHP和SQL
EN

Stack Overflow用户
提问于 2015-11-13 19:04:07
回答 4查看 356关注 0票数 0

我想知道如何制作一个用户有3个搜索选项的搜索表单

按年龄搜索

  1. (下拉列表18-25和26-40)
  2. Search按性别(男性或女性)
  3. Search By name

在我的代码中,当我在空白字段中点击“提交”时,它抛出了所有我不想要的数据:

代码语言:javascript
复制
<?php
$output = NULL;

if (isset ( $_POST ['submit'] )) {
    // Connect to database
    $mysqli = new Mysqli ( "localhost", "root", "2222", "matrimonialPortal" );

    $search = $mysqli->real_escape_string ( $_POST ['search'] );

    // Query the databse
    $resultSet = $mysqli->query ( "SELECT * FROM mp_user WHERE name LIKE '%$search%' OR email LIKE '%$search%' OR salutation LIKE '%$search%' OR id LIKE '%$search%'" );

    if ($resultSet->num_rows > 0) {
        while ( $rows = $resultSet->fetch_assoc () ) {
            $name = $rows ['name'];
            $email = $rows ['email'];


            $output .= "::<strong>The Details of your search</strong> ::<br /> Name: $name<br /> Email:$email<br /><br /> ";
        }
    } else {
        $output = "Oops No results Found!!";
    }
}
?>

<!-- The HTML PART -->
<form method="POST">
    <div>
        <p>
            Search By name: <input type="TEXT" name="search" /> <input
                type="SUBMIT" name="submit" value="Search >>" />
        </p>
    </div>

    <div>Search By Age :
        <select name="age">
            <option></option>
            <option value="18-20">18-20</option>
            <option value="20-25">20-25</option>
        </select><input type="SUBMIT" name="submit" value="Search >>" />
    </div>
    <br />
    <div>
        Search By Gender: 
        <select name="salutation">
            <option></option>
            <option value="0">--- Male ---</option>
            <option value="1">--- Female ---</option>
        </select> <input type="SUBMIT" name="submit" value="Search >>" />
    </div>
    <br> <br>
</form>
<?php echo $output; ?>
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-11-13 21:37:44

看起来你是PHP的新手。这是为您提供的解决方案。

第一个HTML部件。这里使用"action“,这意味着页面将定位文件并处理数据。例如action="search_process.php“。但是,如果您正在处理来自同一页面的数据,请使用$_SERVER‘’PHP_SELF‘;

代码语言:javascript
复制
       <!-- The HTML PART -->
        <form method="POST" action="$_SERVER['PHP_SELF']"> // here it will load the self page
            <div>
                <p>
    Search By name: <input type="text" name="search_name" />
    Search By age: <input type="text" name="search_age" />
    Search By gender: <input type="TEXT" name="search_gender" /> 
<input type="submit" name="submit_name" value="Search >>" />
                </p>
            </div>

现在是PHP部分:

代码语言:javascript
复制
    <?php 

           if(isset($_POST['submit_name'])
           {
             //What happens after you submit? We will now take all the values you submit in variables

              $name = (!empty($_POST['search_name']))?mysql_real_escape_string($_POST['search_name']):null; //NOTE: DO NOT JUST USE $name = $_POST['search_name'] as it will give undefined index error (though your data will be processed) and will also be open to SQL injections. To avoid SQL injections user mysql_real_escape_string.
              $age = (!empty($_POST['search_age']))?mysql_real_escape_string($_POST['search_age']):null;
              $gender = (!empty($_POST['search_gender']))?mysql_real_escape_string($_POST['search_gender']):null;

           //Now we will match these values with the data in the database

        $abc = "SELECT * FROM table_name WHERE field_name LIKE '".$name."' or field_gender LIKE '".$gender."' or field_age LIKE '".$age."'"; // USE "or" IF YOU WANT TO GET SEARCH RESULT IF ANY OF THE THREE FIELD MATCHES. IF YOU WANT TO GET SEARCH RESULT ONLY WHEN ALL THE FIELD MATCHES THEN REPLACE "or" with "and"
        $def = mysql_query($abc) or die(mysql_error())// always use "or die(mysql_error())". This will return any error that your script may encounter

   //NOW THAT WE HAVE GOT THE VALUES AND SEARCHED THEM WE WILL NOW SHOW THE RESULT IN A TABLE
        ?>    
        <table cellspacing="0" cellpadding="0" border"0">
          <tr>
            <th>Name</th>
            <th>Age</th>
            <th>Gender</th>
          </tr>
        <?php while($row = mysql_fetch_array($def)) {  // I HAD MISSED OUT A WHILE LOOP HERE. SO I AM EDITING IT HERE. YOU NEED TO USE A WHILE LOOP TO DISPLAY THE DATA THAT YOU GOT AFTER SEARCHING.
          <tr>
            <td><?php echo $row[field_name]; ?></td>
            <td><?php echo $row[field_age]; ?></td>
            <td><?php echo $row[field_gender]; ?></td>
          </tr>
        <?php } ?>
        </table>
    <?php } ?>

您的查询的完美解决方案。万事如意。

票数 0
EN

Stack Overflow用户

发布于 2015-11-13 19:44:23

你可以替换你的代码

代码语言:javascript
复制
if ($resultSet->num_rows > 0) {

有了这个

代码语言:javascript
复制
if ($resultSet->num_rows > 0 and trim($search) != "") {

因此,如果您的输入框为空,它将不会显示所有结果,希望这将对您有所帮助

编辑

这里有一个你可以理解的例子

代码语言:javascript
复制
$qry = "SELECT * FROM test WHERE 1=1";

if($purpose!="")
  $qry .= " AND purpose='$purpose'";

if($location!="")
  $qry .= " AND location='$location'";

if($type!="")
  $qry .= " AND type='$type'";

and for age

if ($age!='') {
  $qry .= " AND age between ".str_replace('-',' and ',$age);
}
票数 0
EN

Stack Overflow用户

发布于 2015-11-13 20:17:11

好吧,我不能给你全部代码,但这里有一些解决方案..

  1. 使用3种不同的表单和3种不同的提交按钮。
  2. 在html表单上使用单选按钮,并根据选择的单选按钮在PHP端进行检查并执行操作。
  3. 使用按钮而不是提交、单选按钮、隐藏字段,并在表单提交时将数据传递到不同的PHP页面(这可能会很长)。

你有选择的余地。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33691290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档