2011-12-02 1 views
0

こんにちはすべて:私は配列を作成するのが初めてで、アイテムのリストを保持し、それをページに複数回印刷する変数を作成しようとしています。以下は私が試みたPHPであり、その下には同じSELECTリストをページに複数回表示するHTMLがあります。 SELECTリストの最初の項目のみをリストします。その他の変更により、SELECTリストにデータベースの項目の完全なリストが作成されましたが、ページ上のこの変数への他の呼び出しは失敗します。リストが何度もページに表示されるアイテムを格納するPHP変数?

このSELECTリストを保持する変数を取得してページに複数回印刷できるようにするにはどうすればよいですか?

<?php 
    $catresult = mysql_query("SELECT * FROM Classes WHERE FK_UserID=$_SESSION[user_id] ORDER BY ClassName"); 
    $dataset = array(); 
    while($row = mysql_fetch_array($catresult)) { 
      $dataset = '<option value="' . $row['ClassID'] . '">' . $row['ClassName'] . '</option>'; 
     } 
    ?> 

    <!-- HTML below --> 

    Paragraph 1 content... 
    <select name="FK_ClassID" /><option value="">Class</option><?php echo $dataset; ?></select> 

    Paragraph 2 content... 
    <select name="FK_ClassID" /><option value="">Class</option><?php echo $dataset; ?></select> 

    Paragraph 3 content... 
    <select name="FK_ClassID" /><option value="">Class</option><?php echo $dataset; ?></select> 

答えて

0

$dataset = '';に変更することを確認してください:

何がやっていることは、配列を必要としません。あなたが望むのは、$datasetにすべてのオプションを含む1つの長い文字列を含めることです。したがって、$dataset = array();の代わりに$dataset = '';を使用してください。

さらに、=記号は、その前に変数にあったものを上書きします。あなたはそれを望んでいません。新しい文字列を古い文字列に連結(追加)したいとします。そのためには.=を使用します。

だから、一緒にすべてを結びつけるために:

<?php 
    $catresult = mysql_query("SELECT * FROM Classes WHERE FK_UserID=$_SESSION[user_id] ORDER BY ClassName"); 

    $dataset = ''; 

    while($row = mysql_fetch_array($catresult)) 
    { 
     $dataset .= '<option value="' . $row['ClassID'] . '">' . $row['ClassName'] . '</option>'; 
    } 
?> 
0

最初に、$datasetを空の文字列で初期化します。その後、whileループで。=(=の代わりに)を使用して、<option>$datasetに追加します。

0

ループでは、変数を追加するか、配列要素を追加するのではなく、$dataset変数を再割り当てしています(コードでは、実行したいコードがわかりません)。文字列として追加する場合は$dataset .= ...を使用するか、配列として保持する場合は$dataset[] = ...を使用してください。あなたは、文字列のルートを行くことを希望している場合は

、あなたはただ、他の人がすでに指摘されているものを明確にするために$dataset = array()

関連する問題