0

我以前用过php,从来没有遇到过这个问题......

我有单选按钮,它们传递自己的价值。提交表单后,我已验证传递的值与我的代码中的 if 语句条件匹配。但是,它不会执行该路径。

For example, when the city radio button is selected, the if condition pertaining to city does not execute. 我通过在 if 语句之前放置一个 echo 语句进行了调试,它与 if 语句中的值匹配,因此我对它为什么不执行感到困惑。

如果有人可以提供帮助,我将不胜感激......我很困惑。

继承人的html:

<html>
<head>
<title>Lab 5</title>
<link rel='stylesheet' href='SearchForm.css' type='text/css' media='all' />
</head>
<body>
<p>You may use % as a wildcard character in your search.</p>
<form method='POST' action='index.php?type=search'>
  <input type='text' name='search_param' value='' />
  <input type='radio' name='search-type' value='City' id='city' />
  <label for='city'>City</label>
  <input type='radio' name='search-type' value='Country' id='country' />
  <label for='country'>Country</label>
  <input type='radio' name='search-type' value='Language' id='language' />
  <label for='language'>Language</label>
  <br /><br />
  <input type='submit' name='submit' value='Search' />
</form>
<p>Or, <a href='index.php?type=insert'>perform an insertion.</a></p>
</body>
</html>

和PHP:

<?php

include 'connect.php';

$table = $_POST['search-type'];
$search = $_POST['search_param'];

if($table != NULL)
{
        echo '<table>';

        if($table == 'City')
        {

                $query = "SELECT * FROM city WHERE name ILIKE $1 ORDER BY name;";
                $stmt = pg_prepare($connection, "city", $query);
                $result = pg_execute($connection, "city", array($search));

                while($row = pg_fetch_assoc($result))
                {
                        cityTable($row);
                }
        echo '</table>';

        }

}
else
{
        echo 'Please select a table to query!';
}

正如你所看到的,我什至$search从我的 if 条件中删除了变量,而不是直接进入帖子。

当我回应$search它产生“城市”时......请帮忙!

4

6 回答 6

1

PHP 中的字符串比较区分大小写,因此不要:

if($_POST['search_param'] == 'City')

你应该有:

if (0 === strcasecmp($_POST['search_param'], 'City'))

或者:

if (0 === strcasecmp(trim($_POST['search_param']), 'City'))
于 2012-09-28T05:05:26.790 回答
0

试试条件:

$table = isset($_POST['search-type']) ? $_POST['search-type'] : false;
$search = isset($_POST['search_param']) ? $_POST['search_param'] : false;

if ($table) {

}
else if (!$table || $table === null) {

}

HTML 表单可能会发布参数 search-type 但为空白(不为空)。

于 2012-09-28T05:04:45.753 回答
0

行。试试这个:

$table = isset($_POST['search-type']) ? $_POST['search-type'] : NULL; // string from radio
$search = isset($_POST['search_param']) ? $_POST['search_param'] : NULL; // string from input
于 2012-09-28T05:05:30.917 回答
0

我想你想要

        if($table == 'City')

$_POST['search_param'] 是文本框中的值。

于 2012-09-28T05:10:55.653 回答
0
if($table != NULL)
{
        echo $table;

        if($search != NULL )
        {

搜索参数是我们在我朋友的输入文本字段中得到的值

于 2012-09-28T05:17:26.243 回答
0

没有人注意到查询中未定义的 $1 :D

于 2012-09-28T15:36:45.640 回答