<输入类型= "text" 将 ID 值分配给 PHP 字符串



我有一个将员工工作时间戳写入SQL数据库的模式表单。我从下拉列表中选择员工,并通过javascript函数使用id标记填写姓名输入框。当我提交表单时,数据会使用php写入数据库。问题是我无法将javascript字符串转换为php字符串,也无法将输入标记的id标记分配给php字符串。我知道在输入内部编写时,我可以用php值="…"来分配值&";。

$nome = '<script>document.writeln(a);</script>'; 

不起作用

这里的代码

<div class="modal-body">
<input type="hidden" name="edit_id" value="<?php echo $id; ?>">
<div class="form-group">
<label class="control-label col-sm-2" for="dipendente">Dipendente:</label>
<div class="col-sm-4">
<select id="dipendente" name="dipendente" onchange="nomeCognome()">
<option value="dipendente">Seleziona dipendente</option>
<?php 
$sqlOperatore="SELECT nome, cognome FROM login ORDER BY nome ASC";
$resultOperatore = $conn->query($sqlOperatore);
if ($resultOperatore->num_rows > 0) {                                    
while($row = $resultOperatore->fetch_assoc()) {
$nome = $row['nome'];
$cognome = $row['cognome'];
$dipendente = $nome . ' ' . $cognome;
?>                                                  
<option><?php echo $dipendente; ?></option>
<?php } ?>                                                  
</select>                                   
</div>
<?php } ?>
<label class="control-label col-sm-2" for=" "> </label>
<div class="col-sm-4"></div>
</div>                          
<br>
<div class="form-group">
<label class="control-label col-sm-2" for="nome">Nome:</label>
<div class="col-sm-4" id="nome">
<input type="text" class="form-control" id="nome" name="nome" readonly> </div>
<label class="control-label col-sm-2" for="cognome">Cognome:</label>
div class="col-sm-4" id="cognome">
<input type="text" class="form-control" id="cognome" name="cognome" readonly> </div>
</div>                          
<br>                                                        
<script type="text/javascript">
function nomeCognome() {
var x = document.getElementById("dipendente").value;
var [a, b, c] = x.split(' ');
document.getElementById("nome").innerHTML = [a];
document.getElementById("cognome").innerHTML = [b, c].join(' ');
}
</script>           
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" name="add_item"><span class="glyphicon glyphicon-plus"></span> Aggiungi</button>
<button type="button" class="btn btn-warning" data-dismiss="modal"><span class="glyphicon glyphicon-remove-circle"></span> Annulla</button>
</div> 
<?php
//Add Matricola  
if(isset($_POST['add_item'])){
$edit_id = $_POST['edit_id'];
$nome = $_POST['nome'];
$cognome = $_POST['cognome'];                       
$sql = "INSERT INTO gest_personale.timbratura (nome, cognome) 
VALUES ('$nome', '$cognome')";
if ($conn->query($sql) === TRUE) {
echo '<script>window.location.href="visualizzaTimbrature.php"</script>';
} else {
echo "Errore: " . $sql . "<br>" . $conn->error;
}   
}
?>

我收到以下错误/通知:通知:未定义的索引:nome和通知:未确定的索引:cognome

您使用.innerHTML为输入赋值,但此处id="nome"对div使用两个位置,对cognome使用相同的输入。因此,.innerHTML删除div中的input-box,并将其替换为新文本,这就是为什么当您提交表单时,会出现未定义的索引错误,因为不存在具有所需值的输入。

相反,使用.value为输入赋值,并在添加之前删除.readOnly = false属性,添加之后使用.readOnly = true

演示代码 :

function nomeCognome() {
//remove readonly first
document.getElementById("nome").readOnly = false;
document.getElementById("cognome").readOnly = false;
var x = document.getElementById("dipendente").value;
var [a, b, c] = x.split(' ');
//use .value to add value in input values
document.getElementById("nome").value = [a];
document.getElementById("cognome").value = [b, c].join(' ');
//add readonly again..
document.getElementById("nome").readOnly = true;
document.getElementById("cognome").readOnly = true;
}
<div class="modal-body">
<input type="hidden" name="edit_id" value="<?php echo $id; ?>">
<div class="form-group">
<label class="control-label col-sm-2" for="dipendente">Dipendente:</label>
<div class="col-sm-4">
<select id="dipendente" name="dipendente" onchange="nomeCognome()">
<option value="dipendente">Seleziona dipendente</option>
<option>
Sss abc
</option>
<option>
Sss11 abc1
</option>
</select>
</div>
<label class="control-label col-sm-2" for=" "> </label>
<div class="col-sm-4"></div>
</div>
<br>
<div class="form-group">
<label class="control-label col-sm-2" for="nome">Nome:</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="nome" name="nome" readonly="readonly"> </div>
<label class="control-label col-sm-2" for="cognome">Cognome:</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="cognome" name="cognome" readonly="readonly"> </div>
</div>
<br>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" name="add_item"><span class="glyphicon glyphicon-plus"></span> Aggiungi</button>
<button type="button" class="btn btn-warning" data-dismiss="modal"><span class="glyphicon glyphicon-remove-circle"></span> Annulla</button>
</div>

最新更新