数字值..
$price = $_POST['price'];
$zipcode = $_POST['zipcode'];
如何过滤通过名为category_id的单个选择标记字段的两个字段,该字段使用explode()从此category_id字段中接收值。
表格
<?php echo '<label for="Category">Category:</label>
<select name="category_id" size="1" ><br />';
$sql = "SELECT id, name FROM category ORDER BY name";
$rs = mysql_query($sql);
while($row = mysql_fetch_array($rs))
{
echo "<option value=\"".$row['name']."$".$row['id']."\">".$row['name']."</option>\n ";
}
echo '</select>';
我收到带爆炸的category_id字段但不知道如何过滤它的方式,因为它同时是一个数字和数据字段。
$option = explode("$", $_POST['category_id']);
enter code here
答案 0 :(得分:0)
您是否只是尝试从已发布的$
分隔的category_id
字段中检索类别名称和ID?
如果是这样,那就应该这样做
$option = explode("$", $_POST['category_id']);
$name = $option[0];
$id = $option[1];
我更倾向于在<option>
value
属性中设置ID,并从数据库或预先获取的关联数组中获取名称。
如果您想要验证该字段,可以尝试类似
的内容if (!preg_match('/^[a-zA-Z0-9]+\$\d+$/', $_POST['category_id'])) {
// not valid
}
我不会尝试过滤掉该字段上的无效字符。验证和错误条件更简洁。
答案 1 :(得分:0)
不确定,如果我找到你的话。如果您尝试使用您的技术从同一个选择框中接收产品的名称和ID
echo "<option value=\"".$row['name']."$".$row['id']."\">".$row['name']."</option>\n ";
将此行更改为此行。只需将$
替换为“_”即可简化
echo "<option value=\"".$row['name']."_".$row['id']."\">".$row['name']."</option>\n ";
然后在处理它时
$category_id = $_POST['category_id'];
$carr = explode("_",$category_id);
$category = $carr[0];
$id = $carr[1];
//now verify them
if((int)$id>0) { //id is valid number
// and so on