у меня есть вывод из запроса
object(stdClass)#14 (6) {
["aid"]=>
string(2) "11"
["bid"]=>
string(2) "34"
["colorname"]=>
string(6) "Silver"
["colorgroupname"]=>
string(15) "LIGHT AQUA OPAL"
["colorcode"]=>
string(3) "6M8"
["brand"]=>
string(6) "Car"
}
но после цикла в foreach
complite code, что я использую, и я использую var_dump для вывода вывода. Я получаю одну строку, но после цикла я получаю 6 повторяющихся строк.
function ViewDBGridColorfinder($header,$DBG_control,$parameters)
{
$rows = $this->select_join_by(index_join_ColorFinder,TBL_COLOR,tbl_join_ColorFinder,where_by,order_by_dbgrid,$parameters);
$table = new Generator_Table($header);
//var_dump($rows);
if (is_array($rows) || is_object($rows))
{
foreach($rows as $val)
{
$DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
$table->addCell($DetailColor);
$table->addCell($rows->colorcode);
$table->addCell($rows->brand);
$table->addCell($rows->colorgroupname);
$table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));
}
}
$DBGrid_data = $table->generate();
return $DBGrid_data;
}
результат будет повторяющимся.
где ошибка?
Я думаю, что это будет только для вас
$DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
$table->addCell($DetailColor);
$table->addCell($rows->colorcode);
$table->addCell($rows->brand);
$table->addCell($rows->colorgroupname);
$table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));
Удалите foreach как.
Ваша $row
является объектом. Таким образом, вам действительно не нужно простаивать внутри объекта. Причина, по которой вы получаете 6 записей, состоит в том, что в вашем объекте есть шесть элементов.
Подсчитайте это и увидите, Есть 6 элементов (помощь, ставка, colorname, colorgroupname, colorcode, brand):
object(stdClass)#14 (6) {
["aid"]=>
string(2) "11"
["bid"]=>
string(2) "34"
["colorname"]=>
string(6) "Silver"
["colorgroupname"]=>
string(15) "LIGHT AQUA OPAL"
["colorcode"]=>
string(3) "6M8"
["brand"]=>
string(6) "Car"
}
Поэтому для каждого элемента он добавит ячейку. В PHP вы можете использовать ->
для доступа к элементам внутри объекта. Измените код таким образом:
if (is_array($rows) || is_object($rows))
{
$DetailColor = '<a href="#PopColor" onclick="showdetail('.$rows->bid.')" data-toggle="modal">'.$rows->colorname.'</a>';
$table->addCell($DetailColor);
$table->addCell($rows->colorcode);
$table->addCell($rows->brand);
$table->addCell($rows->colorgroupname);
$table->addCell(str_replace('onclick=""',"onclick=DelRow(".$rows->aid.")",$DBG_control));
}
Замените все $rows
на $val
в цикле foreach
Вы использовали переменную $ rows, а не $ val. Обновите код следующим образом:
foreach($rows as $val)
{
$DetailColor = '<a href="#PopColor" onclick="showdetail('.$val->bid.')" data-toggle="modal">'.$val->colorname.'</a>';
$table->addCell($DetailColor);
$table->addCell($val->colorcode);
$table->addCell($val->brand);
$table->addCell($val->colorgroupname);
$table->addCell(str_replace('onclick=""',"onclick=DelRow(".$val->aid.")",$DBG_control));
}
$rows
с$val
в вашем цикле. Но даже тогда код выглядит «удивительно».