0

PHPデータベースを検索するスクリプトを指す HTML フォームがありMySQLます。ユーザーがフォームに値を入力しない場合、エラー メッセージを返したいと思います。以下のコードを試してみましたが、フォーム フィールドに値を入力しても、以下のエラー メッセージが返されます。以下のコマンドが最適でない場合は、何が問題なのかを指摘したり、代替案を提案したりできますか。

if ($_POST['checkbox01'] == "on")
{
    $result = mysql_query("SELECT * FROM colour", $connection) or die("Cannot run     query");
    //Search for all records
}

elseif (!$_POST[''])
//Or else, if no fields are filled in...
{
    die('Please complete at least one search field');
    //Give an error message
}

else
... //Search the MySQL db using vaues entered into the form

(私も試しました…)

elseif(empty($_POST[''])) 
{
die('Please complete at least one search field');
} 
4

6 に答える 6

1

ここでisset関数が必要だと思います。これをロジックと組み合わせて、すべてのフォーム入力フィールドをチェックします。

vfield1 = "";
vfield2 = "";
vfield3 = "";

if (isset($_POST['field1'])) { vfield1 = $_POST['field1']; }
if (isset($_POST['field2'])) { vfield2 = $_POST['field2']; }
if (isset($_POST['field3'])) { vfield3 = $_POST['field3']; }

if (vfield1.vfield2.vfield3 == "") {
    die('Please complete at least one search field');
}
于 2013-03-14T13:05:24.883 に答える
0

これも機能します:

<?php

echo '
<form action="" method="post">
<input type="text" name="search"><input type="submit" name="submit" value="Search">
</form>';

if(isset($_POST['submit'])) {

    // Check if NOT searchfield is emty
    if(!$_POST['search'] == "") {
        echo $_POST['search'];
    }

    else {
        echo 'You have to search for something!';
    }

}

?>
于 2013-03-14T13:21:18.083 に答える
0

多分これを見てください?これは、私のフォームでうまく機能したリアルタイムの検証です。

于 2013-03-14T13:03:00.727 に答える
0

補足として、チェックボックスをチェックして値を指定している場合、次のようにすると役立つ場合があります。

<input type="checkbox" name="search_active" value="t" />

....次に、PHPで確認します

if ($_POST['search_active'] == "t") { // box checked } else { //box not checked }

とにかく、列を確認するには、配列に必須の列を入力し、POST 配列に対して foreach を実行して、列がすべて存在するかどうかを確認します。

...さらに良いのは、何らかのjQuery検証を使用することです。これは、ページをリロードする必要さえないことを意味します:)

必須列で配列を埋めるためのコード例を次に示します:)

$field_check = array("field1", "field2", "field3");
foreach ($field_check as $field) { 
   if (empty($_POST[$field])) { 
      die("Please enter a value into $field");
   }
}
// if we have got to here - continue with the search.
mysql_query(....);
于 2013-03-14T13:03:06.313 に答える
0

$_POST[''] は何もしません。$_POST はフォームから送信されたフィールドの配列です。たとえば、単純なログイン フォーム (ユーザー名/パスワード) がある場合、$_POST 配列は次のようになります。

array('username' => 'value', 'password' => 'value');

すべてのフィールドが空かどうかを確認したい場合は、配列をループして実行することをお勧めします。例えば:

foreach($_POST as $key => $value) {
   if($value == "") { die("Please enter a value into $key") }
}
于 2013-03-14T13:05:12.100 に答える
-1

このようなことは、Javascript を使用してクライアント側で実装する方が簡単なはずです。jQuery には、このための非常に便利なメソッドがいくつかあります。次に例を示します。

$('#Your_Form input').blur(function()
{
    if( $(this).val().length == 0 ) {
        $('#warningDiv').addClass('warning');
    }
    else{
        $('#warningDiv').removeClassClass('warning');
    }
});

一方#warningDiv、入力が空のときに赤くなる div である可能性があります。同様の動作を入力キー押下/変更イベントに実装して、値を定期的にチェックすることもできます。

サーバー側でこれを行うことを主張する場合は、別の答えを使用することをお勧めします。

于 2013-03-14T13:04:21.650 に答える