2017-02-21 2 views
1

내 코드에서 여러 항목을 선택 했으므로 사용자가 주어진 목록을 선택하지 않고 제출 단추를 클릭하면 유효성 검사를 수행해야합니다. ,PHP를 사용하는 multiselect에 대한 유효성 검사

<?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"목록 중 하나를 선택하지 않고 제출 '버튼을 클릭 할 때이다 달성하고 싶었다 무엇

의 index.php : 다음은 샘플 코드입니다 "이 입력란은 필수입니다. 적어도 하나를 선택하십시오."라는 오류 메시지가 표시됩니다. 사실 나는 이미 체크 박스를 사용할 때 이미이 작업을 수행했습니다.

샘플 코드 :

<?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; 
} 
을 시도 나는 레이블 태그 다음에 아래의 코드를 배치