Anzeigen von Kategorien mit For-Schleife

qsrs

Erfahrenes Mitglied
Hallo,

habe ein Skript mit Haupt- und Subkategorien. Die Tabelle ist wie im Anhang strukturiert. Hauptkategorien bekommen in der Tabelle immer den Wert 0, und Subkategorien fortlaufende Zahlen (Subkategorie 1 = Wert 1, Subkategorie 2 = Wert 2 etc.) Ich habe ein Select-Feld, welches die Subkategorien ausgibt. Das funktioniert soweit alles. Jetzt möchte ich aber, dass hinter der Subkategorie in Klammern auch die Hauptkategorie steht. Beispiel:

PHP (Skripte)
CGI (Skripte)
Treiber (Software)
Tools (Software)

Meine Abfrage hierzu lautet im Moment:
PHP:
$sql4 = "SELECT * FROM `$dbtable4` WHERE `category_id` != 0 ORDER BY `category` ASC LIMIT 0, 30"; 
$query4 = mysql_query ($sql4, $dbconnect);
Die For Schleife:
PHP:
for ($i2 = 0; $i2 < mysql_num_rows ($query4); $i2++) {
$array4[$i2] = mysql_fetch_array ($query4);
}
Und Das Select-Feld sieht so aus:
HTML:
<select name="search" id="search" style="width:321px">
<?php for ($i2 = 0; $i2 < count ($array4); $i2++) { echo "<option value=\"".$array4[$i2][category]."\">".$array4[$i2][category]."</option><br>"; } ?>
</select>
Ich bin mir nicht ganz sicher wie ich das umsetzen kann, dass zu der Subkategorie auch die Hauptkategorie angezeigt wird. Vielen Dank für Antworten.
 

Anhänge

  • categories.jpg
    categories.jpg
    50,7 KB · Aufrufe: 105
Du musst fuer jedes Item im Select anhand der Category-ID die entsprechende Category aus der DB holen.

Sieht dann so aehlich aus wie das folgende Script. Damit stelle ich Tabellen mit Linux Software dar, geordnet nach Kategorien. Fuer jeden Eintrag wird dann die Lizenz aus der Datenbank ausgelesen.
Hoffe Du kannst mit dem Beispiel was anfangen.
PHP:
$linuxsofts=mysql_query("select * from linuxsoft where category='$category[0]' order by title",$db);
while ($linuxsoft=mysql_fetch_row($linuxsofts))
 {
 ?>
 <tr>
 <td><? printf($linuxsoft[1]); ?></td>
 <td><a href="<? printf($linuxsoft[3]); ?>">
 <?
 $length=strlen($linuxsoft[3]);
 if ($length>40)
  {
   $slashpos=strpos($linuxsoft[3],"/",35);
   $urlpart1=substr($linuxsoft[3],0,$slashpos+1);
   $urlpart2=substr($linuxsoft[3],$slashpos+1,$length-($slashpos+1));
   printf($urlpart1." ".$urlpart2);
  }
 else
  {
   printf($linuxsoft[3]); 
  }
 ?></a></td>
 <?
 $licenses=mysql_query("select * from licenses where id='$linuxsoft[4]'",$db);
 $license=mysql_fetch_array($licenses);
 ?>
 <td><a href="<? printf($license[2]); ?>"><? printf($license[1]); ?></a></td>
 </tr>
 <?
 }
 
Ich bin das Ganze jetzt noch einmal angegangen und habe das Select-Feld wie folgt erweitert:

PHP:
<?php
for ($i2 = 0; $i2 < count ($array1); $i2++) {
	 $sql5 = "SELECT * FROM `$dbtable4` WHERE `id` = ".$array1[$i2][category_id]."";
	 $query5 = mysql_query ($sql5, $dbconnect);
	 $array5 = mysql_fetch_array ($query5);
	 echo "<option value=\"".$array1[$i2][id]."\">".$array1[$i2][category]." (".$array5[category].")</option>";
	 }
?>
Ich bekomme jedoch nur bei den ersten zwei Subkategorien auch die Hauptkategorie mit angezeigt. Alle weiteren sind leer. Was mache ich hier falsch?
 
Zuletzt bearbeitet:
Zurück