web-dev-qa-db-ja.com

無効な入力を投稿するにはどうすればよいですか

こんにちは私はいくつかの入力を持っていますが、そのうちの1つは無効になっています(はい、私はタイムシートにそれが必要です)しかし、autocomplete.phpをinsert.phpに送信するにはどうすればよいですか? 30行目のwww\testlp\insert.php

ここに私のコードautocomplete.php

<form action = 'insert.php' method="post"  >

    <input type="text" name="client1" class = "client" size="12" id ="client1" disabled />

        </form>

ここに私のコードinsert.php

    session_start(); 
    $date = $_POST['data'] ;
    $client1 = $_POST['client1'] ;

    echo($client1);
    echo($date);

[〜#〜] edit [〜#〜]私はこれを試しました:

<input type="text" name="client1" class = "client" size="12" id ="client1"readonly />

ここでエラー:Notice: Undefined index: client1 in C:\wamp\www\testlp\insert.php on line 12

12
Thephpdoge

readonlyの代わりに属性disabledを使用してください。

  • readonly:入力は変更できません
  • 無効:入力にフォーム関数がありません
  • (および関連する3番目のオプション:入力タイプ=非表示:入力は表示されませんが、値は送信されます)

フォームの送信時に無効化された要素が送信されず、$_POSTに存在しないため、エラーが発生します(ケースでは$_POST['client1']はありません)。

編集が編集されました:例は完全ではありませんでした-受け入れられた回答が示すように、name属性も存在する必要があります

 <input type="text" name="client1" class = "client" size="12" id ="client1" value="something" readonly />

または

 <input type="text" name="client1" class = "client" size="12" id ="client1" value="something" readonly="readonly" />

よりXMLに似た構文が必要な場合。

60
cypherabe

これをどのように解決できるかについてのアイデアはここにあります

_<form action = 'insert.php' method="post"  >
  <input type="text" name="client1" class="client" size="12" id="client1" disabled />
  <input hidden name="client1" value="inserted_value_of_client1"/>
</form>
_

最初の入力から名前を削除することもできます。
これにより、無効な入力は引き続き表示されますが、phpは非表示の入力フィールドに値を投稿します。

<?php echo !empty($text)?$text:'';?>を使用してvalueフィールドにデータを入力できます。

TLDR;

_<form action="index.php" method="post">
  <input type="text" disabled  value="my_value"/>
  <input hidden name="client" value="my_value"/>
</form>
_
4
TimeTrax

DBで変更されないように無効にする場合は、POSTする必要はありません。SELECTを使用して<input>と属性「無効」を追加します。

<?php
if ( !empty($_POST)) {
$other_inputs= $_POST['other'];

$valid = true;
if (empty($text)) {
    $valid = false;
}

if ($valid) {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "UPDATE table set text = ? WHERE id = ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($other_inputs,$id);
}
} else {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM table where id = ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id));
    $data = $q->fetch(PDO::FETCH_ASSOC);
    $text = $data['client1'];
}
?>
<form action = 'insert.php' method="post"  >
    <input type="text" name="client1" class = "client" size="12" id ="client1" disabled vlaue="<?php echo !empty($text)?$text:'';?>" />
</form>
0
Suren