PHP代码不显示站点中数据库的所有结果,但将其显示在数据库中

时间:2013-02-07 13:26:12

标签: php mysql select webstore

在选择输入中打印所有相应类别时遇到一些问题。现在,它应该添加所有有孩子的类别。问题是,这不完全正确。它仅显示主类别中的第一个属于它的子类别,但它不显示下一个主要类别项目。

例如:

  1. 主要类别:小军鼓 子类别:多摩 子类别子类别:Starphonic

  2. 主要类别:钹 子类别:Paiste

  3. 它只显示第一个主要类别(例如Snares)以及与之相关的所有内容。

    我还希望它显示那些没有子类别和具有。

    的类别
      $result = mysql_query("SELECT COUNT(nimi) AS kpl FROM samppa_kategoriat");
      $row = mysql_fetch_array($result);
      $kpl = $row['kpl'];
      mysql_free_result($result);
      $sql = "SELECT
       samppa_kategoriat.nimi AS KatNimi,
       samppa_kategoriat.layer AS layerA,
       samppa_kategoriat.children AS lapsetA,
       samppa_alikategoriat.nimi AS AliNimi,
       samppa_alikategoriat.layer AS layerB,
       samppa_alikategoriat.parent AS parentA, 
       samppa_alikategoriat.children AS lapsetB,
       samppa_alikategoriatB.nimi AS AliNimiB, 
       samppa_alikategoriatB.parent AS parentB,
       samppa_alikategoriatB.layer AS layerC 
       FROM 
       samppa_kategoriat, 
       samppa_alikategoriat,
       samppa_alikategoriatB
      WHERE
       (samppa_kategoriat.nimi = samppa_alikategoriat.parent
      AND samppa_alikategoriat.nimi = samppa_alikategoriatB.parent)";
      $res = mysql_query($sql);
      $i = 0;
      while($n = mysql_fetch_object($res)){
      $countA[$i]   = mysql_real_escape_string(strip_tags($n->lapsetA));
      $countB[$i]   = mysql_real_escape_string(strip_tags($n->lapsetB));
      $nimiA[$i]    = mysql_real_escape_string(strip_tags($n->KatNimi));
      $nimiB[$i]    = mysql_real_escape_string(strip_tags($n->AliNimi));
      $nimiC[$i]    = mysql_real_escape_string(strip_tags($n->AliNimiB));
      $parentA[$i]  = mysql_real_escape_string(strip_tags($n->parentA));
      $parentB[$i]  = mysql_real_escape_string(strip_tags($n->parentB));
      $layerA[$i]   = mysql_real_escape_string(strip_tags($n->layerA));
      $layerB[$i]   = mysql_real_escape_string(strip_tags($n->layerB));
      $layerC[$i]   = mysql_real_escape_string(strip_tags($n->layerC));
      $i++;
      }
      for($i=1;$i<$kpl;$i++){
        echo "<option>$nimiA[$i] = $countA[$i] </option>";
    
        for($i=0;$i<$countA[$i];$i++){
          echo "<option>- $nimiB[$i] = $countB[$i]</option>";
        }
          for($i=0;$i<$countB[$i];$i++){
          echo "<option>-- $nimiC[$i]</option>";
          }
         }
    
    
    
            mysql_free_result($res);
            mysql_close($conn);
    

    &GT;

1 个答案:

答案 0 :(得分:1)

你在for循环中使用相同的变量名。

for($i=1;$i<$kpl;$i++){
  echo "<option>$nimiA[$i] = $countA[$i] </option>";

  for($i=0;$i<$countA[$i];$i++){
    echo "<option>- $nimiB[$i] = $countB[$i]</option>";
  }

  for($i=0;$i<$countB[$i];$i++){
    echo "<option>-- $nimiC[$i]</option>";
  }
}

当它们全部使用变量$ i时,外部循环将不会保持其正确的值。 尝试将外部循环更改为$j而不是$i