用户选择它时,HTML <Option>不返回值

时间:2019-06-17 14:16:10

标签: php html mysql

我有一个SQL查询,该查询应填充HTML的列表视图,并且工作正常。问题是当用户在列表框上选择值时,变量为null,并且INSERT的SQL语句缺少此变量的值,从而导致错误。

下面是当我获得准备SQL语句的值时的代码,所有变量都在工作,并且接收用户输入的值,但$ clcargo除外,因为这是我在表单中具有的唯一列表视图


$clregistro = mysqli_real_escape_string($conn,$_POST['clregistro']);
$clnome = mysqli_real_escape_string($conn,$_POST['clnome']);
$clsobrenome = mysqli_real_escape_string($conn,$_POST['clsobrenome']);
$cldtnasc = mysqli_real_escape_string($conn,$_POST['cldtnasc']);
$clrg = mysqli_real_escape_string($conn,$_POST['clrg']);
$clcpf = mysqli_real_escape_string($conn,$_POST['clcpf']);
$clcnh = mysqli_real_escape_string($conn,$_POST['clcnh']);
$clcidade = mysqli_real_escape_string($conn,$_POST['clcidade']);
$clestado = mysqli_real_escape_string($conn,$_POST['clestado']);
$clcep = mysqli_real_escape_string($conn,$_POST['clcep']);
$clrua = mysqli_real_escape_string($conn,$_POST['clrua']);
$clnum = mysqli_real_escape_string($conn,$_POST['clnum']);
$clbairro = mysqli_real_escape_string($conn,$_POST['clbairro']);
$cltel = mysqli_real_escape_string($conn,$_POST['cltel']);
$clcel = mysqli_real_escape_string($conn,$_POST['clcel']);
$clemail = mysqli_real_escape_string($conn,$_POST['clemail']);
$clsex = mysqli_real_escape_string($conn,$_POST['clsex']);
$clcargo = (isset($_POST['clcargo'])?$_POST['clcargo'] : null); 
$ciduser = $_SESSION['id_users'];

$sql = "INSERT INTO funcionarios (registro, nome, sobrenome, nascimento, rg, cpf, cnh, cidade, estado, cep, rua, numero, bairro, telefone, cel, email, sexo, id_cargo, ativo, id_user)
VALUES ('$clregistro','$clnome','$clsobrenome','$cldtnasc','$clrg','$clcpf','$clcnh','$clcidade','$clestado','$clcep','$clrua','$clnum','$clbairro','$cltel','$clcel','$clemail','$clsex', '$clcargo', 1, $ciduser)";
if ($conn->query($sql) === TRUE) 

当我尝试注册成员时,由于$ clcargo中的空值,SQL返回此值:

Error: INSERT INTO funcionarios (registro, nome, sobrenome, nascimento, rg, cpf, cnh, cidade, estado, cep, rua, numero, bairro, telefone, cel, email, sexo, id_cargo, ativo, id_user) VALUES ('1212','Diego Artur','Ferreira Campos','1988-09-04','41349658','35237976832','81349662','Campinas','SP','13054661','Rua Cecília Sigrist','20','Dic VI (Conjunto Habitacional Santo Dias Silva)','19 3266-8957','19 98114-1090','diegoart.fc@gmail.com','Masculino', '', 1, 1)
Cannot add or update a child row: a foreign key constraint fails (`u682912079_bd`.`funcionarios`, CONSTRAINT `id_cargo_func` FOREIGN KEY (`id_cargo`) REFERENCES `cargo` (`id_cargo`) ON DELETE NO ACTION ON UPDATE NO ACTION) 

这是用于在列表视图中加载信息的代码


<form method="post">

 <?php

    $conn = new mysqli($servername, $serverlogin, $password, $dbname);
    $query = mysqli_query($conn, "SELECT id_cargo, descricao FROM cargo");

?>
<div class="form-group row">
    <div class="col-md-6">

    <label for="exampleFormControlInput1">Cargo / Função</label>

    <select class="custom-select" id="inputGroupSelect01">
        <option>Selecione o cargo...</option>
    <?php while($proc = mysqli_fetch_array($query)) { ?>
    <option name="clcargo" value="<?php echo $proc['id_cargo'] ?>"><?php echo $proc['descricao'] ?></option>
    <?php } ?>
  </select>
    </div>

</div>
<hr>

<button type="submit" class="btn btn-primary btn-user btn-block" name="reg_f">Cadastrar</button>

我期望的是变量$ clcargo由用户选择实现。

2 个答案:

答案 0 :(得分:3)

<select name="clcargo" class="custom-select" id="inputGroupSelect01">
    <option>Selecione o cargo...</option>
<?php while($proc = mysqli_fetch_array($query)) { ?>
<option value="<?php echo $proc['id_cargo'] ?>"><?php echo $proc['descricao'] ?></option>
<?php } ?>

名称字段必须位于<select>中,不能位于<option>

答案 1 :(得分:0)

要使其正常工作,必须将name属性添加到<select>,并将value属性添加到每个<option>