0

phpとmysqlを使用して簡単な検索スクリプトを作成しようとしています。私はhtmlselectタグを持っています

  1. 領域
  2. 行き先
  3. から

これで、mysqlデータベースからコンテンツを取得します。以下は私のphpスクリプトです。

if(isset($_GET['Submit']) && $_GET['Submit'] == "Search")
{
$people = mysql_real_escape_string(htmlspecialchars(trim($_GET['people'])));
$country =  mysql_real_escape_string(htmlspecialchars(trim($_GET['country'])));
$region =  mysql_real_escape_string(htmlspecialchars(trim($_GET['region-depart'])));
$destination = mysql_real_escape_string(htmlspecialchars(trim($_GET['destination'])));
$from = mysql_real_escape_string(htmlspecialchars(trim($_GET['from'])));
$to = mysql_real_escape_string(htmlspecialchars(trim($_GET['to'])));

if(isset($people))
{

$search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep LIKE 
'%$people%'");
$num = mysql_num_rows($search);

while($result = mysql_fetch_array($search))
    {
        $propertyid = (int) $result['propertyid'];          
        echo $country_d = $result['pro_country'];
        echo $region_d = $result['pro_state'];
        echo $destination_d = $result['pro_city'];

    }
}

elseif(isset($country))
{
$search2 = mysql_query("SELECT * FROM property_step1 WHERE pro_country LIKE 
'%$country%'");
$num = mysql_num_rows($search2);        

while($result2 = mysql_fetch_array($search2))
    {
        $propertyid = (int) $result2['propertyid'];         
        echo $country_d = $result2['pro_country'];
        echo $region_d = $result2['pro_state'];
        echo $destination_d = $result2['pro_city'];

    }
}
else
{
    echo "nope";
}       
}

ええと、(1、2、3などの値)を選択すると、データベースのコンテンツが表示されますが、を選択すると、何も表示されません。私のクエリに何か問題がありますか?

4

3 に答える 3

1

isset($people)常に評価しtrueます; そうでないかどうかを確認する必要がありemptyます。

if (isset($people) && !empty($people)) {
    // ...
}
于 2012-12-01T15:03:57.973 に答える
0

国のelseif条件が問題を引き起こしている場合は、それをifのみに置き換え、条件を1つだけ書き込むif...elseif と実行されます。

このコードを使用する

if (isset($_GET['Submit']) && $_GET['Submit'] == "Search") {
    $people = mysql_real_escape_string(htmlspecialchars(trim($_GET['people'])));
    $country = mysql_real_escape_string(htmlspecialchars(trim($_GET['country'])));
    $region = mysql_real_escape_string(htmlspecialchars(trim($_GET['region-depart'])));
    $destination = mysql_real_escape_string(htmlspecialchars(trim($_GET['destination'])));
    $from = mysql_real_escape_string(htmlspecialchars(trim($_GET['from'])));
    $to = mysql_real_escape_string(htmlspecialchars(trim($_GET['to'])));

    if (isset($people)) {
        $search = mysql_query("SELECT * FROM property_step1 WHERE pro_no_sleep LIKE 
'%$people%'");
        $num = mysql_num_rows($search);

        while ($result = mysql_fetch_array($search)) {
            $propertyid = (int) $result['propertyid'];
            echo $country_d = $result['pro_country'];
            echo $region_d = $result['pro_state'];
            echo $destination_d = $result['pro_city'];
        }
    } 
    if (isset($country)) {
        $search2 = mysql_query("SELECT * FROM property_step1 WHERE pro_country LIKE 
'%$country%'");
        $num = mysql_num_rows($search2);

        while ($result2 = mysql_fetch_array($search2)) {
            $propertyid = (int) $result2['propertyid'];
            echo $country_d = $result2['pro_country'];
            echo $region_d = $result2['pro_state'];
            echo $destination_d = $result2['pro_city'];
        }
    } else {
        echo "nope";
    }
}
于 2012-12-01T15:03:12.433 に答える
0

すべての変数が常に「設定」されるように、各変数を定義しています。

if(isset($people))実行されないことを意味するように定義されているため、常に実行されisset($country)ます。

これを次のように変更する必要があります。

if(!empty($people)){

}
if(!empty($country)){

}
于 2012-12-01T15:04:32.310 に答える