有没有办法让这个PHP代码更有效?

问题描述:

我想在页面上制作一些“动态”链接。基本上我想放弃我所在页面的链接。 (例如,如果我在主页上,我不想显示家庭链接,但如果我在常见问题页面上,则会显示家庭链接,而常见问题链接将不会显示。)此代码按我希望的方式工作工作,我只是认为必须有一个更好的方法,不会重复太多的代码,但是在我有限的编程经验中,我可以看到它。有没有办法让这个PHP代码更有效?

<div class= "links"> 
<?php 
    switch ($page_title) { 
      case 'Home': 
      echo '<p class= "who">'. 
        '<a href="whois.php" tabindex="1"><img src=  "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
       '</p>'; 
      echo '<p class= "contact">'. 
        '<a href="contact.php" tabindex="2"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="3"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="4"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="5"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 


    case 'Who is BeeCharmer': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="2"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="3"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="4"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="5"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'Contact Us': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="3"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="4"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="5"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'What We Do': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="4"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="5"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'FAQ': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="4"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="5"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'Photo Gallery': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="4"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="5"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="6"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'Pollination Services': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="4"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="5"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="6"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pay">'. 
       '<a href="payus.php" tabindex="7"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a>'. 
      '</p>'; 
     break; 

    case 'Pay Us': 
     echo '<p class= "home">'. 
       '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
       '</p>'; 
     echo '<p class= "who">'. 
       '<a href="whois.php" tabindex="2"><img src= "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
     echo '<p class= "contact">'. 
       '<a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a>'. 
      '</p>'; 
     echo '<p class= "what">'. 
       '<a href="whatwedo.php" tabindex="4"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a>'. 
      '</p>'; 
     echo '<p class ="FAQ">'. 
       '<a href="faq.php" tabindex="5"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a>'. 
      '</p>'; 
     echo '<p class= "pics">'. 
       '<a href="gallery.php" tabindex="6"><img src= "images/gallery.png" alt= "Photo Gallery" /></a>'. 
      '</p>'; 
     echo '<p class= "pollination">'. 
       '<a href="pollination.php" tabindex="7"><img src= "images/Pollination.png" alt= "Pollination Services" /></a>'. 
      '</p>'; 
     break; 
} 

?>

这里是CSS样式是它。

div.links { width: 40%; 
        position: absolute; 
        top: 280px; 
        left: 2%; } 
     div.links p img { border: none; 
          position: relative; 
          top: -29px; 
          left: 5px; } 
     div.links p { background-image: url("../images/yellowSlidingDoorleft.png"), 
             url("../images/yellowSlidingDoorRight.png"), 
             url("../images/yellowSlidingDoorMiddle.png"); 
         background-position: top left, top right, top center; 
         background-repeat: no-repeat, no-repeat, repeat; 
         height: 38px; 
         width: 520px; 
         border: none; 
         overflow: hidden; } 
     /*div.links p.home { position: relative; 
       top: 0px; 
       left: 0px; } 
     div.links p.who { position: relative; 
       top: 50px; 
       left: 0px; } 
     div.links p.contact { position: relative; 
       top: 100px; 
       left: 0px; } 
     div.links p.what { position: relative; 
       top: 150px; 
       left: 0px; } 
     div.links p.FAQ { position: relative; 
       top: 200px; 
       left: 0px; } 
     div.links p.pics { position: relative; 
       top: 250px; 
       left: 0px; } 
     div.links p.pollination { position: relative; 
       top: 300px; 
       left: 0px; } 
     div.links p.pay { position: relative; 
       top: 350px; 
       left: 0px; }*/ 
     div.links p:hover img { position: relative; 
       top: 5px; 
       left: 5px; } 
     div.links p:hover { background-image: url("../images/blackSlidingDoorleft.png"), 
               url("../images/blackSlidingDoorRight.png"), 
               url("../images/blackSlidingDoorMiddle.png"); 
          background-position: top left, top right, top center; 
          background-repeat: no-repeat, no-repeat, repeat; } 

任何帮助,你们可以给将非常感激

+2

为什么不把每一个链接保存在一个数组中。循环访问数组并检查页面标题以相应地跳过链接。 – 2012-08-02 22:16:12

+0

更好的是你用HTML编写了 – Kalpesh 2012-08-02 22:16:51

您现在处于正确的轨道上,意识到您当前的解决方案不是动态的。许多没有经验的程序员似乎在这种情况下犯了使用switch语句的错误,当你真正想要的是动态代码访问数组时,就像@Torsten提出的那样。您也不需要像PeterVR的回答那样重复使用if陈述,也不需要像DaiYoukai的重复函数调用。将重复放入数组中可以为您提供灵活的动态结构,您可以通过编程方式访问和操作。

尝试这样的事情(添加你需要的阵列的任何附加的键值对):

$nav_items = array(

    'home' => array(

    'class' => 'home', 

    'href' => "index.php", 

    'src' => "HomePage" 

    'label' => "Home Page" 

), 
    // home 


    'whois' => array(

    'class' => 'who', 

    'href' => "...", 

    'src' => "..." 

    'label' => "..." 

), 
    // whois 

    ... 

); 
// $nav_items 


$nav_sets = array(

    'home' => array(

    'whois', 

    'contact', 

    'whatwedo', 

    'faq', 

    'gallery', 

    'pollination', 

    'payus' 

), 


    'whois' => array(

    'home', 

    'contact', 

    'whatwedo', 

    'faq', 

    'pics', 

    'pollination' 

), 

    ... 

); 
// $nav_sets 


