我有一个将员工工作时间戳写入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>