我正在使用PHP和MySQL,我想从db中检索一些数据到一个select html标签。
我做的是:
<select class='form-control select2' name='product_cat' style='width: 100%;'>
".get_cats()."
</select>
函数get_cats
是这样的:
function get_cats(){
$get_cats = "select * from categories";
$run_cats = mysqli_query($GLOBALS['con'],$get_cats);
$return = '';
while($row_cats = mysqli_fetch_array($run_cats)){
$cat_id = $row_cats['cat_id'];
$table_id = $row_cats['table_id'];
$cat_title = $row_cats['cat_title'];
$totalNumberOfProductsQuery = "SELECT * FROM products WHERE product_cat = '" . $cat_id. "'";
$catsProducts = mysqli_query($GLOBALS['con'], $totalNumberOfProductsQuery);
if (!$catsProducts) {
die(mysqli_error($GLOBALS['con']));
}
$totalProductsForCats = mysqli_num_rows($catsProducts);
echo "
<option value='$cat_id'>$cat_title</option>
";
}
}
它只是正确地从数据库中获取数据,但问题是,它以这种方式打印出来:
虽然“产品类别”字段为空,但选择标记的选项在表单字段中上升。
我想这个问题是因为我在函数中使用的while()
语句。
使用其他命令执行此功能的替代方法是什么?如何在此功能中正确放置选项列表?
感谢。
答案 0 :(得分:1)
问题很可能是您输出内容的方式。当你把...
<select class='form-control select2' name='product_cat' style='width: 100%;'>
".get_cats()."
</select>
您期望发生的是您将获取get_cats()
的返回值并将其插入HTML。但是在get_cats()
函数中,你没有返回值 - 你随着时间的推移回应了这些值。可能会发生这种情况,而不是像你期望的那样加入而不是像你一样可以从你的输出中看到)。相反,你应该建立一个字符串并将完整的HTML返回给调用代码,这样就可以将它回显出来......
function get_cats(){
$get_cats = "select * from categories";
$run_cats = mysqli_query($GLOBALS['con'],$get_cats);
$return = '';
while($row_cats = mysqli_fetch_array($run_cats)){
$cat_id = $row_cats['cat_id'];
$table_id = $row_cats['table_id'];
$cat_title = $row_cats['cat_title'];
$totalNumberOfProductsQuery = "SELECT * FROM products WHERE product_cat = '" . $cat_id. "'";
$catsProducts = mysqli_query($GLOBALS['con'], $totalNumberOfProductsQuery);
if (!$catsProducts) {
die(mysqli_error($GLOBALS['con']));
}
$totalProductsForCats = mysqli_num_rows($catsProducts);
// Build up HTML
$return .= "
<option value='$cat_id'>$cat_title</option>
";
}
return $return;
}
其他一些事情。
$GLOBALS['con']
,传递连接到。{
功能,这是这样做的首选方法。答案 1 :(得分:0)
简单回答:将生成的代码写入字符串,并在函数末尾返回。进一步回应你的功能。然后它会工作。