динамический ввод имен с использованием php for loop - PullRequest
1 голос
/ 21 июля 2011

я получил количество текстовых полей, которые будут заполнены именем из базы данных.

я создаю 5 текстовых входов, используя для .. loop

for($i=1; $i<=5; $i++) {
  echo '<input type="text" value="">';
} 

У меня вопрос, как мне динамически вводить имена для каждого текстового поля?

я пробовал:

$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");  

for($i=1; $i<=5; $i++) {
    while($r = $q->fetch_assoc()) {
        echo '<input type="text" value="'.$r['att_name'].'">';
    }
} 

если в базе данных есть 3 имени, будет отображаться только 3 вместо 5 текстовых полей? я хочу, чтобы он отображал все текстовые поля, даже если остальные текстовые поля будут пустыми.

sample textboxes
1. names
2. names
3. names
4. ------
5. ------

Ответы [ 3 ]

2 голосов
/ 21 июля 2011

удалить внутренний цикл while.

$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");  

for($i=1; $i<=5; $i++) {
    $r = $q->fetch_assoc();
    echo '<input type="text" value="'.isset($r['att_name'])?$r['att_name']:''.'">';
}

конечно, лучше проверить количество возвращаемых строк и не вызывать fetch_assoc () после того, как вы отобразили 3 строки, просто выведите следующие 2

1 голос
/ 21 июля 2011

Не всегда большой поклонник использования функции, возвращающей и устанавливающей переменную внутри оператора if, но это должно делать то, что вы хотите:

$q = $db->query("SELECT * FROM att WHERE id_bs_res='$id_bs_res'");  

for($i=1; $i<=5; $i++) {
    if($r = $q->fetch_assoc()) {
        echo '<input type="text" value="'.$r['att_name'].'">';
    } else {
        echo '<input type="text" value="">';
    }
} 

В принципе, если есть допустимая строка, она будет отображатьполе ввода с правильными значениями, если его нет, просто отобразится пустое поле.

0 голосов
/ 21 июля 2011

Может быть, вы можете использовать это: http://php.net/manual/en/control-structures.foreach.php Я думаю, что это решает все твои проблемы :) (если я прав)

О, и я не понимаю, ты последний вопрос? Вы хотите показать по крайней мере 5 ящиков, даже когда есть только 3 имени? Или нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...