2011-07-21 9 views
1

iveデータベースの名前で記入されるテキストボックス数を取得しました。php for loopを使用して名前を動的に入力する

は、私は私の質問は、私は、動的に各テキストボックスに名前を入力してくださいどのようにループ

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

...のために使用して、5 textinputsを作成します。

私が試した:

$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名がデータベースに存在する場合、それが唯一の代わりに5つのテキストボックスの3が表示されますか? 残りのテキストボックスが空白になっても、すべてのテキストボックスを表示します。

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

答えて

2

inner 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

+0

ありがとうございます!それは簡単に笑に見えます。それは決して考えなかった:) – tonoslfx

0

たぶん、あなたはこれを使用することができます:http://php.net/manual/en/control-structures.foreach.php は、私は(私は正しいんだ場合)それはすべてのyoureの問題を:)解決だと思う

ああ、私はyoureのに最後の質問を理解していませんか?名前が3つしかない場合でも、少なくとも5つのボックスを表示しますか?か否か?

1

は必ずしも使用しての大ファン関数が戻ると、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

これはダルハザーの答えと事実上同じだが、ちょうど三成分を使わずに –

+0

クリスに感謝する! :) – tonoslfx

関連する問題