2011-07-22 8 views
0

昇順と降順の並べ替え順序を変更するためのスイッチを作成しました。$ _GET ['sense']は並べ替えの方法です。ASCの場合、$ sortingはDESCにする必要がありますこれをURLに追加する関数)。しかし、それは決してDESCからASCに変わることはありません。なぜ私は理解できません。PHPは変わらない?

重要なステートメントは、($ソート)場合である:

私は変数は、それが何か(できればDESC)であれば、それは再びASCする必要があり、DESCあるべきASCであれば言いたいです。しかし、これは動作していないようです。

if(isset($_GET['column']) && isset($_GET['sense'])){ 
      $sorting = antiInjectie($_GET['sense']); 

      $temp = antiInjectie($_GET['column']); 

      if($sorting = "ASC"){ 
       $sorting = "DESC"; 
      }else{ 
       $sorting = "ASC"; 
      } 

      if(tableNameMatcher($temp)){ 
       $order = $temp; 
      } 

     }else{ 
      $order = "naam,voornaam"; 
      $sorting = "ASC"; 


     } 

ノート二else文は何も与えられ

答えて

4

使用if($sorting == "ASC"){代わりの場合、句

説明(あなたが=を忘れてしまった)あなたのようif($sorting = "ASC"){がないときのためにある:中あなたのif節はいつも 'ASC'で$sortingと設定されています(比較はしません)

+0

私はリートを感じた –

+2

これは誰もがしなければならない間違いです。これを避けるには、if( 'value' == $ var) 'のようなif条件を実行します。したがって、 '='を忘れた場合は、エラーが発生し、問題がどこにあるかがわかります。このスタイルを「ヨーダ条項」と呼んでいる人もいます。 (必要な力を使う) – middus

1

このコードを合理化して問題を解決することができます同時に:

if(isset($_GET['column']) && isset($_GET['sense'])) 
{ 
    $sorting = (antiInjectie($_GET['sense']) == 'ASC') ? 'DESC' : 'ASC'; 
    $temp = antiInjectie($_GET['column']); 
    $order = (tableNameMatcher($temp)) ? $temp : ''; 
} 
else 
{ 
    $order = 'naam,voornaam'; 
    $sorting = 'ASC'; 
} 
関連する問題