В то время как PHP Loop внутри Javascript - PullRequest
0 голосов
/ 28 января 2011

Мой код

<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>

Я хочу, чтобы это было внутри цикла while, пока <?php $responseanswer = mysqli_fetch_array($result); ?> как мне это сделать?

Ответы [ 3 ]

2 голосов
/ 29 января 2011

Чтобы расширить первый ответ, вот одно из возможных решений, которое не предполагает слишком частого переключения между JavaScript и PHP.Я лично поклонник шаблонизаторов (таких как Smarty ), но это мое следующее предпочтение ( all ), логика идет в коде 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 голосов
/ 29 января 2011

Ewww. Это затрудняет чтение, я думаю, что подобное решение было бы лучше. (Но не лучше). Лучше всего, вероятно, иметь функции 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 голосов
/ 28 января 2011

Вы имеете в виду это?

В любом случае, на мой взгляд, объединение 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";
 }
<?
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...