18

您好,我有一些输入,但其中一个被禁用(是的,我的时间表需要它)但是我如何将它发送 autocomplete.php 到 insert.php 我有这个错误 Undefined index: client1 in C:\wamp\ www\testlp\insert.php 第 30 行

这是我的代码 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);

编辑 我试过这个:

<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

4

3 回答 3

85

使用属性readonly而不是disabled.

  • 只读:不能修改输入
  • disabled:输入没有表单功能
  • (以及相关的第三个选项:input type=hidden: input is not visible, but the value is submit)

您收到一个错误,因为在提交表单时未发送禁用的元素,因此不存在$_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 的语法。

于 2014-04-10T13:50:43.823 回答
7

这是您如何解决此问题的一个想法

<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>
于 2019-01-16T04:14:32.857 回答
-2

如果您希望禁用它以便它不会在数据库中更改,那么您不必发布它。使用 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>
于 2016-10-25T19:38:48.437 回答