在选择输入中打印所有相应类别时遇到一些问题。现在,它应该添加所有有孩子的类别。问题是,这不完全正确。它仅显示主类别中的第一个属于它的子类别,但它不显示下一个主要类别项目。
例如:
主要类别:小军鼓 子类别:多摩 子类别子类别:Starphonic
主要类别:钹 子类别: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);
&GT;
答案 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
。