0

すべての適切なカテゴリを選択入力に出力するのに少し問題があります。現時点では、子を持つすべてのカテゴリを追加する必要があります。問題は、それが完全に正しいわけではないということです。メイン カテゴリとそれに属するサブカテゴリの最初のカテゴリのみが表示されますが、次のメイン カテゴリ アイテムは表示されません。

例えば:

  1. メインカテゴリー: スネア サブカテゴリー: タマ サブカテゴリー サブカテゴリー: スターフォニック

  2. メインカテゴリー: シンバル サブカテゴリー: パイステ

最初のメイン カテゴリ (スネアなど) とそれにリンクされているすべてのカテゴリのみが表示されます。

また、サブカテゴリを持たないカテゴリとサブカテゴリを持つカテゴリを表示したいと考えています。

  $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 に答える