如何发布禁用的输入

问题描述 投票:0回答:4

您好,我有一些输入,但其中之一被禁用(是的,我的时间表需要它),但是如何将其发送 autocomplete.php 到 insert.php 我遇到此错误 Undefined index: client1 in C:\wamp \www estlp\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

php post input disabled-input
4个回答
105
投票

使用属性

readonly
而不是
disabled

  • 只读:无法修改输入内容
  • disabled:输入没有表单功能
  • (以及相关的第三个选项:input type=hidden:输入不可见,但值被提交)

您会收到错误,因为提交表单时未发送禁用元素,因此不存在于

$_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 的语法。


9
投票

这里有一个解决这个问题的想法

<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>

0
投票
<input name="client1" readonly> 

input:read-only {
   background-color: var(--bs-secondary-bg);
   ...
}

-2
投票

如果您希望禁用它,以便它不会在数据库中更改,那么您不必发布它。使用 SELECT 填充

<input>
并添加属性“disabled”。

<?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>
© www.soinside.com 2019 - 2024. All rights reserved.