防止在php mysql中显示空白子类别
我创建了三个表upfile(包含类别)->子表(包含类别和子类别的id)->账单表(包含子类别和账单的id) 如何防止在php mysql中显示子类别,在这种情况下,没有子类别的人是bill,下面是我的代码防止在php mysql中显示空白子类别,php,mysql,while-loop,Php,Mysql,While Loop,我创建了三个表upfile(包含类别)->子表(包含类别和子类别的id)->账单表(包含子类别和账单的id) 如何防止在php mysql中显示子类别,在这种情况下,没有子类别的人是bill,下面是我的代码 echo '<ul>'; $year_query = "SELECT DISTINCT YEAR (uploaddate) AS OrderYear FROM billTable WHERE username='$log_username' OR
echo '<ul>';
$year_query = "SELECT DISTINCT YEAR (uploaddate) AS OrderYear FROM billTable
WHERE username='$log_username' ORDER BY uploaddate ASC ";
$result_year_query = mysqli_query($db_conx, $year_query);
echo $e2= mysqli_error($db_conx );
while ( $year_query = mysqli_fetch_row($result_year_query)) {
$year_query = $year_query[0];
echo "<li>$year_query<br/>";
echo '<ul>';
$month_query = "SELECT DISTINCT MONTH(uploaddate) AS OrderMONTH FROM billTable
WHERE username='$log_username'
AND year(uploaddate) = '$year_query' ORDER BY uploaddate ASC ";
$result_month_query= mysqli_query($db_conx, $month_query);
while ( $month_query = mysqli_fetch_row($result_month_query)) {
$month_query = $month_query[0];
echo "<li>$month_query<br/>";
echo '<ul>';
$bill_query = "SELECT * FROM billTable WHERE username='$log_username'
AND month(uploaddate) = '$month_query'
AND year(uploaddate) = '$year_query' ORDER BY cname ASC " ;
$bill_result = mysqli_query($db_conx, $bill_query);
while ( $row1 = mysqli_fetch_row($bill_result)) {
$idSubCat_billTable= $row1[7];// subtale id
$tempfilename= $row1[10];
$Cquery = "SELECT * FROM subtable WHERE username='$log_username'
AND id = '$idSubCat_billTable ' ";
$result_upfiles = mysqli_query($db_conx, $Cquery);
while ( $row2 = mysqli_fetch_row($result_upfiles)){
$idSubCat_subtable = $row2[0];
$rowId = $row2[3]; //id of ctaegory
$Cquery = "SELECT * FROM upfiles WHERE username='$log_username'
AND id = '$rowId ' ORDER BY categories ASC " ;
$result_upfiles = mysqli_query($db_conx, $Cquery);
while ( $row2 = mysqli_fetch_row($result_upfiles)) {
$rowId = $row2[0]; //id
$rowCat = $row2[7]; //Categorie value
echo "<li>$rowCat<br/>";
echo '<ul>';
if ($idSubCat_billTable==$idSubCat_subtable) {
$Subquery = "SELECT DISTINCT * FROM subtable
WHERE username='$log_username' AND idCat = '$rowId '
ORDER BY subcategories ASC " ;
$subtable_result = mysqli_query($db_conx, $Subquery);
while ( $row1 = mysqli_fetch_row($subtable_result)) {
$catid = $row1[0];// id of subcategorie
$subCat = $row1[2];
echo "<li>$subCat<br/>";
echo '<ul>';
$bill_query = "SELECT * FROM billTable
WHERE username='$log_username'
AND idSubCat = '$catid '
AND month(uploaddate) = '$month_query'
AND year(uploaddate) = '$year_query'
ORDER BY cname ASC " ;
$bill_result = mysqli_query($db_conx, $bill_query);
while ( $row1 = mysqli_fetch_row($bill_result)) {
$bill_name = $row1[5];
$bill_name_cname = $row1[6];
$bill_name_filename= $row1[9];
echo "<li><a href='#'>$bill_name</a><br/>";
}
echo '</ul></li>';
}
echo '</ul></li>';
}
}
}
}
echo '</ul></li>';
echo '</ul></li>';
echo '</ul></li>';
}
}
echo '</ul>';
echo'';
$year\u query=“从billTable中选择不同的年份(uploaddate)作为OrderYear
其中username=“$log_username”按上载日期ASC排序”;
$result\u year\u query=mysqli\u query($db\u conx,$year\u query);
echo$e2=mysqli\u错误($db\u conx);
而($year\u query=mysqli\u fetch\u row($result\u year\u query)){
$year\u query=$year\u query[0];
echo“- $year\u query
”;
回声“”;
$month\u query=“从billTable中选择不同的月份(uploaddate)作为OrderMONTH
其中username='$log\u username'
年份(uploaddate)=“$year\u query”按uploaddate ASC排序”;
$result\u month\u query=mysqli\u query($db\u conx,$month\u query);
而($month\u query=mysqli\u fetch\u row($result\u month\u query)){
$month\u query=$month\u query[0];
echo“- $month\u query
”;
回声“”;
$bill\u query=“从billTable中选择*,其中username='$log\u username'
月份(上传日期)=“$month\u查询”
年份(上传日期)=“cname ASC提供的$year_query”订单;
$bill\u result=mysqli\u query($db\u conx,$bill\u query);
而($row1=mysqli\u fetch\u行($bill\u result)){
$idSubCat_billTable=$row1[7];//子秤id
$tempfilename=$row1[10];
$Cquery=“从子表中选择*,其中username='$log\u username'
id=“$idSubCat_billTable”;
$result\u upfiles=mysqli\u query($db\u conx,$Cquery);
而($row2=mysqli\u fetch\u行($result\u upfiles)){
$idSubCat_子表=$row2[0];
$rowId=$row2[3];//ctaegory的id
$Cquery=“从upfiles中选择*,其中username='$log\u username'
和id=“$rowId”按类别ASC排序”;
$result\u upfiles=mysqli\u query($db\u conx,$Cquery);
而($row2=mysqli\u fetch\u行($result\u upfiles)){
$rowId=$row2[0];//id
$rowCat=$row2[7];//分类值
回声“- $rowCat
”;
回声“”;
如果($idSubCat_billTable==$idSubCat_subtable){
$Subquery=“从子表中选择不同的*
其中username='$log_username'和idCat='$rowId'
按子类别排序ASC”;
$subtable\u result=mysqli\u查询($db\u conx,$Subquery);
while($row1=mysqli\u fetch\u行($subtable\u result)){
$catid=$row1[0];//子类别的id
$subCat=$row1[2];
回声“- $subCat
”;
回声“”;
$bill\u query=“从billTable中选择*
其中username='$log\u username'
而idSubCat=“$catid”
月份(上传日期)=“$month\u查询”
年份(上传日期)=“$year\u查询”
由cname ASC订购”;
$bill\u result=mysqli\u query($db\u conx,$bill\u query);
而($row1=mysqli\u fetch\u行($bill\u result)){
$bill_name=$row1[5];
$bill_name_cname=$row1[6];
$bill_name_filename=$row1[9];
回声“
”;
}
回音“
”;
}
回音“
”;
}
}
}
}
回音“
”;
回音“
”;
回音“
”;
}
}
回声“”;
对于上述代码,您可以使用count()进行检查 然后在回显子类别检查之前
if($count_query > 0){
$catid = $row1[0];// id of subcategorie
$subCat = $row1[2];
echo "<li>$subCat<br/>";
echo '<ul>';
$bill_query = "SELECT * FROM billTable WHERE username='$log_username' AND idSubCat = '$catid ' AND month(uploaddate) = '$month_query' AND year(uploaddate) = '$year_query' ORDER BY cname ASC " ;
$bill_result = mysqli_query($db_conx, $bill_query);
while ( $row1 = mysqli_fetch_row($bill_result)){
$bill_name = $row1[5];
$bill_name_cname = $row1[6];
$bill_name_filename= $row1[9];
echo "<li><a href='#'>$bill_name</a><br/>";
}
echo '</ul></li>';
}
if($count\u query>0){
$catid=$row1[0];//子类别的id
$subCat=$row1[2];
回声“$subCat
”;
回声“”;
$bill_query=“从billTable中选择*,其中用户名='$log_username'和idSubCat='$catid'和月份(上传日期)='$month_query'和年份(上传日期)='$year_query'按cname ASC排序”;
$bill\u result=mysqli\u query($db\u conx,$bill\u query);
而($row1=mysqli\u fetch\u行($bill\u result)){
$bill_name=$row1[5];
$bill_name_cname=$row1[6];
$bill_name_filename=$row1[9];
回声“
”;
}
回音“
”;
}
您的问题非常有趣,如果您提供db结构而不是如何描述它会更好。我认为您最好考虑使用联接。。。如果使用此代码,可能会导致服务器对一个用户没有响应。很抱歉,我没有回答这个问题,但是这个逻辑不会很好地运行。thnx Martin指出了这个性能问题,我还认为有很多查询,可能需要一些时间来执行,使其速度变慢。我正在寻找另一种逻辑,使之快速。如果可以的话,建议我一些方法。我是这个领域的新手。如果你觉得它有用,你会把它标记为解决方案,而不是你。
if($count_query > 0){
$catid = $row1[0];// id of subcategorie
$subCat = $row1[2];
echo "<li>$subCat<br/>";
echo '<ul>';
$bill_query = "SELECT * FROM billTable WHERE username='$log_username' AND idSubCat = '$catid ' AND month(uploaddate) = '$month_query' AND year(uploaddate) = '$year_query' ORDER BY cname ASC " ;
$bill_result = mysqli_query($db_conx, $bill_query);
while ( $row1 = mysqli_fetch_row($bill_result)){
$bill_name = $row1[5];
$bill_name_cname = $row1[6];
$bill_name_filename= $row1[9];
echo "<li><a href='#'>$bill_name</a><br/>";
}
echo '</ul></li>';
}