2016-04-22 3 views
2

同じクエリで4つの選択肢が設定されていますが、1番目の選択肢のみが入力され、後続のものは入力されません。事実、それが2番目の選択に達すると、page_load()は停止します。

質問:
1)page_loadを停止させる要因は何ですか?

2)同じデータを返すために複数のDB呼び出しを行う必要がないように、コードを再利用する方法はありますか?ここで1回目のDBコールで返されるデータ

は私の構文は次のとおりです。

<div id="OrderInfo" runat="server"> 
<table id="orderinginfo"> 
<tr> 
<td> 
    <label for="labelselect">Choose an Item</label> 
    <select> 
     <option value="null" selected="selected"></option> 
     <?php 
      include 'phpquery.php'; 
      $sql = "Select item from items"; 
      echo get_items($sql); 
     ?> 
    </select>     
</td> 
</tr> 
<tr> 
<td> 
    <label for="labelselect1">Choose an Item:</label> 
    <select> 
     <option value="null" selected="selected"></option> 
     <?php 
      include 'phpquery.php'; 
      $sql = "Select item from items"; 
      echo get_items($sql); 
     ?> 
    </select>     
</td> 
</tr> 
</table> 
</div> 

<?php 
function get_items($sql) { 
    $servername = "localhost"; 
    $username = "user"; 
    $password = "pass"; 
    $dbname = "database"; 
    $conn = new mysqli($servername, $username, $password, $dbname); 
    if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) 
    { 
    while($row = $result->fetch_assoc()) { echo "<option value=".$row['item'].">".$row['item']."</option><br>"; } 
    } 
    else echo "<option value='null'>default</option>"; 
    $conn->close(); 
} 
?> 

答えて

0

あなたはphpquery.phpで任意の関数やクラスを再定義しています。このような関数やクラスを再定義しようとすると、PHPは異常終了します。ファイルphpquery.phpを一度含めてから、関数get_itemsを実行してください。 include_onceまたはrequire_onceを使用できます。

require_once()およびinclude_once()ステートメントを使用して、呼び出されたファイルを複数回含める必要がある場合は、phpファイルを別のファイルに含めることができます。ファイルがすでにインクルードされていることが判明した場合、scriptを呼び出すことでそれ以上のインクルージョンは無視されます。

+0

includeステートメントは、.phpファイルのどこにでも追加できますか、または呼び出し元プロシージャのすぐ上で使用する必要がありますか? –

+0

関数 'get_items'は' phpquery.php'の中にありますか? –

+0

はい、私の関数get_itemsはphpquery.phpの中にあります –

関連する問題