it-swarm.com.de

Wie poste ich eine deaktivierte Eingabe?

Hallo, ich habe einige Eingaben, aber eine davon ist deaktiviert (ja und ich brauche sie für mein Arbeitszeitblatt), aber wie sende ich sie autocomplete.php an insert.php? Ich habe diesen Fehler. Undefinierter Index: client1 in C:\wamp\www\testlp\insert.php in Zeile 30

Hier mein Code autocomplete.php

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

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

        </form>

hier mein code insert.php

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

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

EDITIch habe folgendes versucht:

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

hier der fehler: Notice: Undefined index: client1 in C:\wamp\www\testlp\insert.php on line 12

9
Thephpdoge

verwenden Sie das Attribut readonly anstelle von disabled.

  • readonly: Eingabe kann nicht geändert werden
  • disabled: Eingabe hat keine Formularfunktion
  • (und die zugehörige dritte Option: Eingabetyp = ausgeblendet: Eingabe ist nicht sichtbar, der Wert wird jedoch übermittelt)

sie erhalten einen Fehler, weil ein deaktiviertes Element nicht gesendet wird, wenn das Formular gesendet wird und daher nicht in $_POST vorhanden ist (in Ihrem Fall gibt es einfach keinen $_POST['client1'])

edit edit: Die Beispiele waren nicht vollständig - da die akzeptierten Antwortzustände vorliegen, muss auch das name-Attribut vorhanden sein

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

oder 

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

wenn Sie mehr XML-ähnliche Syntax haben möchten.

49
cypherabe

Hier ist eine Idee, wie Sie das lösen können

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

Sie können sogar den Namen aus der ersten Eingabe entfernen.
Damit wird Ihre deaktivierte Eingabe weiterhin angezeigt, aber der Wert wird in Ihrem versteckten Eingabefeld angezeigt. 

Sie können <?php echo !empty($text)?$text:'';?> verwenden, um die value-Felder wie in einigen Antworten hier aufzufüllen

0
TimeTrax

Wenn Sie möchten, dass es deaktiviert wird, damit es in der Datenbank nicht geändert wird, müssen Sie es nicht POST angeben. Verwenden Sie SELECT, um den <input> aufzufüllen und das Attribut "disabled" hinzuzufügen.

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