hi have two database tables :
category (contains category name) sub_cats (contains sub categories)
im trying to show sub cats for each cat ie:
- cat 1
- sub cat
- sub cat
- sub cat
- sub cat
- cat 2
- sub cat
- sub cat
- sub cat
- sub cat
im using this query but its doesnt seems to work. what to do ?
$sql = mysql_query("SELECT category.dname AS dname, sub_cats.dname AS sdname
FROM category
LEFT JOIN sub_cats
ON category.id = sub_cats.catid
ORDER BY category.id");
while ($row = mysql_fetch_array($sql)) {
$cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>
<li> - - - <a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
}
Try separating your queries
$sql = mysql_query("SELECT category.dname AS dname
FROM `category`
ORDER BY category.id");
while ($row = mysql_fetch_array($sql)) {
$cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>';
$sql2 = mysql_query("SELECT sub_cats.dname AS sdname
FROM `sub_cats`
WHERE sub_cats.catid = " . $row['id']);
while ($row2 = mysql_fetch_assoc($sql2)) {
$cats .= '<li> - - - <a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
}
}
This is how you should do the printing with your current query:
$cats .= '<ul>';
$currentCat = null;
while ( $row = mysql_fetch_array($sql) ) {
if( $row[ 'dname' ] !== $currentCat ) {
if( $currentCat !== null ) $cats .= '</ul>';
$currentCat = $row[ 'dname' ];
$cats .= '<li><a href="?'.$row['dname'].'">'.$row['dname'].'</a></li>';
$cats .= '<ul>';
}
$cats .= '<li><a href="?'.$row['sdname'].'">'.$row['sdname'].'</a></li>';
}
if( $currentCat !== null ) $cats .= '</ul>';
$cats .= '</ul>';
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.