foreach ($nav_sets[ $page_title ] as $nav_id) { 

    $nav_item = $nav_items[ $nav_id ]; 

    echo <<<DOCHERE 

<p class="{$nav_item[ 'class' ]}"> 
<a href="{$nav_item[ 'href' ]}" tabindex="1"><img src="images/{$nav_item[ 'src' ]}.png" alt= "{$nav_item[ 'label' ]}" /></a> 
</p> 

DOCHERE; 

} 
// foreach 

这并不完全与您使用的$page_title匹配 - 我只是把在之类的每个页面中都是可变的,这与$nav_items$nav_sets阵列中的密钥相匹配。

在这里,您为每个导航项目(可能出现在任意数量的页面上)以及一个用于为所有项目生成HTML输出的模板都有一份数据副本。这消除了有问题的重复。这个例子包括明确的项目集,以防你需要那么多的控制。如果您只需要显示除当前页面对应项目以外的每个页面上的所有项目,则只需循环播放$nav_items并排除当前页面。

我也消除了用于构建输出的字符串连接的可怕使用。

+0

我认为你是对的。这对我来说可能不是最简单的解决方案,但它似乎是最好的。我已经尝试了多个IF语句,它工作正常,但我不认为它是最有效的。谢谢你的时间和知识 – beewrangler 2012-08-03 05:24:20

+0

这就是我最后一起去的。我花了一点时间才弄清楚它是如何工作的,但最终我得到了它。再次感谢您的时间和知识。 – beewrangler 2012-08-05 13:29:41

+0

谢谢@beewrangler。很高兴你找到时间检查出来。我认为这将是一个很好的投资时间,因为您将来可以使用更多技术。 – JMM 2012-08-19 13:53:01

这将是更为有效简单地包括该页面的HTML页面上的链接列表,如果你从字面上创建无论如何,每个页面都有一个单独的列表(如switch($page_title)似乎暗示)。

+0

这个解决方案的唯一问题是添加或删除链接非常耗时。使用include可以让我只编辑一个页面。 – beewrangler 2012-08-13 00:24:44

我想你想要的是这样的:

<div class= "links"> 
<?php 
    if ($page_title != 'home') { 
     echo '<p class= "home">'. 
      '<a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>'. 
      '</p>'; 
    } 
    if ($page_title != 'Who is BeeCharmer') { 
     echo '<p class= "who">'. 
      '<a href="whois.php" tabindex="2"><img src=  "images/WhoIs.png" alt= "Who is BeeCharmer" /></a>'. 
      '</p>'; 
    } 

//and so on... 
+0

在这个解决方案中融入了@DaiYoukai的功能,而且效率更高。我不是开关状态的忠实粉丝...... – Pevara 2012-08-02 22:36:46

你可以只通过一个函数的方式去除多余的HTML代码。 (在这种情况下工作,因为所有的链接的格式完全一样,只是某些元素,如类,HREF,tabindex属性,IMGSRC和IMG ALT是不同的)

function displayLinks ($pClass, $aHref, $tabIndex, $imgSRC, $alt) { 
echo '<p class="' . $pClass . '"><a href="' . $aHref . '.php" tabindex="' . $tabIndex . '"><img src="' . $imgSRC . '" alt= "' . $alt . '" /></a>'</p>'; 
} 

,并会被称为像

displayLinks('who','whois',1,'images/WhoIs.png','Who is BeeCharmer'); 
displayLinks('contact','contact',2,'images/ContactUs.png','Who is ContactUs'); 

等等

虽然因为你的大部分链接都是一样的,我会更进一步,并保持条件只有不同的链接。

what, faq, pics, pollination, pay 

除了主页和联系我们之外的所有存在。所以他们需要不要重复或附上自己的如果

你不必,也许应该永远不得不直接回显HTML那样。因为我把它这是一个视图文件,我把导航到自己的文件,然后做require('nav_links.php');其中的链接目前是,随着nav_links.php内容看起来像这样

nav_links.php

<div class= "links"> 
<?php if($page_title != 'home'): ?> 
<p class= "home">. 
    <a href="index.php" tabindex="1"><img src= "images/HomePage.png" alt= "Home Page" /></a>. 
</p> 
<?php endif; ?> 
<?php if($page_title != 'Who is BeeCharmer'): ?> 
<p class= "who"> 
    <a href="whois.php" tabindex="2"><img src=  "images/WhoIs.png" alt= "Who is BeeCharmer" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'Contact Us'): ?> 
<p class= "contact"> 
     <a href="contact.php" tabindex="3"><img src= "images/ContactUs.png" alt= "Contact Us" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'What We Do'): ?> 
<p class= "what"> 
    <a href="whatwedo.php" tabindex="4"><img src= "images/WhatWeDo.png" alt= "What Does BeeCharmer Do" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'FAQ'): ?> 
<p class ="FAQ"> 
    <a href="faq.php" tabindex="5"><img src= "images/FAQ.png" alt= "Frequently Asked Questions" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'Photo Gallery'): ?> 
<p class= "pics"> 
    <a href="gallery.php" tabindex="6"><img src= "images/gallery.png" alt= "Photo Gallery" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'Pollination Services'): ?> 
<p class= "pollination"> 
    <a href="pollination.php" tabindex="7"><img src= "images/Pollination.png" alt= "Pollination Services" /></a> 
</p> 
<?php endif; ?> 
<?php if($page_title != 'Pay Us'): ?> 
<p class= "pay">. 
    <a href="payus.php" tabindex="8"><img src= "images/PayUs.png" alt= "Pay BeeCharmer" /></a> 
</p> 
<?php endif; ?> 

+0

这对我来说似乎是最容易实现的。感谢您的时间和专业知识。 – beewrangler 2012-08-03 05:15:35