Bonjour, j'ai quelques entrées mais l'une d'entre elles est désactivée (oui et j'en ai besoin pour ma feuille de temps) mais comment puis-je l'envoyer à autocomplete.php à insert.php J'ai cette erreur Index non défini: client1 dans C:\wamp\www\testlp\insert.php à la ligne 30
Voici mon code autocomplete.php
<form action = 'insert.php' method="post" >
<input type="text" name="client1" class = "client" size="12" id ="client1" disabled />
</form>
voici mon code insert.php
session_start();
$date = $_POST['data'] ;
$client1 = $_POST['client1'] ;
echo($client1);
echo($date);
EDITJ'ai essayé ceci:
<input type="text" name="client1" class = "client" size="12" id ="client1"readonly />
ici l'erreur: Notice: Undefined index: client1 in C:\wamp\www\testlp\insert.php on line 12
utilisez l'attribut readonly
au lieu de disabled
.
vous obtenez une erreur car un élément désactivé n'est pas envoyé lors de l'envoi du formulaire et n'est donc pas présent dans $_POST
(il n'y a tout simplement pas de $_POST['client1']
dans votre cas)
edit édité: les exemples n'étaient pas complets - comme l'attribut accepté est la réponse, l'attribut name
doit également être présent
<input type="text" name="client1" class = "client" size="12" id ="client1" value="something" readonly />
ou
<input type="text" name="client1" class = "client" size="12" id ="client1" value="something" readonly="readonly" />
si vous voulez avoir une syntaxe plus proche de XML.
Voici une idée de comment vous pouvez résoudre ce problème
<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>
Vous pouvez même supprimer le nom de la première entrée.
Avec cela, votre entrée désactivée sera toujours affichée mais php publiera la valeur dans votre champ de saisie masqué.
Vous pouvez utiliser <?php echo !empty($text)?$text:'';?>
pour renseigner les champs value
comme indiqué dans certaines réponses ici.
Si vous souhaitez le désactiver afin qu'il ne change pas dans la base de données, vous n'avez pas à le POST. Utilisez le SELECT pour renseigner le <input>
et ajouter l'attribut "désactivé".
<?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>