1

データベースに新しいアイテムを追加するためのフォームと、既存のアイテムを編集するためのフォームは同じフォームです。「モード」がフォームに渡され、何か新しいものを追加するか、編集のために既存のアイテムをロードするかを伝えます。そう....

<input type="checkbox" name="fflreq" id="fflreq" value="<?=$row['FFLr']?>" <?php if ($row['FFLr']=="Yes") {echo 'checked';} ?>>

新しいアイテムが追加されているとき、$row['FFLr'] は存在しないため、もちろん値は空白または NULL であるか、最初にチェックボックスをオンにしない場合は 0 と推測します。フォーム プロセッサはこれを "いいえ」と入力し、データベースに挿入します。

ここに私の問題があります-アイテムに戻ってフォームが編集モードになっている場合、このチェックボックスの値は「いいえ」になりました-チェックボックスをクリックしてステータスを変更すると、チェックボックスが「チェック済み」になります' しかし、値は変化していません。言い換えれば、クリック/チェックのステータスは $_POST['fflreq'] の値を YES または 1 に設定していません。

フォームのチェックボックスをオンまたはオフにすると、現在 value='' 属性にあるものが 1 または 0 に置き換えられて、はい/いいえのオン/オフなどを表すと思いました。フォームの送信時にデータベースから取り込まれた値が変更されないのはなぜですか?

4

4 に答える 4

4

次のようにする必要があります。

<input type="checkbox" name="fflreq" id="fflreq" value="Yes" <?php if ($row['FFLr']=="Yes") {echo 'checked';} ?>>

上記のチェックボックスがチェックされている場合にフォームを送信すると、フォーム送信ページで $_POST["fflreq"] を受信し、チェックされていない場合は $_POST で何も受信しません

したがって、送信ページでこれを行うことができます:

$fflreq = "No"
if(isset($_POST["fflreq"]) && $_POST["fflreq"] == "Yes")
{
    $fflreq = $_POST["fflreq"];
}
//then you can simply do anything with the $fflreq such as inserting it into database etc.

これが何かの助けになることを願っています。

于 2013-07-12T20:11:13.117 に答える
1

チェックボックスがアクティブな場合、ブラウザは入力タグで定義されたキーと値のペアを送信します。ただし、チェックボックスがアクティブでない場合、このチェックボックスについては何も送信されません。

これに対処するには、次の 2 つのオプションがあります。

clean オプションは、サーバー側でこれを認識し、値が渡されないときはいつでもチェックボックスがアクティブでないと想定することです。

より汚いバリアントは<input type="hidden">、チェックボックスの直前にタグを持ち、同じ名前を使用していますが、チェックボックスが非アクティブなときに表示する必要がある値です。このようにして、チェックボックスがアクティブな場合でも、チェックボックスから目的の値を取得できます。これは、非表示の値が上書きされるためです。ただし、チェックボックスが非アクティブの場合は、隠しフィールドから値を取得します。

于 2013-07-12T20:07:32.453 に答える
1

そうではありませんが、 paramに HTMLname属性値が存在するかどうかを調べることで、チェック/チェックなしのステータスが読み取られます。$_POST

これは次の方法で確認できます。

<?
    if (!empty($_POST['fflreq'])){ /*checked*/ }
    else{ /*unchecked*/ } 
?>   

HTML 属性の値は、HTML にあるものvalueは何でもそのままです。したがって、ユーザーの操作 (JS を除く) でそれを変更することはできません。

PHPempty()関数を使用すると、すべての「はい」「1」文字列 int キャストの問題を回避できます。

さらに、次のようなものには 3 進表記を使用します。

<input type="checkbox" name="fflreq" id="fflreq" 
    value="<?=$row['FFLr']?>" <?=(!empty($row['FFLr'])?'checked':'')?>>
于 2013-07-12T20:15:17.357 に答える