2011-07-09 12 views
1

を更新せず、リスト:ソート私は次のコードを持っているページ

<table border="0" width="100%"><tbody> 
    <tr> 
     <th style="text-align: center;"><?php echo $text['PLAYERS']; ?></th> 
    </tr> 
    <tr> 
     <td> 
     <select name="order" size="1" onchange="sortPlayers(this)"> 
      <option value="name"><?php echo $text['NAME']; ?></option> 
      <option value="age"><?php echo $text['AGE']; ?></option> 
      <option value="ss"><?php echo $text['SS']; ?></option> 
      <option value="experience"><?php echo $text['EXPERIENCE']; ?></option> 
      <option value="leadership"><?php echo $text['LEADERSHIP']; ?></option>    
      <option value="weight"><?php echo $text['WEIGHT']; ?></option>    
      <option value="height"><?php echo $text['HEIGHT']; ?></option>  
      <option value="stamina"><?php echo $text['STAMINA']; ?></option>    
      <option value="strength"><?php echo $text['STRENGTH']; ?></option>    
      <option value="breakthroughs"><?php echo $text['BREAKTHROUGHS']; ?></option> 
      <option value="tackling"><?php echo $text['TACKLING']; ?></option> 
      <option value="handling"><?php echo $text['HANDLING']; ?></option>    
      <option value="speed"><?php echo $text['SPEED']; ?></option> 
      <option value="kicking"><?php echo $text['KICKING']; ?></option> 
     </select> 
     </td> 
    </tr> 
    <?php foreach ($result as $player) { ?> 
    <tr> 
     <td style="text-align: left;"><?php echo $player['male'] . ' ' . $player['name']; ?></td> 
    </tr> 
    <?php } ?> 
    </tbody></table> 

それはオンラインゲーム内のすべてのユーザの選手とのリストを生成します。 ユーザーがドロップダウンメニューから何かを選択すると、選択されたもの(強さ、スピードなど)で選手がソートされます。 私はプレーヤーを得る関数を持っています:get_players($ tid、$ sort)。 $ tid =ユーザーID $ sort =ソート基準(スピード、キックなど)。

その入力で選択されたものを取得し、その入力の選択に応じて変数$ resultを変更するが、ページを更新しないJavaScriptコードとは何ですか?

答えて

1

視聴者が正しく(名前、年齢、ss、エクスペリエンスなど)オプションを選択してから、選択した属性に応じて異なるソート結果を表示できるようにしたい場合は、あなたはページをリフレッシュすることなくこれをしたい。

デザインの観点からは、2つの方法があります。初期ページ(Javascriptデータ構造内)に、すべての選択肢の可能なすべてのデータを含めることができます。それから、データ構造から正しいデータを取り出し、並べ替えてDOMに挿入して表示するのは、JavaScriptコードの問題です。

また、すべてのデータをあらかじめインクルードしていない場合は、必要なデータをフェッチしてソートしてDOMに挿入する必要があります。あなたのコードに表示されるPHPは、プレイヤーの名前だけを含むように見えます。

実際に進む方法は、データのスケールに依存します。それが(ページを生成するスピードとブラウザのメモリ消費の観点から)元のページにすべてのデータを入れるだけであれば、コード化するのが簡単です。しかし、最大のプレイヤー数、サポートするアトリビュートの最大数の最悪の場合を見なければなりません。それが管理できない場合は、選択された属性のJSONデータを返すことができるajax呼び出しをサポートする必要があります。

+0

また、AJAX呼び出しを介してすべてのソートを処理し、AJAX呼び出しで表全体を戻してから、JS関数が表を完全に上書きするようにすることもできます。これはJSONの必要性を完全に取り除きます.AJAX呼び出しの戻り値全体をエコーするだけで済みます。 –

関連する問題