Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
防止在php mysql中显示空白子类别_Php_Mysql_While Loop - Fatal编程技术网

防止在php mysql中显示空白子类别

防止在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

我创建了三个表upfile(包含类别)->子表(包含类别和子类别的id)->账单表(包含子类别和账单的id)

如何防止在php mysql中显示子类别,在这种情况下,没有子类别的人是bill,下面是我的代码

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>';
        }