Estoy tratando de enviar un valor de formulario en una base de datos con php. En forma, un valor de cuadro de selección proviene de la base de datos.

<?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 **********";
  }

// mi forma es

<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">    

Parece que está bien. Pero cuando intenté enviar el formulario, si alguno de los campos permanece vacío, se muestra el valor en blanco en el cuadro de selección. ¿Cómo puedo mantener el mismo valor seleccionado en el cuadro de selección incluso si el cuadro de texto permanece vacío?

2
omnath 28 ene. 2016 a las 13:58

2 respuestas

La mejor respuesta

Debe conservar el valor del menú desplegable después de enviar el formulario.

El usuario seleccionó el atributo de select option.

<?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>
1
Pupil 28 ene. 2016 a las 11:02

Debe usar selected="" o selected="selected" después del envío en su etiqueta de selección como atributo como:

<?
$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>

Nota al margen:

En su pregunta es que dos líneas no están dentro del php, espero que este sea un error de tipo.

1
devpro 28 ene. 2016 a las 11:08