То, что я пытаюсь сделать, - заполнить выбор HTML из результата запроса MYSQL.
Есть два файла, это 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;
}
И это product.php:
<?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 -->
Я заработал это раньше, но некоторое время я не кодировал код. Не могли бы вы мне помочь?
У вашего кода есть 2 проблемы:
Для модели:
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 } ?>
Неправильно вы используете foreach, попробуйте выполнить код. я аспект, что ваш бренд - это массивы.
<?php
foreach($brand->selectBrand() as $select){
?>
<option value="<?php echo $select; ?>" ><?php echo $select; ?></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 } ?>
selectBrand
, и it should be
$ result_row-> brand_food , because there's no
запросе , because there's no
столбца total`.
selectBrand
ничего не возвращает. Я предполагаю, что вы должны создать массив внутри него, затем$query->fetch_object()
цикл, присваивая$query->fetch_object()
каждому индексу массива, а затем возвращать его.