0

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

例如:

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

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

它仅显示第一个主要类别(例如 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);

?>

4

1 回答 1

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.

于 2013-02-07T13:39:59.813 回答