0

mysql データベースからサブカテゴリを取得する際に問題が発生しています。親カテゴリのサブカテゴリを表示したいと考えています。メイン カテゴリの最後のサブ カテゴリしか取得できません。最初のサブカテゴリには ** が表示されていません。私のテーブル**には、category_id と category_parent_id があります。ここで、親カテゴリの category_parent_id は「0」になります。。前もって感謝します

 <ul class="betterList">
 <?php 
        $con = mysql_connect("localhost","root","pwd") or die('couldnot connect to database'.mysql_error());
               mysql_select_db("DB",$con);
               $result=mysql_query("select * from table ")or die("No table available with this name"."<br/><br/>".mysql_error());
             while($row=mysql_fetch_array($result))
               {
                $parent_id=$row['category_parent_id'];
                $category_id=$row['category_id'];
                if($parent_id==0)

                {
?>
                <li>
                <?php echo $row['category_id'].$row['name_en-GB'];

                $result1=mysql_query("select * from table where category_parent_id=".$category_id)or die("No data available with this name"."<br/><br/>".mysql_error());
                 echo  $num_row    = mysql_num_rows($result1);

                    if($num_row>0) {
                        for($i=0;$i<$num_row;$i++)
                        {
                             while($row1=mysql_fetch_array($result1))
                             {

                  ?>
                                     <ul style="margin:0px;padding:0;">
                                        <li><?php echo $row1['name_en-GB']?></li>
                                     </ul>
                                     <?php
                             }
                        }
                    }

                ?>


                </li>

                <?php } ?>



    <?php }?> 
 </ul>

最後にあるタグを削除<li>し、最後にそれを保持すると、すべてのサブカテゴリを表示できますが、css は適用されません。そこで何かがうまくいかないのですが、私はそれを理解できませんでした

4

5 に答える 5

1

以下を削除して、もう一度お試しください:

for($i=0;$i<$num_row;$i++)
{
于 2013-10-05T10:30:48.783 に答える
0

わお !o_O 古い mysql_* 関数を使用しています...

あなたが書いた : for($i=0;$i<$num_row;$i++)

以降 : while($row1=mysql_fetch_array($result1))

これらの命令は両方とも、このクエリで取得した各行でループしています。

それをすべて削除します。

echo  $num_row    = mysql_num_rows($result1);

if($num_row>0) {
    for($i=0;$i<$num_row;$i++) {

だってこれは駄目です。

結果をループする唯一の重要なことは while($row1=mysql_fetch_array($result1)) です

mysql_fetch_array() を軽量な mysql_fetch_assoc() に置き換えることもできます。

コードは最適化できますが、これで問題は解決するはずです。

于 2013-10-05T10:46:44.780 に答える
0

internal <ul>before while ループを追加するだけで、サブカテゴリを取得できました。

        <?php 
          echo "<ul>";
          while($row1=mysql_fetch_array($result1))
             {
         ?>
               <li><?php echo $row1['name_en-GB']?></li>
                <?php
             }
                echo " </ul>";
于 2013-10-07T04:11:12.950 に答える