2010-11-23 62 views
0

一个完整的初学者问题。 我在页面上有大量的div(> 80)(page2.php),我想要做的是打开page1.php,点击一个链接打开page2.php并只显示其中一个div在哪个链接被点击。从url中隐藏/显示div的字符串在PHP中

我有一个基本的工作版本,通过添加一个if其他的div。到目前为止,我只在5个div上完成了这项工作,但它的工作原理似乎也是一种非常有说服力的做事方式。

第1页:

<a href="page2.php?id=r0101">this is a link</a> 

第2页:

<?php 
$divID = $_GET['id']; 
?> 

<div id="r0101" <? if($divID == r0101): ?>class="show"<? else: ?>class="hidden"<? endif; ?> > 

这然后应用CSS类隐藏或显示在div。 是否有可能有一个函数或任何在网页的顶部,从网址中的身份证,并指出有一个div与该ID也显示它并隐藏所有其他?这可能是一件容易的事情,但它让我难倒了。

任何帮助非常感谢。 谢谢。

+0

使用jquery/javascript可以更容易,更简单,并且可以将所有内容保存在单个页面上。 – Martin 2010-11-23 14:07:42

+0

这将是,但我不能依靠JavaScript的最终结果,这是一个非常严格的环境,不幸的是。 – Keith 2010-11-23 14:12:22

回答

2

更不用说divs和在css上工作(当你继续隐藏/显示div)。 您不仅可以生成标记,也可以生成CSS样式表。使用一个类似的(把它放在你头部的末尾 )。并让浏览器为你做好工作;)

<style type="text/css"> 
    div { 
     display: none; 
    } 

    div#<?php echo $_GET['id']; ?>:{ 
     display: block; 
    } 
</style> 
1
$divs = array('r0101', 'r0102', 'r0103'); 
$divID = $_GET['id']; 
foreach($divs as $div) 
{ 
    echo '<div id="'.$div.'" class="'; 
    if ($div == $divID) 
    { 
     echo 'show'; 
    } 
    else 
    { 
     echo 'hidden'; 
    } 
    echo '">'; 
} 

假设我已经正确读取的问题,您有一组的div(R0101,R0102等),并希望只显示这取决于你在页面上的一个。上面的代码创建了这些div的数组,循环并创建div。如果div匹配页面url中的div,则div的类是'show',否则是'hidden'。

+0

好吧,我想我会遵循这个,但是我在每个div中都有特定的独特内容,所以我不确定我可以使用它,可以吗?它会创建所有的div,但不会允许所有的内容? (有很多内容) – Keith 2010-11-23 14:14:31

+0

内容来自哪里?你可以将它包含在数组中。 – Gazler 2010-11-23 14:16:08

0

首先,你应该考虑一种让你的div动态打印的方法。喜欢的东西:

<?php 
for($i = 1; $i <= 80; $i++): 
?> 
<div id="r<?php print $i; ?>">div contents</div> 
<?php 
endfor; 
?> 

另外,如果你发现在做什么上面所述的方式,你也可以这样做:

​​

<?php 
for($i = 1; $i <= 80; $i++): 
    $class = ($i == $_GET['id']) ? 'show' : 'hidden'; 
?> 
<div id="r<?php print $i; ?>" class="<?php print $class; ?>">div contents</div> 
<?php 
endfor; 
?> 

这是完全一样的但是(使用ternary operator)排除了几行,并且(有些人认为)会降低可读性。

0

如果你想让你的下载更快,你应该只输出你想要显示的div。你可以这样做:

$divs = array('r0101', 'r0102', 'r0103'); 
$divID = $_GET['id']; 
foreach($divs as $div) 
{ 
    if($div == $divID){ echo '<div> /* CONTENT HERE */ </div> }; 
} 

希望这会有所帮助。