How to add active class to dynamic menu? - php

please help. How can I add active class to the dynamic menu? I use While for my menu list, but I cannot understand how to add it to active class. I kindly ask for your consult and advice. Thanks in advance.
picture of the database
<ul class="nav nav-pills" id="mainNav">
<?php
$query = "SELECT * FROM menu ORDER BY id ASC";
$menuQuery = mysqli_query($dbc, $query);
?>
<?php
while($menu = mysqli_fetch_array($menuQuery)):
echo '
<li><a href="'.$menu['menu'].'" class=\'active\'>'.$menu["menu_title"].'</a></li>' ?>
<?php endwhile; ?>

problem solved!
I'll leave this code in hopes of it helping somebody else in need.
<?php $link = $_SERVER['REQUEST_URI']; ?>
<ul class="nav nav-pills" id="mainNav">
<?php
$query = "SELECT * FROM menu ORDER BY id ASC";
$menuQuery = mysqli_query($dbc, $query);
?>
<?php
while($menu = mysqli_fetch_array($menuQuery)):
if($link == $menu['menu']){
$active = 'class=\'active\'';
}
?>
<li <?php if($link == $menu['menu']){ echo $active; } ?> > <a href="<?=$menu['menu'];?>" ><?=$menu["menu_title"];?></a></li>
<?php endwhile; ?>

Related

Dynamic Dropdown menu using PHP & mysql

I've been trying to build a dropdown menu but I'm not getting my desired results. Here's my code:
<?php require_once 'core/init.php'?>
<?php
$sql = 'SELECT * FROM categories WHERE parent = 0';
$pquery = mysqli_query($db,$sql);
?>
<?php while($parent = mysqli_fetch_assoc($pquery)):?>
<?php
$parent_id = $parent['id'];
$sql2 = 'SELECT * FROM categories WHERE parent = "parent_id"';
$cquery = mysqli_query($db,$sql2);
?>
<li class='dropdown'>
<a href='#' class='dropdown-toggle' data-toggle='dropdown'>
<?php echo $parent['id'];?><span class='caret'</span</a>
<ul class='dropdown-menu' role='menu'>
<?php while($child = mysqli_fetch_assoc($cquery)):>
<li><a href='#'><?php echo $child['parent'];?></a>
</li>
<?php endwhile; ?>
</ul>
</li>
<?php endwhile;?>
My DB is like this and the result is this.
Try with console phpmyadmin before write codes in page.
I think your codes is wrong.
Your code must like this
$parent_id = $parent['id'];
$sql2 = 'SELECT * FROM categories WHERE parent = '.$parent_id;
I suggest to you for use ajax to be beautiful again.

How to call user specific data from an external database into WordPress

