2016-02-19 2 views
1

У меня есть форма с несколькими флажками. Я хочу разрешить пользователю выбирать по крайней мере 1 в каждом поле флажка, если пользователь не проверяет какие-либо параметры в этом флажке, появится сообщение «Вы должны выбрать хотя бы один». Как мне это сделать? У меня есть здесь некоторые из моих кодов:PHP обязательное поле поля

<div> 
    <div><span class="font-2">Categories:</span></div> 
</div> 

<div class = "addinfo"> 
    <?php $categories = array('Breakfast', 'Lunch', 'Dinner', 'Snack', 'Grill', 'Buffet', 'Fast Food'); 
      $values = explode(',' , $row['categories']); 
    ?> 

    <?php foreach($categories as $category) { 
     $cat=''; 
     foreach($values as $value){ 
     if($value == $category){ 
     $cat ="checked";  
    } 

    ?> 
    <input <?php echo $cat ?> type="checkbox" name="category[]" value="<?php echo $category?>"><?php echo $category?><br> 
    <?php } 
    }?> 
</div> 

форма

<form method = "POST" action = "<?php echo base_url().'/index.php/AdminController/operation'?>"> 

AdminController

public function addResto(){ 
    $this->load->model('AdminModel'); 
    $this->AdminModel->insert(); 
    $this->getRestos(); 
} 
public function operation(){ 

    if(isset($_POST['btn'])){ 
     if(empty($_POST['id'])){ 
      $this->addResto(); 
     } 
     else{ 
      $this->updatingResto(); 
     } 
    } 
} 
public function updateResto($id){ 
    $this->load->model('AdminModel'); 
    $restaurantinfo['restaurantinfo']=$this->AdminModel->getResto($id); 
    $this->load->view('admin/UpdateRestoPage',$restaurantinfo); 
} 

public function updatePage(){ 
    $this->load->view('admin/UpdateRestoPage'); 
} 

public function updatingResto(){ 
    $id = $_POST['id']; 
    $this->load->model('AdminModel'); 
    $this->AdminModel->update($id); 

} 
+0

использование PHP или JavaScript валидаций –

+0

вы можете помочь мне с этим ? пожалуйста? – QueenR

+0

@QueenR вы отправляете его через форму? – roullie

ответ

0

Вы должны также проверить, есть ли в checkbox, проверяется

public function operation(){ 
    if(isset($_POST['btn'])){ 
     if(empty($_POST['category'])){ 
      $this->load->view('YOUR_VIEW_FILE',array('error'=>'category')); 
     }else if(empty($_POST['id'])){ 
      $this->addResto(); 
     } 
     else{ 
      $this->updatingResto(); 
     } 
    } 
} 

файл view добавить условие

<?php 
    if(!empty($error) && $error=="category"){ 
?> 
    <script>alert("You have to select at least one.");</script> 
<?php 
    } 
?> 
+0

Может ли сообщение «Вы должны выбрать хотя бы один». быть всплывающим или предупреждающим сообщением? Я пробовал ваш код, но после нажатия кнопки «Добавить» он переходит на страницу, отображающую только сообщение. – QueenR

+0

да, конечно. вместо 'die (....' загружать ваше представление с ссылкой, что есть ошибка – roullie

+0

Как это сделать? Извините. Я не программист.:/ – QueenR

0

Добавить проверку в вашей называется PHP

<?php 
    $checked = false; 
    foreach($_POST["category"] as $key) { 
     if(!empty($key)) { 
      $checked = true; 
     } 
    } 

    if(!$checked) { 
     echo "<script>"; 
     echo "alert('You have to select at least one.');"; 
     echo "history.back();"; 
     echo "</script>"; 
     exit(); 
    } 
?> 
+0

Я получаю эту ошибку: Сообщение: Неверный аргумент, предоставленный foreach() – QueenR

+0

Вы добавили подтверждение в правильное место? –

+0

Если нет, добавьте это подтверждение ниже 'public function operation() {' –

0

в контроллерах использования функции работы

if (isset($_POST['mycheckbox'])) { 
    echo "checked!"; 
} esle { 
    //send again with error message 
} 
0

Используя эту проверку в JavaScript: $("input:checkbox[name='a']:checked").length == 0

Пример:

HTML code: 
    <from name='frm1' method='' action='POST'> 
     <label>Favorites:</label> 
     <span>sports</span><input type="checkbox" name="fav" value="1"/> 
     <span>music</span> <input type="checkbox" name="fav" value="2"/> 
     <span>reading</span> <input type="checkbox" name="fav" value="3"/> 
     <input type="button" value="validate"> 
    </form> 

Javascript code: 
    function validate() { 
     //replace with your own code here 
     if ($('input:checkbox[name="fav"]:checked').length == 0) { 
      alert("You have to select at least one."); 
     } 
    } 
    $("input[type='button']").click(validate) 

Это лишь простой пример, чтобы продемонстрировать использование :check селектора (JQuery), вам необходимо изменения и встроить его в свой проект!

0

попытаться добавить это в HTML-код:

<script type="text/javascript"> 
function check() { 
    var inputs = document.querySelectorAll("input[type='checkbox']"); 
    for(var i = 0; i < inputs.length; i++) { 
     if (inputs[i].checked) { 
      return true; 
     } 
    } 
    alert("You have to select at least one."); 
    return false; 
} 
</script> 

Это один будет показывать ошибку до обновления страницы. И добавить что-то вроде этого в вашем HTML:

<input type = "button" onclick = "check();"> 

UPDATE: попробуйте заменить свой код с этим.

<div> 
    <div><span class="font-2">Categories:</span></div> 
</div> 
<script type="text/javascript"> 
    function check() { 
     var inputs = document.querySelectorAll("input[type='checkbox']"); 
     for(var i = 0; i < inputs.length; i++) { 
      if (inputs[i].checked) { 
       return true; 
      } 
     } 
     alert("You have to select at least one."); 
     return false; 
    } 
</script> 
<div class = "addinfo"> 
    <?php $categories = array('Breakfast', 'Lunch', 'Dinner', 'Snack', 'Grill', 'Buffet', 'Fast Food'); 
      $values = explode(',' , $row['categories']); 
    ?> 

    <?php foreach($categories as $category) { 
     $cat=''; 
     foreach($values as $value){ 
     if($value == $category){ 
     $cat ="checked";  
    } 

    ?> 
    <input <?php echo $cat ?> type="checkbox" name="category[]" value="<?php echo $category?>"><?php echo $category?><br> 
    <?php } 
    }?> 
    <input type = "button" onclick = "check();"> 
</div> 
+0

не работает. :( – QueenR

+0

Я обновляю свой ответ любезно проверяю[email protected] – JanLeeYu

Смежные вопросы