2011-03-07 97 views
0

我有一个这样的形式:如何验证表单提交的PHP

<form method="post" action=""> 
<?php 
$h = mysql_query("select distinct sous_sous_categorie, sous_sous_categorie_url 
        from articles where sous_categorie_url='".$_GET["s_cat"]."' "); 
while($hRow=mysql_fetch_assoc($h)){ 
?> 
    <span class="submit"> 
    <input type="checkbox" name="<?php echo $hRow["sous_sous_categorie_url"]; ?>" 
    value="<?php echo $hRow["sous_sous_categorie_url"]; ?>" />&nbsp;&nbsp; 
    <a href="?categorie=<?php echo $_GET["categorie"]; ?>&s_cat=<?php echo $_GET["s_cat"]; ?>&s_s_cat=<?php echo $hRow["sous_sous_categorie_url"]; ?>"><?php echo $hRow["sous_sous_categorie"]; ?></a> 
    </span> 
<?php } ?> 
<input type="submit" name="submit_sous_sous_categorie_search" 
value="search" class="submit" /> 
</form> 

正如你所看到的形式是在一个循环中,形式包括复选框用户将检查和accoding这一个搜索查询会进行,事情是,复选框具有name属性,但这种属性是可变的(因为它是从数据库获取),所以我的问题是我怎么能做出这样的:

if(checkboxes are empty){ 
    echo "you must at least select one checkbox" 
} 

这只是一个例如,但我不知道如何做一个简单的事情,如

if(!$_POST["checkbox"]}{ 
    echo "you must at least select one checkbox"; 
} 

同样,因为复选框的名称是可变的。

name="checkboxes[<?php echo $hRow["sous_sous_categorie_url"]; ?>]" 

然后你可以使用这样的代码,以确保至少有一个被选中:

+0

只是JavaScript来验证的选项依赖? – 2011-03-07 00:49:37

+0

嗨,不,我想这只在php – tetris 2011-03-07 00:50:42

+1

'mysql_escape_real_string()'您的输入查询 – kjy112 2011-03-07 00:51:25

回答

4

您可以通过更改名称,让您的复选框到一个数组

$passed = false; 
if(isset($_POST['checkboxes']) && is_array($_POST['checkboxes'])) 
{ 
    foreach($_POST['checkboxes'] as $k => $v) 
    { 
     if($v) 
     { 
      $passed = true; 
      break; 
     } 
    } 
} 

if(! $passed) 
{ 
    echo "You must select at least one checkbox"; 
    exit(); 
} 

而且,你应该小心你的查询,你需要逃避,以防止SQL注入。在脚本

<!-- The brackets [] let PHP know you're passing in an array --> 
<input type="checkbox" name="categories[]" value="<?php echo $hRow["sous_sous_categorie_url"]; ?>" /> 

然后:

+0

+1,你打我。 – Jonah 2011-03-07 00:53:58

+0

好的,谢谢你会试试这个。 – tetris 2011-03-07 00:56:58

0

您可以从您的形式向PHP脚本传递数组

// $_POST['categories'] is an array when categories are checked. 
if (empty($_POST['categories'])) { 
    echo 'Please select a category.'; 
} else { 
    foreach ($_POST['categories'] as $url) { 
    // do something with $url 
    } 
}