SitePoint Sponsor

User Tag List

Results 1 to 5 of 5
  1. #1
    SitePoint Enthusiast
    Join Date
    Sep 2012
    Posts
    33
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Active Stat in Navbar not working with PHP extension

    Hey,

    I relocated this question to the PHP forum because it is not longer a JS issue (at least I think)

    I have a very simple navbar which has an active state which changes on click. Now I wanted to use this navbar to order a PHP/SQL generated table.
    However the way the table gets order is by using a variable which changes the php extension in the URL on click. So everytime I click the link in the navbar it resets because the extension changes (I'm guessing).

    I looked online and I found a few example of how to do this when you have different php pages but I could not find anything that explained how to do it if just the php extension changes.

    Here is the setup

    JS function for navbar:
    Code:
    $(document).ready (function() {
              $("a.cp_btns").click(function() {
    		  $("a.cp_btns.active").removeClass("active");
    		  $(this).addClass("active");
    		  });
    });
    Divs with php links
    Code:
    <div id="cp_menu">
    <a class="cp_btns "<?php echo'<a href="indexB.php?order_var=' . $id_var . '"';?>>Most Recent</a></a>
    <a class="cp_btns" <?php echo'<a href="indexB.php?order_var=' . $fn_var . '"';?>>Best Rated</a></a>
    <a class="cp_btns" <?php echo'<a href="indexB.php?order_var=' . $ln_var . '"';?>>Most Viewed</a></a>
    </div>
    As you can see the $id_var etc. change the php extension

    One of the examples I found does something like this
    Code:
    <?
    $path = $_SERVER['PHP_SELF'];
    $page = basename($path);
    $page = basename($path, '.php');
    ?>
    <div id="navbar">
      <ul>
        <li><a<? if($page == 'one') print ' class="active"'; ?> href="one.php">Page 1</a></li>
        <li><a<? if($page == 'two') print ' class="active"'; ?> href="two.php">Page 2</a></li>
        <li><a<? if($page == 'three') print ' class="active"'; ?> href="three.php">Page 3</a></li>
        <li><a<? if($page == 'four') print ' class="active"'; ?> href="four.php">Page 4</a></li>
      </ul>
    </div>
    But as I said that only seems to be useful if the navbar links to different php pages.

    Is there perhaps a way to hide the extension or would that not work?

    Thanks
    Shibbs

  2. #2
    SitePoint Addict kduv's Avatar
    Join Date
    May 2012
    Location
    Atlanta, GA
    Posts
    244
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    If I read correctly, you just want to access the value of order_var correct?

    $sort_by = $_GET['order_var'];

  3. #3
    SitePoint Enthusiast
    Join Date
    Sep 2012
    Posts
    33
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    The ordering of the table works fine. My problem is that once I click on a link the navbar does not memorize that the link needs to stay active. It just resets to its initial state.

    In other words it cannot memorize the active state after completing the task, because the php part of the page reloads, not the template surrounding it of course.

  4. #4
    SitePoint Addict kduv's Avatar
    Join Date
    May 2012
    Location
    Atlanta, GA
    Posts
    244
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    You can also store it in a session variable and check for that on each page.
    PHP Code:
    <?php
    session_start
    ();
    if ((isset(
    $_GET['order_var'])) && ($_GET['order_var'] != '')) {
        
    $_SESSION['sort'] = $_GET['order_var'];
    } else {
        
    $_SESSION['sort'] = 'a default sort order';
    }
    ?>

    <?php
    // Then on whatever page needs to grab the sort order
    session_start();
    $sort_by $_SESSION['sort'];
    ?>

  5. #5
    SitePoint Enthusiast
    Join Date
    Sep 2012
    Posts
    33
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I think that perhaps moving the whole php code for the order logic into the template would help because the navbar wouldnt reload?


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •