Reputation: 53
My category name is my navigation bar. I want to display "categoryname" on categories.php page while i am clicking any navigation items .
//this is categories.php file
<?php require ('includes/dbconnect.php');?>
<?php
if (!isset($_GET['categoryid'])){
header ("location:index.php");
}
$cat_sqli ="SELECT products.productid,products.productname,products.unit,products.price,products.brand,products.productdetails,categories.categoryid,categories.categoryname
FROM products
INNER JOIN categories ON (products.categoryid=categories.categoryid)
FROM products
INNER JOIN categories
ON (products.categoryid=categories.categoryid)
WHERE products.categoryid=".$_GET['categoryid'];
if ($cat_query = mysqli_query ($dbconnect,$cat_sqli)){
$cat_rs=mysqli_fetch_assoc($cat_query);
}
?>
<body>
<h1>Selected category | <?php echo $cat_rs['categoryname'];?></h1>
</body>
Upvotes: 0
Views: 42
Reputation: 3547
in addition to scaisEdge answer, I want to fix your query from sql injection vulnerability and use prepared statements as follow:
//this is categories.php file
<?php require ('includes/dbconnect.php');?>
<?php
if (!isset($_GET['categoryid'])){
header ("location:index.php");
}
$array_of_result = [];
$cat_sqli ="SELECT
products.productid
,products.productname
,products.unit
,products.price
,products.brand
,products.productdetails
,categories.categoryid
,categories.categoryname
FROM products
INNER JOIN categories ON products.categoryid=categories.categoryid
WHERE products.categoryid=?";
$stmt = $dbconnect->prepare($cat_sqli);
if($stmt){
$stmt->bind_param('i', filter_input(INPUT_GET, 'categoryid', FILTER_VALIDATE_INT));
if($stmt->execute()){
$result = $stmt->get_result();
$num_of_rows = $result->num_rows;
if($num_of_rows>0){
while ($row = $result->fetch_assoc()) {
$array_of_result[] = $row;
}
}
$stmt->free_result();
$stmt->close();
}
}
?>
<body>
<h1>Selected category |
<?php
if(!empty($array_of_result)){
foreach($array_of_result as $r){
echo $r['categoryname'];
break;
}
}
</h1>
</body>
Upvotes: 1
Reputation: 133360
You are joining the table two time this is wrong (remove the second from and join clause and condition)
$cat_sqli ="SELECT
products.productid
,products.productname
,products.unit
,products.price
,products.brand
,products.productdetails
,categories.categoryid
,categories.categoryname
FROM products
INNER JOIN categories ON products.categoryid=categories.categoryid
WHERE products.categoryid=".$_GET['categoryid'];
Upvotes: 0