PHP条件问题

时间:2011-09-12 23:06:58

标签: php include conditional

Hello StackOverflow社区,我希望你们能在这里帮助我:

在我的主页上,我的DIV结构基本上有一个<div id="container">,其<h1><div id="content">

我还有一些JavaScript可以在点击<div id="content">时向上/向下滑动<h1>,方法是将一个类“.open”插入或移除到<div id="content">

现在我想创建使用PHP和条件,如果<div id="content">具有类“.open”,则回​​显一些内容,如果没有,则为其他内容。

这就是我想要做的事情:

有这样的Javascript:

            <script type="text/javascript">
                  $(function() {
                        $('.container h1').bind('click', function() {
                            if ($(this).parent().hasClass('open')) {
                                $(this).parent().find('.content').slideUp();
                                $(this).parent().removeClass('open');
                                return 0;
                            }
                            $(this).parent().parent().find('.content').slideUp();
                            $(this).parent().find('.content').slideDown();
                            $(this).parent().addClass('open');
                        })
                     });
            </script>

这适用于此:

            <div id="container">
                <h1><a href="javascript:void(null)">Open the content</a></h1>
                <div id="content">
                    <p>Content 1</p>
                </div>  
            </div>      
            <div id="container">
                <h1><a href="javascript:void(null)">Open the content</a></h1>
                <div id="content">
                    <p>Content 2</p>
                </div>  
            </div>     

直到这里才能正常工作。现在我想用PHP创建一个条件,当有任何类有.open但我无法弄清楚如何编写这个。这就是我想出的:

            <? if '#content'.class='open'{
                  echo include('column-right1.php'); 
                  echo include('column-right2.php'); 
                }
                else {
                  echo include('column-right3.php');  
                {
            ?>

如果这在PHP中是不可能的,那么javaScript和/或Jquery上的脚本会是什么呢?

4 个答案:

答案 0 :(得分:4)

您必须了解客户端和服务器端脚本之间的基本区别。

PHP在您的服务器上运行,并在将页面发送给用户之前准备页面。这是服务器端,即应用程序的后端。如果你试图打开一个存在于服务器硬盘上的文件,那么这里发生的一切都在你的中央服务器上。

客户端收到您的请求后,您的HTML / CSS / Javascript被解析,这一切都是客户端的。这里的一切都与用户有关,没有任何东西可以回到服务器上。在此环境中与用户交互,例如询问他的鼠标位置或隐藏并显示不同的元素。

因此,简而言之,PHP无法与用户进行交互,但在一个地方是中心,而javascript可以在用户之间分发。

答案 1 :(得分:2)

你正在混合使用PHP和HTML / css。我建议您检查代码中的其他位置,以查看正在设置的类,并按此方式执行。否则,您需要使用输出缓冲,对于简单的HTML模板,它会变得非常混乱。

长话短说,你把两件事情混合在一起是不可能的。

答案 2 :(得分:1)

如果是我,我会使用jquery并做这样的事情:

  1. 给div添加一个id,你要附加“.aberto”,如i​​d =“content”class =“content aberto”
  2. 检查班级是否存在
  3. 加载您想要的php文件
  4. if ($('#content').hasClass('aberto')) {
       $("#some_div_id").load('column-right1.php');
       $("#other_div_id").load('column-right2.php');
    }else{
       $("#else_div_id").load('column-right3.php');
    }
    

    调整并尝试;)

    首先应该在关闭标记之前在index.php中包含一个文件......例如:

    <script type="text/javascript" src="http://www.daterraweb.com/js/onload.js"></script>
    

    然后在文件onload.js中放置上面提到的代码......比如

    $(document).ready(function(){
     if ($('#content').hasClass('aberto')) {
           $("#some_div_id").load('column-right1.php');
           $("#other_div_id").load('column-right2.php');
        }else{
           $("#else_div_id").load('column-right3.php');
        }
    }
    
    1. 你应该小心使用php文件的路径
    2. 您应该拥有所需的所有重要div,并将其与jquery代码匹配。
    3. 注意:如果要在插入.open类后立即加载内容,只需更改为:

             <script type="text/javascript">
                    $(function() {
                          $('.container h1').bind('click', function() {
                              if ($(this).parent().hasClass('open')) {
                                  $(this).parent().find('.content').slideUp();
                                  $(this).parent().removeClass('open');
                                  $("#else_div_id").load('column-right3.php');
                                  return 0;
                              }
                              $(this).parent().parent().find('.content').slideUp();
                              $(this).parent().find('.content').slideDown();
                              $(this).parent().addClass('open');
                              $("#some_div_id").load('column-right1.php');
                              $("#other_div_id").load('column-right2.php');
                          })
                       });
              </script>
      

答案 3 :(得分:0)

如果不将完整的HTML内容呈现给某些PHP函数,则无法在PHP中执行此操作。有些用户肯定会发布一些奇怪的框架,但这是错误的。

你必须明白,PHP会在HTML之前计算出来。所以这种方法根本不可能。你应该以其他方式工作。您应该基于PHP定义HTML类,而不是其他方式。在您的容器中使用“alberto”课程的条件是什么?

是这样的,你的JavaScript是动态添加这个类,然后你希望PHP对它采取行动吗?这带来了另一点,即PHP在这方面不是很有活力。 PHP需要重新加载才能显示结果(除非通过AJAX使用。)但是,如果你想根据类更改容器的内容..你也可以使用JavaScript和AJAX方法。这意味着,JavaScript将从远程PHP文件加载内容并更改容器的HTML内容。

  

一些阅读材料:

     
      
  1. http://www.sitepoint.com/ajax-jquery/
  2.   
  3. http://webdosanddonts.com/fundamental-php-coding-dos-donts
  4.   

PS:您的if语句也不正确。正确的是:if ($foo == true)