PHP代码并没有在站点中显示来自数据库的所有结果,而是在数据库中显示它们
在将所有适当的类别打印到选择输入中时遇到一点问题。现在,它应该添加所有有子类的类别。问题是,这并不完全正确。它只显示主类别中的第一个项目以及属于它的子类别,但不显示下一个主类别项目 例如:PHP代码并没有在站点中显示来自数据库的所有结果,而是在数据库中显示它们,php,mysql,select,webstore,Php,Mysql,Select,Webstore,在将所有适当的类别打印到选择输入中时遇到一点问题。现在,它应该添加所有有子类的类别。问题是,这并不完全正确。它只显示主类别中的第一个项目以及属于它的子类别,但不显示下一个主类别项目 例如: 主要类别:陷阱 小类:塔马 子类别子类别:星声 主要类别:钹 子类别:Paiste 它只显示第一个主要类别(例如陷阱)以及与之相关的所有内容 我还希望它显示那些没有子类别的类别和那些有子类别的类别 $result = mysql_query("SELECT COUNT(nimi) AS kpl FROM
$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);
$result=mysql\u query(“从samppa\u kategoriat选择COUNT(nimi)作为kpl”);
$row=mysql\u fetch\u数组($result);
$kpl=$row['kpl'];
mysql_free_result($result);
$sql=“选择
samppa_kategoriat.nimi作为KatNimi,
samppa_kategoriat.层作为层,
samppa_kategoriat.孩子们都是失败者,
samppa_alikategoriat.nimi作为AliNimi,
samppa_alikategoriat.层作为层B,
samppa_alikategoriat.作为父母的父母,
samppa_alikategoriat.儿童是结核病患者,
samppa_alikategoriatB.nimi作为AliNimiB,
samppa_alikategoriatB.作为父母的父母B,
samppa_alikategoriatB.层作为层C
从…起
samppa_kategoriat,
samppa_alikategoriat,
samppa_alikategoriatB
哪里
(samppa_kategoriat.nimi=samppa_alikategoriat.parent
和samppa_alikategoriat.nimi=samppa_alikategoriatB.parent)”;
$res=mysql\u查询($sql);
$i=0;
而($n=mysql\u fetch\u object($res)){
$countA[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->transferta));
$countB[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->transfertb));
$nimiA[$i]=mysql\u real\u escape\u字符串(strip\u标签($n->KatNimi));
$nimiB[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->AliNimi));
$nimiC[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->AliNimiB));
$parentA[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->parentA));
$parentB[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->parentB));
$layerA[$i]=mysql\u real\u escape\u字符串(strip\u标签($n->layerA));
$layerB[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->layerB));
$layerC[$i]=mysql\u real\u escape\u字符串(strip\u标记($n->layerC));
$i++;
}
对于($i=1;$i您在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>";
}
}
for($i=1;$i只是一个旁注-您应该转义数据(使用mysqli\u real\u escape\u string
-而不是mysql\u*
函数,因为它们已被弃用)当你把它放进数据库时。当你把它拿出来时,你应该使用类似于htmlentities
的东西来为HTML目的对它进行编码。它确实发生了变化,它显示了第一个类别以及属于它的所有子类别,但当它显示第二个主类别项目时,它显示了第一个类别的子类别代替第二大类子类是的,因为您将所有内容都称为$i。此外,此处的索引必须更改为$j.$countA[$i]好的,我在每个For循环中将所有$I都更改为其他内容。现在,我们即将解决它。现在,它发布了两次相同的主类别及其子类别。因此,我尝试在echo“$nimiA[$I]”中手动分配数组编号你猜怎么着?似乎数组编号0和1都是相同的主类别,2和3是第二个主类别。为什么不将它添加到第二个数组编号中,在这种情况下,它将是1?因为现在的问题似乎是为什么它根本不会显示另一个主类别,而是显示同一个主类别两次。