How do I post disabled input

空扰寡人 提交于 2019-12-18 05:47:29

问题


Hello I have some input but one of them is disabled ( yes and i need it for my time sheet )but how do I send it autocomplete.php to insert.php I've this error Undefined index: client1 in C:\wamp\www\testlp\insert.php on line 30

Here my code autocomplete.php

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

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

        </form>

here my code insert.php

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

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

EDIT I tried this :

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

here the error : Notice: Undefined index: client1 in C:\wamp\www\testlp\insert.php on line 12


回答1:


There is no value for client1. Please add something like

value="TEST"

to your input.

echo $_POST['client1']; // TEST

Edit: remove session_start(); Why are you using this?




回答2:


use the attribute readonly instead of disabled.

  • readonly: input can't be modified
  • disabled: input has no form function
  • (and the related third option: input type=hidden: input is not visible, but the value is submitted)

you get an error because an disabled element is not sent when the form is submitted and thus is not present in $_POST (there simply is no $_POST['client1'] in your case)

edit edited: the examples were not complete - as the accepted answer states, the name attribute must be present, too

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

or

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

if you want to have a more xml-like syntax.




回答3:


Here is an idea of how you can solve this

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

You can even remove name from the first input.
With this, your disabled input will still be displayed but php will post the value in your hidden input field.

You can use <?php echo !empty($text)?$text:'';?> to populate the value fields as shown in some answers here

TLDR;

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



回答4:


If you want it disabled so it does not change in the DB, then you do not have to POST it. Use the SELECT to populate the <input> and add the attribute "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>


来源:https://stackoverflow.com/questions/22989845/how-do-i-post-disabled-input

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!