2017-02-21 2 views
1

У меня есть множественный выбор в моем коде, мне нужно сделать проверку, когда пользователь нажимает кнопку отправки без выбора какого-либо из данного списка. Вот пример кода:Валидация для multiselect с использованием PHP

index.php

<?php 
IF(isset($_POST['Rtype'])){ 
$RetrieveType = $_POST['Rtype']; 
    IF($RetrieveType == 'date_range'){ 
     $start_date = new DateTime($_POST['start_date']); 
     $sd = date_format($start_date,'Y-m-d'); 
     $p_week=array(); 
     $m_month=01; 
     $end_date = new DateTime($_POST['end_date']); 
     $end_date-> add(new DateInterval('P1D')); 
     $ed =date_format($end_date,'Y-m-d'); 
} 
    ELSEIF($RetrieveType == 'weekly'){ 
     $p_week = $_POST['week']; 
     $m_week = implode(',',$p_week); 
     $m_month =$_POST['month_m']; 
     $m_year =$_POST['year_m']; 
     $p_lob = $_POST['lob']; 
     $sc_lob=implode(',',$p_lob); 
} ELSE 
{ 
    $RetrieveType = 'date_range'; 
     $sd = date('Y-m-01'); 
     $start_date = date('Y-m-01'); 
     $ed = date('Y-m-d'); 
     $end_date = date('Y-m-d'); 
     $m_month=date ('m'); 
     $p_week=array(); 
     $m_year= date ('Y'); 
     $sc_lob=''; 
} 
?> 
<html> 
<head> 
<head> 
<body> 
<form action="index.php" method="POST" class="form-inline"> 
    <label for="sel1">Week:</label> 
    <select data-placeholder="<?php echo (isset($_POST['week']) ? "Week/s Currently Selected: ".implode(",",$_POST['week']) : "Select Week"); ?>" 
         class="chosen-select" multiple tabindex="4" style="width:350px;" name= "week[]"> 
         <option value="1" id="empty">Week 1</option> 
         <option value="2" id="empty">Week 2</option> 
         <option value="3" id="empty">Week 3</option> 
         <option value="4" id="empty">Week 4</option> 
         <option value="5" id="empty">Week 5</option> 
         </select> 
    <label for="sel1">LOB:</label> 
    <select data-placeholder="<?php echo (isset($_POST['lob']) ? "LOB/s Currently Selected: ".implode(",",$_POST['lob']) : "Select LOB"); ?>" 
         class="chosen-select" multiple tabindex="4" style="width:350px;" name= "lob[]"> 
         <?php 
          $lob = array(); 
          $q = "SELECT distinct LOB from roster where EmployStatus='active' and SDLead <> '' group by LOB"; 
            $params = array(); 
            $query = sqlsrv_query($conn, $q); 

            while($rowsss= sqlsrv_fetch_array($query)) { 
            $lob = $rowsss['LOB']; 
             echo "<option value='".$lob."'>".$lob."</option>"; 
            } 
          for ($i = 0; $i <= count($lob) - 1; $i++) { 

           IF($sc_lob == $lob[$i]) 
           {$isSelected = 'selected';} 
           elseif(1==1) 
           {$isSelected='';} 
           echo "<option ".$isSelected." value='".$lob[$i]."'>".$lob[$i]."</option>";      } 

          ?> 
        <input type="hidden" name="Rtype" value="weekly"> 
        <input class="btn btn-primary" type="submit" /> 
    </form> 

То, что я хотел добиться, когда пользователь нажал кнопку отправки, не выбрав любой из списка «Неделя» или в списке «LOB», появится сообщение об ошибке, в котором говорится: «Это поле требуется, выберите хотя бы один». На самом деле я уже делал это раньше, когда я просто использую флажок. Я поставил следующий код после маркирующие:

Пример кода:

<?php 
          if(isset($_GET['err'])) 
          { 
           $err = $_GET['err']; 
           if($err == 1) 
           { 
            echo "<span class='text-danger'>* This field is required, select at least one.</span>"; 
           } 
           else 
           { 
            echo ""; 
           } 
          } 
          else 
          { 
           echo ""; 
          } 
?> 

ответ

0

Попробуйте

if(isset($_POST['submit']){ 
    errors = 0; 
    if($_POST['nameOfSelect'] == ""){ 
     errors++; 
    } 

    if(errors == 0){ 
    return true; 
    }else{ 
    return false; 
} 
Смежные вопросы