Here is the challenge and I am sure this is not the first time someone has came into this issue however have not found a viable solution pertaining to this specific process within the pages of stackoverflow or any other development forum for that matter.
Here is the task I am trying to complete.
I have built a WordPress website which will be a members area where only registered users may log into the site to view its content. This functionality will be done through WordPress however I have a page within WordPress titled "Member Status" that I have created a custom page template for in order to pull information that will be user specific to a form on that page. The user specific information is being pulled from a secondary external database to the WP database.
Here is the code for the custom page template for a better visual of what I am trying to do. Basically all form fields would be populated from the specific row of that specified user. however the query seems to fail everytime and am wondering if I should be adding this table to my WP db, if that would rectify the issue or is there a fault in my code I am just not seeing.
<?php
$servername = "localhost";
$username = "DBusername";
$password = "DBpassword";
$database = "DBname";
// Create connection
$conn = new mysqli($servername, $username, $password);
$db_selected = mysqli_select_db($conn, $database);
$userid = $current_user->user_login;
$sql = "SELECT * FROM 'member-status' WHERE 'Card' = '$userid'";
$result = mysqli_query($conn, $sql);
if ($result) {
list($userid) = mysqli_fetch_array(mysqli_query($result));
} else {
echo "query failed";
}
if (mysqli_connect_errno($conn))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
?>
<?php
while ($row = mysqli_fetch_assoc("$sql"))
?>
<div class="Disclaimer_webpage">
<?php echo $row["Disclaimer_WebPage"]; ?>
</div>
<div class="OuterBlock">
<div class="oneblock">
<ul>
<li>LAST</li>
<li><?php echo $row["Last"]; ?></li>
</ul>
<ul>
<li>FIRST</li>
<li><?php echo $row["First"]; ?></li>
</ul>
<ul>
<li>CARD</li>
<li><?php echo $row["Card"]; ?></li>
</ul>
<ul>
<li>CLASS</li>
<li><?php echo $row["Class"]; ?></li>
</ul>
</div>
<div class="secblock">
<ul>
<li>DATE SIGNED BOOK</li>
<li>
<?php if ($row['StartDate']!=""){ echo date('m/d/y', strtotime($row["StartDate"])); } ?>
</li>
</ul>
<ul>
<li>OUT OF WORK DATE</li>
<li>
<?php if($row['CURROOWD']!=""){ echo date('m/d/y', strtotime($row["CURROOWD"])); } ?>
</li>
</ul>
<ul>
<li>DISPATCH UNIT</li>
<li><?php echo $row["OriginalUnit"]; ?></li>
</ul>
<ul>
<li>DAYS DISPATCHED (OF 140)</li>
<li><?php echo $row["DAYS140"]; ?></li>
</ul>
</div>
<div class="over_all_list_position">
<ul>
<li><b>OVER ALL LIST POSITION</b><span class="information_Icon"><img src="http://redsealcreative.com/clients/353-members/wp-content/plugins/IBEWJOBLISTS/Info.png" > <p class="imgDescription">Your position on the Out of Work List.</p></span><span class="see_below"> (*see below)</span></li>
<li><?php echo $row["ListPosition"]; ?></li>
</ul>
<ul>
<li><b>UNIT LIST POSITION</b><span class="information_Icon1"><img src="http://redsealcreative.com/clients/353-members/wp-content/plugins/IBEWJOBLISTS/Info.png" > <p class="imgDescription1">Your list position relative only to members in your Dispatch Unit.</p><span></li>
<li><?php echo $row["LISTPOS_UNIT"]; ?></li>
</ul>
<ul>
<li><b>OPG LIST POSITION</b><span class="information_Icon2"><img src="http://redsealcreative.com/clients/353-members/wp-content/plugins/IBEWJOBLISTS/Info.png" > <p class="imgDescription2">Your list position relative only to those with current OPG Security Clearance.</p><span></li>
<li><?php echo $row["LISTPOS_OPG"]; ?></li>
</ul>
</div>
<div class="fothblock">
<ul>
<li>PASSES</li>
<li>NORTH UNIT</li>
<li>SOUTH UNIT</li>
<li>EAST UNIT</li>
</ul>
<ul>
<li>ACCUMULATED</li>
<li><?php echo $row["PassNorthAcc"]; ?></li>
<li><?php echo $row["PassSouthAcc"]; ?></li>
<li><?php echo $row["PassEastAcc"]; ?></li>
</ul>
<ul>
<li>MAXIMUM</li>
<li><?php echo $row["PassNorthMax"]; ?></li>
<li><?php echo $row["PassSouthMax"]; ?></li>
<li><?php echo $row["PassEastMax"]; ?></li>
</ul>
</div>
<div class="sixblock">
<ul>
<li>LAST OUT WORK DATES DISPATCHED</li>
<li>NORTH</li>
<li>SOUTH</li>
<li>EAST</li>
<li>OUT OF TOWN</li>
</ul>
<ul>
<li class="padding-top"></li>
<li class="padding-top"><?php if($row['LOOWDN']!=""){echo date('m/d/y', strtotime($row["LOOWDN"])); }?></li>
<li><?php if($row['LOOWDS']!=""){ echo date('m/d/y', strtotime($row["LOOWDS"])); } ?></li>
<li class="padding-top"><?php if($row['LOOWDE']!=""){echo date('m/d/y', strtotime($row["LOOWDE"]));} ?></li>
<li><?php if($row['OOTOOWD']!=""){echo date('m/d/y', strtotime($row["OOTOOWD"]));} ?></li>
</ul>
</div>
<div class="seven">
<ul>
<li>LAST UPDATED</li>
</ul>
<ul>
<li class="padding-top"><?php echo $row["TIME_STAMP"]; ?></li>
</ul>
</div>
</div>
<div class="Disclaimer_POL">
<?php echo $row["Disclaimer_POL"]; ?>
</div>
All insight will be gratefully appreciated. Thanks in advance for the communities assistance to a new member. :)
UPDATE #2 ISSUE RESOLVED
I am happy to announce that I figured out the issue. For anyone else that is wanting to accomplish this task here is the working code that I used.
<?php global $current_user;
wp_get_current_user(); ?>
<?php
// $mydb = new wpdb('username','password','database','localhost');
//$mydb->show_errors();
$userid = $current_user->user_login;
$result = $wpdb->get_results( "SELECT * FROM member_status WHERE CARD = $userid");
// $query = "SELECT * FROM member_status WHERE CARD = $userid";
// $result = $mydb->get_results($query);
?>
<?php foreach ( $result as $query ) {?>
Then to call the individual fields/column data add this code where you want it located
<?php echo $query->ColumnName; ?> //Change ColumnName to the column you want to call from.
I hope this comes in handy for you all :)
I am happy to announce that I figured out the issue. For anyone else that is wanting to accomplish this task here is the working code that I used.
<?php global $current_user;
wp_get_current_user(); ?>
<?php
// $mydb = new wpdb('username','password','database','localhost');
//$mydb->show_errors();
$userid = $current_user->user_login;
$result = $wpdb->get_results( "SELECT * FROM custom_table WHERE Column = $userid");
// $query = "SELECT * FROM custom_table WHERE Column = $userid";
// $result = $mydb->get_results($query);
?>
<?php foreach ( $result as $query ) {?>
Then to call the individual fields/column data add this code where you want it located
<?php echo $query->ColumnName; ?> //Change ColumnName to the column you want to call from.
I hope this comes in handy for you all :)

