2013-07-02 4 views
0

Мне было интересно, может ли кто-нибудь помочь мне. Я хочу выполнить итерацию через ассоциативный массив и поместить результаты в две комбинированные поля. В комбинированных боксах будут одинаковые данные.PHP - Итерация через ассоциативный массив результатов db

while ($this->results = $this->dbhandle->fetch(PDO::Fetch_Assoc)) 
{ 
    echo "<option value='" . $this->result['id] . "'>" 
       . $this->result['name'] . "</option>"; 
} 

Должен ли я запустить этот цикл в два раз для 2 отдельного Наримера или есть более эффективный способ сделать это?

+0

Использовать переменную сбора вместо эхо-сигнала HTML. –

ответ

2

Ваш лучший выбор в этой ситуации - просто аккумулировать текст в string и повторить его дважды.

$options = ""; 
while ($this->results = $this->dbhandle->fetch(PDO::Fetch_Assoc)) 
{ 
    $options.= "<option value='" . $this->result['id] . "'>" 
       . $this->result['name'] . "</option>"; 
} 

echo "<select name='combo1'>".$options."</select>"; 
echo "<select name='combo2'>".$options."</select>"; 
+0

Спасибо, я чувствую, что мне нужно думать об этом самостоятельно. Я ценю реакцию каждого. – Ralph

0

Как о чем-то вроде этого (сырье кода, чтобы дать вам идею):

while 
{ 
    $combo_options .= "<option>" ....// rest of your code 
} 

Затем напечатать переменную внутри вашего выбирает:

<select id="combo1"><?=$combo_options?></select> 
<select id="combo2"><?=$combo_options?></select> 
0

Вы можете захватить вывод в качестве переменной и затем эхо-сигнал по мере необходимости

while ($this->results = $this->dbhandle->fetch(PDO::FetchAssoc)){ 
    $output .= "<option value='" . $this->result['id'] . "'>" . $this->result['name'] . "</option>"; 
} 

/// later on in your script 

print $output; 
+1

Думаете, вы хотите добавить к $ output вместо того, чтобы перезаписывать каждый раз – Orangepill

Смежные вопросы