您好,我有一些输入,但其中之一被禁用(是的,我的时间表需要它),但是如何将其发送 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
使用属性
readonly
而不是 disabled
。
您会收到错误,因为提交表单时未发送禁用元素,因此不存在于
$_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 的语法。
这里有一个解决这个问题的想法
<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>
<input name="client1" readonly>
input:read-only {
background-color: var(--bs-secondary-bg);
...
}
如果您希望禁用它,以便它不会在数据库中更改,那么您不必发布它。使用 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>