数据库驱动的选择框在提交时为空

Posted

技术标签:

【中文标题】数据库驱动的选择框在提交时为空【英文标题】:Database driven select box being empty on submit 【发布时间】:2016-05-05 17:08:38 【问题描述】:

我正在尝试使用 php 在数据库中提交表单值。在表单中,选择框的值来自数据库。

<?php include_once 'header.php';
$sql="SELECT uid,name FROM emitra_basic where block='$user'";
$result = $conn->query($sql);
//form validion
 if(isset($_POST['submit']))
   
  $eid =$_POST["eid"];
  if($eid=="blank")
 
     $flag=1;
  $idErr="please Select E-MITRA";
 
$miatm =trim($_POST["miatm"]);
 if(empty($miatm) || !preg_match("/^[a-zA-Z0-9 ]*$/",$miatm)) 
$flag=1;
 $miErr="Please Enter Valid Id";
 
 .............like this
if($flag==0)

$sqll="insert into **********";
  

//我的表格是

<form id="basic" method="post" name="basic"> 
<select class="select-style gender" name="eid">
        <option value="blank">Please Select E-MITRA ID</option>
        <?php
 while($row=mysqli_fetch_array($result))
 
?>
  <option value="<?php echo $row['uid']; ?>"><?php echo $row['uid']." (" . $row['name'] .")"; ?></option>
<?php
 
?>
</select>

    <p class="contact"><label for="bid">Micro-ATM Serial No</label></p> 
<input type="text" name="miatm" value ="<?php if (isset($miatm)) echo $miatm; ?>"    /> <?php echo $miErr; ?>

 <p class="contact"><label for="bid">Micro-ATM TID No</label></p> 
<input type="text" name="tid" value ="<?php if (isset($tid)) echo $tid; ?>" /> <?php echo $tiErr; ?>

   <input class="buttom" name="submit" id="submit"  value="Add Me" type="submit">    

看起来不错。但是当我尝试提交表单时,如果某个字段中的某些字段仍然为空,则它在选择框中显示空白值。 即使文本框为空,我如何在选择框中保持相同的选定值。

【问题讨论】:

php里面的前两行有没有??? 【参考方案1】:

表单提交后需要保留下拉框的值。

select option 的用户 selected 属性。

<?php
if (isset($_POST['submit'])) 
  $eid =$_POST["eid"];
  if ($eid=="blank") 
    $flag=1;
    $idErr="please Select E-MITRA";
  

$sql="SELECT uid,name FROM emitra_basic where block='$user'";
$result = $conn->query($sql);
?>
<select class="select-style gender" name="eid">
<option value="blank">Please Select E-MITRA ID</option>
<?php
while($row=mysqli_fetch_array($result)) 
  $selected = (isset($_POST["eid"]) && $_POST["eid"] == $row['uid']) ? 'selected="selected"' : '';
?>
  <option value="<?php echo $row['uid']; ?>" <?php echo $selected;?>><?php echo $row['uid']." (" . $row['name'] .")"; ?></option>
<?php
 
?>
</select>

【讨论】:

【参考方案2】:

您需要在您的选择标签中提交后使用selected=""selected="selected"作为属性为:

<?
$sql="SELECT uid,name FROM emitra_basic where block='$user'";
$result = $conn->query($sql);
?>
<select class="select-style gender" name="eid">
    <option value="blank">Please Select E-MITRA ID</option>
    <?php
    while($row=mysqli_fetch_array($result))
    
        $selected = ((isset($_POST["eid"]) && $_POST["eid"] == $row['uid']) ? 'selected=""' : '');
    ?>
    <option <?=$selected?> value="<?php echo $row['uid']; ?>"><?php echo $row['uid']." (" . $row['name'] .")"; ?></option>
    <?php
    
    if(isset($_POST['submit']))
    
        $eid = $_POST["eid"];
        if($eid=="blank")
        
           $flag=1;
           $idErr="please Select E-MITRA";
        
    ?>
</select>

旁注:

在你的问题中,两行不在 php 中,我希望这是类型错误。

【讨论】:

values 出现在选择框中,但如果我尝试在一个文本框为空的情况下提交,它会为空 @omnath:我想您在代码中使用了 结束标记?是吗?没有在你的代码中看到

以上是关于数据库驱动的选择框在提交时为空的主要内容,如果未能解决你的问题,请参考以下文章

首次提交表单时为空值

React native - 如果表单提交时为空,则突出显示 TextInput

AjaxOption 中的字符串参数在提交时为空,但在响应中显示

SQL Server:在{表达式}时为空,在{表达式}则为空的情况下选择情况

尝试发送 Post 方法请求时为空数据

流的乐趣,转换为实时数据时为空