Selected category doesn't remain active after clicking

I have a website which is showing products online. In it, I have categories and subcategories listed. When I'm clicking on a category, it doesn't remain active/selected. I have a class="active" which is added to the selected category when clicked but it doesn't expand on selection.
This is my website www.sitimobil.mk. The example site is www.fixit.mk
On the left side you have the categories and subcategories.
<?php
$qKategori = ("SELECT * FROM kategori WHERE kprind = 0");
$rKategori = mysqli_query($dbc, $qKategori);
if ($rKategori) {
while ($exKat = mysqli_fetch_array($rKategori, MYSQLI_ASSOC)) {
$emrikategorise = $exKat['kemri'];
$idkategori = $exKat['kid'];
$idprind = $exKat['kprind'];
?>
<li><?= $emrikategorise; ?>
<ul <?php
if ($_GET['kid'] == $idkategori) {
echo 'class="active"';
}
?>>
<?php
$qPrind = ("SELECT * FROM kategori WHERE kprind = '" . $idkategori . "'");
$rPrind = mysqli_query($dbc, $qPrind);
while ($prind = mysqli_fetch_array($rPrind)) {
?>
<li><a href="kategori.php?kid=<?= $prind['kid'] ?>&kprind=<?= $prind['kprind'] ?>" <?php
if ($_GET['kid'] == 48) {
echo 'class="active"';
}
?>><?= $prind['kemri'] ?></a></li>
<?php
}
mysqli_free_result($rPrind);
?>
</ul>
</li>
<?php
}
mysqli_free_result($rKategori);
}
?>

Query for display catergories from database php mysql

I'm new to coding with php and using MySQL. I am having trouble to display a list of categories by their ID so that each category is displayed individually as a heading. Instead I got it to display a category name but its only echoing out a category name twice that's the same. Here is my code...
$sql= "SELECT * FROM categories ";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query))
{
$id=$row['id'];
$cat_name=$row['cat_name'];
}
?>
<ul class="nav nav-list">
<li class="nav-header"><?php echo $cat_name;?></li>
<li class="nav-header"><?php echo $cat_name;?></li>
</ul>
Your li tag is outside the while loop. So the $id and $cat_name is only the last record in the DB, then you echo them twice. That's way you got the same name twice.
Try echo the li tag in the loop (but not the ul):
<ul class="nav nav-list">
<?php
while($row = mysql_fetch_array($query))
{
$id=$row['id'];
$cat_name=$row['cat_name'];
echo '<li class="nav-header">' .$cat_name. '</li>';
}
?>
</ul>
You can use this code as-is :
$sql= "SELECT * FROM categories ";
$query = mysql_query($sql); ?>
<ul class="nav nav-list">
<?php while($row = mysql_fetch_array($query)) : ?>
<li class="nav-header"><?php echo $row['cat_name'];?></li>
<?php endwhile; ?>
</ul>
This will loop through your records and for each record, it will print an entire li with the required data.
Note that separating your PHP code from your HTML code like this has several benefits. It will be better colored in your editor and it is also easier to integrate.
The reason you are printing the same value out twice is because $cat_name is a string variable and will only hold one value at a time you may want to save the items an array and loop at a seperate time, like such
<?php
$sql= "SELECT * FROM categories ";
$query = mysql_query($sql);
$category = array();
while($row = mysql_fetch_array($query))
{
$array = array(
id => $row['id'],
name => $row['cat_name']
);
array_push($category,$array);
}
?>
<ul class="nav nav-list">
<?php
foreach($category as $c)
{
echo '<li class="nav-header">'.$c['name'].'</li>';
};
?>
</ul>
$sql= "SELECT * FROM categories ";
$query = mysql_query($sql);
while($row = mysql_fetch_assoc($query))
{
?>
<ul class="nav nav-list">
<li class="nav-header"><?php echo $row['id']; ?></li>
<li class="nav-header"><?php echo $row['cat_name']; ?></li>
</ul>
<?php } ?>

