我要做的是从MYSQL查询结果中填充一个HTML选择。
有两个文件,这是Food.php:
public function selectBrand()
{
// creating a database connection
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$query = $this->db_connection->query("SELECT DISTINCT brand_food FROM food;");
$result_row = $query->fetch_object();
echo $result_row->total;
}
这是products.hp:
<?php
// include the configs / constants for the database connection
require_once("model/db.php");
require_once("model/Food.php");
$brand = new Food();?>
<div class="panel-body">
<!-- Filter -->
<center>
<form method="post" action="index.php" name="filter_form">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon" style="box-shadow: 0 0 1px 1px darkgray;"><strong>Brand</strong></span>
<select id="filter_brand" class="form-control" name="brand" style="box-shadow: 0 0 1px 1px darkgray;" required >
<?php
foreach($brand as $brand->selectBrand()){
?>
<option value="<?php echo $brand ?>" ><?php echo $brand ?></option>
<?php } ?>
</select>
</div>
</div>
<input type="submit" name="Filter" value="Filter" class="btn btn-block btn-default"/>
</form>
</center>
<!-- /Filter -->
我以前做过它,但我有一段时间没有编码了。你能帮帮我吗?
您的代码有两个问题:
- 模型返回意外结果,应该是一系列品牌
- 为了呈现HTML输出,foreach循环语法不正确
型号:
public function selectBrand()
{
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$query = $this->db_connection->query("SELECT DISTINCT brand_food FROM food;");
$brands = array();
while($obj = $query->fetch_object()){ //fetch each object by while loop
array_push($brands, $obj->brand_food); //push the value into $brands
}
return $brands; //return the array
}
对于视图(渲染):
<?php foreach($brand->selectBrand() as $brand){ ?>
<option value="<?php echo $brand ?>" ><?php echo $brand ?></option>
<?php } ?>
这应该能在中工作
public function selectBrand()
{
// creating a database connection
$this->db_connection = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
$query = $this->db_connection->query("SELECT DISTINCT brand_food FROM food;");
$result_row = $query->fetch_object();
return $result_row->brand_food;
}
<?php foreach($brand->selectBrand() as $brand){ ?>
<option value="<?php echo $brand ?>" ><?php echo $brand ?></option>
<?php } ?>
使用foreach的方式不对,请尝试以下代码。我认为你们的品牌是阵列。
<?php
foreach($brand->selectBrand() as $select){
?>
<option value="<?php echo $select; ?>" ><?php echo $select; ?></option>
<?php } ?>