2011-01-28 6 views
-2

内部のPHPループ私のコードJavascriptを

<script type="text/javascript"> 
    if(<?php echo json_encode($re=='reject'); ?>){ 
     //if response is reject 
     document.getElementById('hide').style.display = "none"; 
     document.getElementById('onreject').style.display="block"; 
    } 

    else if(<?php echo json_encode($re=='approve'); ?>){ 
     //if response is approve 
     document.getElementById('hide').style.display = "none"; 
     document.getElementById('onapprove').style.display = "block"; 
    } 
    else 
    { 
     document.getElementById('hide').style.display="block"; 
    } 
</script> 

ながら私は、これは私があることを行う方法を<?php $responseanswer = mysqli_fetch_array($result); ?>ゴマwhileループの内側になりたいですか?

+4

'json_encode()'はJavaScriptエンコーディングではありません。 – BoltClock

答えて

0

これはどういう意味ですか?

とにかく、このようにJavaScriptとPHPを組み合わせることは、私の意見では好ましくありません。

<? 
while($responseanswer = mysqli_fetch_array($result)) { 
?> 
if(<?php echo json_encode($re=='reject'); ?>){ 
    //if response is reject 
    document.getElementById('hide').style.display = "none"; 
    document.getElementById('onreject').style.display="block"; 
} 

else if(<?php echo json_encode($re=='approve'); ?>){ 
    //if response is approve 
    document.getElementById('hide').style.display = "none"; 
    document.getElementById('onapprove').style.display = "block"; 
} 
else 
{ 
    document.getElementById('hide').style.display="block"; 
} 
<? 
} 
?> 
+0

ありがとう...これは好ましくない場合...解決策を教えてください – sarthak

+1

JavaScript側では、JavaScript側で何が実行されているのかが分かります。したがって、帯域幅とローディング時間をこの方法で無駄にしています。クライアント側では、常にif(true)またはif(false)と表示されます。 PHPを使用して、クライアントに送信する内容と送信しない内容を決めることができます。 – pimvdb

+0

このように書くべきではないもう一つの理由は、インラインPHPをJavaScriptに混ぜることは、コードベースが成長するにつれてますます読みにくくなることです。 –

2

最初の回答を展開するには、JavaScriptとPHPの間で前後に切り替える必要がない可能性のある解決策があります。私は個人的にはテンプレートエンジン(例えばSmarty)のファンですが、これは私の次の好みです(すべてロジックはPHPコード内に入り、ループの最後のJavaScriptが表示されます)。

<script> 
<?php 
while($responseanswer = mysqli_fetch_array($result)) { 
    // This is probably not how your code does it, but I don't know your table structure 
    $re = $responseanswer[0]; 
    $div_to_show = ""; 

    // whether to show the element with ID "hide" 
    $hide_display_style = 'none'; 

    // Decide now what divs we want visible and hidden 
    if($re == 'reject') $div_to_show = 'onreject'; 
    else if($re == 'approve') $div_to_show = 'onapprove'; 
    else $hide_display_style='block'; 

    echo "document.getElementById('hide').style.display = '$hide_display_style';\n"; 
    if($div_to_show) { 
    echo "document.getElementById('$div_to_show').style.display = 'block';\n"; 
    } 
} 
?> 
</script> 
+0

ちょっと驚きました。しかし、承認n拒否は動作していません – sarthak

+0

plz..plz..help。 – sarthak

+3

人々は1分以内にいつも反応するとは限りません。 – pimvdb

0

Ewww。これは読みにくく、このような解決策が良いと思います。 (しかし最高ではない)。おそらく、隠して表示するものを処理する方法や、タグ要素内にスタイルを追加する方法や、idを明示的に出力しない方法を知っているjs関数を持つのがよいでしょう。

いずれにしても、これは読みやすくなり、要素を追加するのが容易になります。

<?php 
    switch ($re) { 
     case 'reject': 
      $styles = array(
       'hide'  => 'none', 
       'onreject' => 'block', 
       'onapprove' => 'none' 
      ); 
      break; 
     case 'approve': 
      $styles = array(
       'hide'  => 'none', 
       'onreject' => 'none', 
       'onapprove' => 'block' 
      ); 
     default: 
      $styles = array(
       'hide'  => 'block', 
       'onreject' => 'none', 
       'onapprove' => 'none' 
      ); 
    } 

    foreach ($styles as $id => $value) { 
     echo 'document.getElementById("' , $id, '").style.display="', $value, '";', PHP_EOL; 
    } 
?> 
+0

forループでエラーが発生しました.... – sarthak

+0

echo文エラー...できますか? – sarthak

+0

@arthikなぜJavaScriptを使って要素を隠すのですか? PHPを使ってクラス名を簡単に決めることができ、CSSを使って可視性を定義することができます。 – pimvdb