2013-01-17 44 views
0

所以即时通讯(试图)在基础建立一个网站,即时通讯与下一部分挣扎。如何通过url传递变量,根据变量更改dd和li的类?

首先让我存在(的一部分)的代码第一

<dl class="contained tabs"> 
    <dd class="active"><a href="#contactForm">Neem contact op</a></dd> 
    <dd><a href="#hoofdleiders">Hoofdleiders</a></dd> 
    <dd><a href="#leiders">Leiders</a></dd> 
    <dd><a href="#staf">Staf</a></dd> 
    </dl> 

<ul class="tabs-content contained"> 

    <li id="contactFormTab" class="active"> 
     <div class="row collapse"> 
     <div class="two columns"><label class="inline">Naam</label></div> 
     <div class="ten columns"><input type="text" name="naam" id="naam" placeholder="Naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /> 
     </div> 
     <div class="row collapse"> 
     <div class="two columns"><label class="inline">Email</label></div> 
     <div class="ten columns"><input type="text" name="mail" id="mail" placeholder="[email protected]" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /> 
     </div> 
     <div class="row collapse"> 
     <div class="two columns"><label class="inline">Onderwerp</label></div> 
     <div class="ten columns"><input type="text" name="onderwerp" id="onderwerp" placeholder="onderwerp" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /> 
     </div> 

     <label>Wat wilt u zeggen?</label> 

     <textarea id="bericht" name="bericht" rows="3">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br /> 

     <button type="submit" name="submit" class="radius button">Verstuur</button> 

    </li> 

<li id="hoofdleidersTab"> 
     <ul class="block-grid five-up"> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 1</a></li> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 2</a></li> 

     </ul> 
    </li> 
    <li id="leidersTab"> 
     <ul class="block-grid five-up"> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 1</a></li> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 2</a></li> 

     </ul> 
    </li> 
    <li id="stafTab"> 
     <ul class="block-grid five-up"> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 1</a></li> 
     <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 2</a></li> 

     </ul> 
    </li> 

所以DD类“活动”和利类“活动”,使标签高亮显示。

我的问题是,如何才能让这个类转换到另一个项目(可以说:第二个),另一个李ID(让也说在网址中使用过的变量,第二个(hoofdleiders)?

这是一个接触的形式的一部分,我希望能够到陆地上的人的权利,他们需要的人。

如果有什么不清楚的地方,请与我裸露,这是我在计算器上的第一个问题。

+0

URL参数/变量可能会以PHP形式出现:$ _GET ['']; – ethrbunny

+0

你失去了我的存在....... – defiancenl

+0

dd和li现在是硬编码的活动,我需要它们根据url中的字符串变成活动的,比如说contact.php?谁= Hoofdleiders – defiancenl

回答

0

我不推荐以这种方式实现。你应该使用像MVC这样的框架或模式来更好地管理你的代码。但是,就你而言,这可能是一个简单明了的解决方案。

存放在具有相同的名称作为选项卡分离PHP文件每个标签,例如,该staf.php文件将是这样的:

<ul class="block-grid five-up"> 
    <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 1</a></li> 
    <li><a href="mailto:[email protected]"><img src="http://placehold.it/200x200&text=[persoon]" /><br />Naam 2</a></li> 
</ul> 

主要contact.php会是这样

<?php 
# list all available tabs 
$tabs = array(
    'contactform' => 'Contact form', 
    'hoofdleiders' => 'Hoofdleiders', 
    'leiders' => 'Leiders', 
    'staf' => 'Staf', 
); 

# get the selected Tab from the url, if no tab is specified use the first tab 
$selectedTab = filter_input(INPUT_GET, 'tab'); 
if (!in_array($selectedTab, $tabs)) 
    $selectedTab = $tabs[0]; 
?> 
<dl class="contained tabs"> 
    <?php foreach($tabs as $name => $label):?> 
    <dd <?php echo ($tabName == $selectedTab ? "class='active'" : ""; ?>><a href="#<?php echo $name ?>"><?php echo $label ?></a></dd> 
    <?php endforeach; ?> 
</dl> 

<ul class="tabs-content contained"> 
<?php foreach($tabs as $tabName): ?> 
    <li id="<?php echo $tabName; ?>" <?php echo ($tabName == $selectedTab ? "class='active'" : ""; ?>> 
     <?php require_once ($tabName . ".php"); ?> 
    </li> 
<?php endforeach; ?> 
</ul> 

在这种情况下,contact.php和每个li的所有php文件必须在相同的der并且可以在这样的URL中调用contact.php文件contact.php?tab=staf

+0

能否详细说明为什么你的方法更好,或者更好,为什么他的方法不好? – defiancenl

+0

即时通讯从这里可以学习的答案不只是解决我的问题;) – defiancenl

+0

是的,用我的方法,你可以很容易地编辑标签列表和每个标签的内容通过'$ tabs'变量和PHP文件以及维护你的'contact.php'文件。您也可以决定什么是默认选项卡,当用户只使用'contact.php'而没有任何参数时我们该做什么。还有一点是,当获得$ _GET中的参数值时,使用'filter_input'可以帮助您避免一些安全攻击(只是**一些**):D 但是,我认为您应该阅读** MVC **来获得更好的实现PHP应用程序的方式。 –

0

如果你不想循环项目,你可以使用IF子句添加活动状态:

<dl class="contained tabs"> 
<dd<?php if(!isset($_GET['tab']) || $_GET['tab']=='contactform') echo ' class="active"'; ?>> 
     <a href="#contactForm?tab=contactform">Neem contact op</a> 
</dd> 
<dd<?php if($_GET['tab']=='hoofdleiders') echo ' class="active"'; ?>> 
     <a href="#hoofdleiders?tab=hoofdleiders">Hoofdleiders</a> 
</dd> 
<dd<?php if($_GET['tab']=='leiders') echo ' class="active"'; ?>> 
     <a href="#leiders?tab=leiders">Leiders</a> 
</dd> 
<dd<?php if($_GET['tab']=='staf') echo ' class="active"'; ?>> 
     <a href="#staf?tab=staf">Staf</a> 
</dd> 
</dl> 

我将!isset($_GET['tab']) ||添加到第一个选项卡,以便此选项卡是默认值(如果未设置$_GET['tab'])。

然后每个LI添加相同的PHP:

<li id="contactFormTab"<?php if(!isset($_GET['tab']) || $_GET['tab']=='contactform') echo ' class="active"'; ?>> 

... 

<li id="hoofdleidersTab"<?php if($_GET['tab']=='hoofdleiders') echo ' class="active"'; ?>> 

... 

<li id="leidersTab"<?php if($_GET['tab']=='leiders') echo ' class="active"'; ?>> 

... 

<li id="stafTab"<?php if($_GET['tab']=='staf') echo ' class="active"'; ?>> 
+0

thnx,即将去检查你在这里做了什么:) – defiancenl

+0

嗯审查后,它是如何改变每个项目的li id来获得“积极”的类?我得到你在这里做的部分为dd – defiancenl

+0

查看我的编辑,你添加了与DD元素相同的PHP代码给LI的 – jtheman

0

如果你wan't做渲染,你可以使用PHP类的页:

<? if ($_GET['param_name'] == 'somecondition'):?> 
<html do something> 
<?endif;?> 

或者你也可以使用jQuery后使页面渲染与用户动作交互:

function getURLParameter(name) { 
return decodeURI(
    (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1] 
); 
} 

而且你可以使用这个函数来获得url中的参数并在javascript/jquery上做一些逻辑来做一些很酷的事情。如果你需要更多的东西让我知道。