2017-11-22 7 views
1

私のページの下にいくつかの結果を表示しています。しかし、私は同じページの下で2回同じ結果を得ようとしているが、それは望ましい方法では表示されていない。私は関数ファイルをインクルードし、関数を最初に呼び出しました。それから私は同じ結果を2回表示しようとしました。しかし、最初の結果だけが表示され、2番目の結果は表示されません。コードは次のとおりです。mysqli_fetch_assocを使用して同じ結果を2回表示できないのはなぜですか?

require 'functions.php'; 
$query_result=select_all_published_category(); 

<div class="control-group"> 
     <label class="control-label">Parent Category Name</label> 
     <div class="controls"> 
      <select name="category_id"> 

       <?php while($cat_info=mysqli_fetch_assoc($query_result)) {?> 
       <option value="<?php echo $cat_info['category_id']; ?>"><?php echo $cat_info['category_name']; ?></option> 
       <?php }?> 

      </select> 
     </div> 
</div> 

<div class="control-group"> 
     <label class="control-label">Parent Category Name 2</label> 
     <div class="controls"> 
      <select name="category_id2"> 

       <?php while($cat_info_two=mysqli_fetch_assoc($query_result)) {?> 
       <option value="<?php echo $cat_info_two['category_id']; ?>"><?php echo $cat_info_two['category_name']; ?></option> 
       <?php }?> 

      </select> 
     </div> 
</div> 

誰でもお手伝いできますか?ありがとう

+2

'mysqli_fetch_assoc'が実際に(それが削除され、それを消費し、結果から行をフェッチ結果から、あなたは無限ループなしで 'while'を実行できます)。ループの最後では、結果は空です。同じことを2回表示したい場合は、前に変数内で独自のループでHTMLを構築し、varを表示して2回表示することができます – Kaddath

答えて

1

: -

は、アレイ内の各キーが 結果セットの列の一つまたはNULLの名前を表す結果セットにフェッチされた行 を表す文字列の連想配列を返し 結果セットにそれ以上行がない場合

したがって、最初の繰り返し(while)の後は空です.2番目の反復を直接行うことはできません。

変数を最初に作成し、その変数にすべてのデータを割り当て、あなたが好きなだけの時間、それを使用する: -

<?php 
require 'functions.php'; 
$query_result=select_all_published_category(); 
$category = []; //create array 
while($cat_info=mysqli_fetch_assoc($query_result)) { 
    $category[] = $cat_info; //assign whole values to array 
} 
?> 

<div class="control-group"> 
     <label class="control-label">Parent Category Name</label> 
     <div class="controls"> 
      <select name="category_id"> 

       <?php foreach($category as $cat){?> 
        <option value="<?php echo $cat['category_id']; ?>"><?php echo $cat['category_name']; ?></option> 
       <?php }?> 

      </select> 
     </div> 
</div> 

<div class="control-group"> 
     <label class="control-label">Parent Category Name 2</label> 
     <div class="controls"> 
      <select name="category_id2"> 
       <?php foreach($category as $cat){?> 
        <option value="<?php echo $cat['category_id']; ?>"><?php echo $cat['category_name']; ?></option> 
       <?php }?> 
      </select> 
     </div> 
</div> 
+0

ありがとうございました。助けになる。しかし、category_idで$ cat_info ['category_name']を取ってループ内に表示してカテゴリ名を表示するにはどうすればいいですか? – Gamer

+1

@Gamer遅れて申し訳ありません。私は自分のコードを更新しました。今すぐチェックしてください(ループとforeachループが変化しているのを確認してください) –

+0

ありがとうございます!あなたはちょうど私の時間を節約し、私の問題を解決しました。だから私はいつもSTACKOVERFLOWが大好きです – Gamer

0

mysqli_fetch_assoc in the manualの説明を見てください;

結果セット内のフェッチされた行を表す連想配列を返します。配列の各キーは結果セットの列の名前を表し、NULLは結果セットにそれ以上行がない場合はNULLです。あなたはそれの上に第2の時間を移動しようとすると

は、あなたは最後にすでにあるので、それだけでNULLを返します。あなたが設定できるようになる結果

で任意の行にポインタを移動する... -

mysqli_data_seek()


あなたはそのページの下読み続ける場合は、表示されますポインタを先頭(0)に戻して、最初からループしてください。 mysqli_fetch_assoc manualによれば

関連する問題