0

以前にphpを使用したことがありますが、この問題に遭遇したことはありません....

独自の値を渡すラジオボタンがあります。フォームが送信されたときに、渡された値がコード内の if ステートメントの条件と一致することを確認しました。ただし、そのパスは実行されません。

たとえば、city ラジオ ボタンが選択されている場合、city に関する if 条件は実行されません。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

私はあなたが欲しいと思います

        if($table == 'City')

$ _POST ['search_param']は、テキストボックスの値です。

于 2012-09-28T05:10:55.653 に答える
0

クエリで未定義の$1に気付いた人はいません:D

于 2012-09-28T15:36:45.640 に答える
0
if($table != NULL)
{
        echo $table;

        if($search != NULL )
        {

検索パラメータは、入力テキスト フィールドで取得した値です。

于 2012-09-28T05:17:26.243 に答える
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 を投稿している可能性がありますが、空白 (null ではない) として送信されています。

于 2012-09-28T05:04:45.753 に答える
0

Ok。これを試して:

$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 に答える