2015-04-21 31 views
2

我想要它,所以如果复选框为NULL或0,它不是一个喜欢它会是如果值是一个。 另外,有没有办法将选中的方框限制为10?复选框为空意味着它不是,复选框检查是1

当前代码:

if(isset($_POST['submit'])){//to run PHP script on submit 
    if(!empty($_POST'favorites')){ 
    // Loop to store and display values of individual checked checkbox. 
     foreach($_POST['favorites[]'] as $selected){ 
      $query= "UPDATE u_collection SET fav = 0 WHERE username ='".$username."'"; 
      mysqli_query($db,$query); 
     } 
    } 
} 

foreach($gems as $i){ 
    echo '<tr> 
    <th>'.$i->name.'</th> 
    <th><form action="collection.php" method="post"> 
    <input type="checkbox"'; 
    if($i -> fav){ 
     echo 'checked = "checked"';   
    } 
    echo 'name="favorites[]" value='.$i->name.'></th></tr></form>'; 
} 
?> 
<th> 
<input type='submit' name='submit' value='Submit'/> 
</form> 
+0

'$ i - > fav'是一个字符串吗?你可以在$ gems循环之外创建一个计数器变量,然后在每个“if($ i - > fav){”符合。你的'$ username'看起来好像可能会让你注入SQL。 – chris85

+0

对不起,也许我太累了,但我很难遵循你的意思(尽管听起来合乎逻辑!)。你能告诉我一个例子吗?也许这可以帮助我一点。 – icoder

+0

如何获得复选框的值应该是这条线附近的错误if(!empty($ _ POST'favorites')){'它一定是'if(!empty($ _ POST ['favorites'])) {' – Noman

回答

0

要检查它是否是NULL,否则为0 1 I将使用空()函数

foreach($gems as $i){ 
    echo '<tr> 
    <th>'.$i->name.'</th> 
    <th><form action="collection.php" method="post"> 
    <input type="checkbox"'; 
    if(!empty($i->fav)){ 
     echo ' checked = "checked" ';   
    } 
    echo 'name="favorites[]" value='.$i->name.'></th></tr></form>'; 
} 

要限制其检查,以10的盒,我将使用JavaScript(jQuery),如下所示:

<script src="http://code.jquery.com/jquery-1.11.2.min.js"></script> 
<script> 
    $('form input[type=checkbox]').on('click', function(){ 
     if ($('form input[type=checkbox]:checked').length > 10) 
     { 
      $(this).removeAttr('checked'); 
      alert('You are only allowed to select 10 checkboxes'); 
     } 
    }); 
</script>