Creating Dynamic Links with PHP/MySQL

i'm creating my first PHP/MySQL site and i'm having difficulty figuring out how to generate dynamic links and creating a new page for those links.
My index page is pulling in certain details from my database as a preview, and when the visitor clicks on that item, i want them to be taken to a page which shows the full information from the database for that row.
The code on my index page for displaying the previews is below, any help on amending it to generate the link and page would be greatly appreciated.
<?php
$query="SELECT * FROM $tbl_name ORDER BY job_id DESC";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"company_name");
$f2=mysql_result($result,$i,"job_title");
$f3=mysql_result($result,$i,"city");
$f4=mysql_result($result,$i,"country");
$job_id=mysql_result($result,$i,"job_id");
?>
<div class = "hjl">
<ul>
<li id = "jobtitle"><?php echo $f2; ?></li><br />
<li id = "compname"><?php echo $f1; ?></li>
</ul>
<ul>
<li id = "city"><?php echo $f3; ?>, <?php echo $f4; ?></li><br />
</ul>
</div>
<?php
$i++;
}
?>
I'm pretty sure what i'm asking is really simple, i just can't get my head around acheieving it.
Thanks to you both for your answers, but i have managed to fix it (or work-around it) with this on my index page:
<?php
$query="SELECT * FROM $tbl_name ORDER BY job_id DESC";
$result=mysql_query($query) or die(mysql_error());
$rsjobinfo=mysql_fetch_assoc($result);
mysql_close();
do {?>
<div class = "hjl"><a href="paging.php?job_id=<?php echo $rsjobinfo['job_id'];?>">
<ul>
<li id = "jobtitle"><?php echo $rsjobinfo['job_title'];?></li><br />
<li id = "compname"><?php echo $rsjobinfo['company_name'];?></li>
</ul>
<ul>
<li id = "city"><?php echo $rsjobinfo['city'];?>,
<?php echo $rsjobinfo['country'];?></li>
</ul>
</a>
</div>
<?php } while ($rsjobinfo=mysql_fetch_assoc($result))?>
</div>
Followed by this on my content page:
<?php
$job_id = $_GET['job_id'];
$query="SELECT * FROM $tbl_name WHERE job_id = $job_id";
$result=mysql_query($query) or die(mysql_error());
$rsjobinfo=mysql_fetch_assoc($result);
mysql_close();
?>
Thanks for your help everyone.
Dan
put mysql_close after you use mysql_result, but once you get it working you might look into a more modern approach like PDO.
to your code add link (which I think you already have somewhere):
//...................
<li id = "jobtitle">
<a href="<?php echo '?id='.$job_id; ?>">
<?php echo $f2; ?>
</a>
</li>
//...................
Read more...
//...................
then your code must check for variable $_GET['id'], so put IF in the beginning of your code:
$where = '';
if( isset($_GET['id']) && strlen($_GET['id']) > 0 ) {
$where = ' job_id = "'. mysql_real_escape_string( $_GET['id'] ) .'"' ;
}
<?php
$query="SELECT * FROM $tbl_name $where ORDER BY job_id DESC";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"company_name");
$f2=mysql_result($result,$i,"job_title");
$f3=mysql_result($result,$i,"city");
$f4=mysql_result($result,$i,"country");
$job_id=mysql_result($result,$i,"job_id");
?>
<div class = "hjl">
<ul>
<li id = "jobtitle">
<a href="<?php echo '?id='.$job_id; ?>">
<?php echo $f2; ?>
</a>
</li><br />
<li id = "compname"><?php echo $f1; ?></li>
</ul>
<ul>
<li id = "city"><?php echo $f3; ?>, <?php echo $f4; ?></li><br />
</ul>
Read more...
</div>
<?php
$i++;
}
?>
edit: Try changing the following line:
$where = " job_id = '". mysql_real_escape_string( $_GET['id'] ) ."'" ;

Categories