2016-06-20 8 views
1

Ich habe dieses Problem, ich habe eine "Produkt-Tabelle" und es enthält Produkte Beschreibung, Preis, Kategorie, Unterkategorie und ein paar andere Zeilen.echo Kategorien und Unterkategorien von mysql Tabelle

Ich habe diesen PHP-Block, der eine dynamische Akkordeon mit Kategorien und Unterkategorien abrufen und echo und trimmen die Duplikate soll.

Ich fühle mich wie ich in der Nähe bin, aber ich könnte Meilen entfernt sein ..

<?php 
    $sql = mysql_query("SELECT DISTINCT category FROM products"); 
    while($row = mysql_fetch_array($sql)) { 
    $category = $row['category']; 

    $sql2 = mysql_query("SELECT DISTINCT subcategory FROM products WHERE category = '$category'"); 
    while($row = mysql_fetch_array($sql2)) { 
    $subcategory = $row['subcategory']; 
    echo '<h3><a href="#">'.$category.'</a></h3> 
      <div> 
      <p><a href="#">'.$subcategory.'</a></p> 
      </div>'; 
    }} 
?> 

Das Problem ist, dass ich immer Kategorien dupliziert ..

enter image description here

+0

Durch Ihren eigenen Code kann eine bestimmte Kategorie mehrere Unterkategorien haben, und jede Unterkategorie kann mit demselben übergeordneten Element angezeigt werden. Was versuchst du hier zu erreichen? –

+0

ja, ich hatte Angst ich habe es nicht gut erklärt .. jede Kategorie einmal, mit Unterkategorien unter .. nochmal jeweils einmal .. –

+1

Bitte [stoppe mit mysql_ * 'Funktionen] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-uses-mysql-funktionen-in-php). [Diese Erweiterungen] (http://php.net/manual/en/migration70.removed-exts-sapis.php) wurden in PHP 7 entfernt. Erfahren Sie mehr [vorbereitet] (http://en.wikipedia.org/ (http://php.net/manual/en/pdo.prepared-statements.php) und [MySQLi] (http://php.net/manual/en/mysqli.quickstart .prepared-statements.php) und erwäge die Verwendung von PDO, [es ist wirklich ziemlich einfach] (http://jayblanchard.net/demystifying_php_pdo.html). –

Antwort

0

Das Problem ist, dass Sie die primäre Kategorie <h3> innerhalb der verschachtelten Unterkategorie while loop. Die einfache Lösung wäre, diese in die äußere Hauptkategorie while Schleife zu verschieben.

Sie verwenden auch die $row Variable in Ihrer verschachtelten Schleife, die schlampig ist und zu Verwirrung führen könnte. Ich habe diese beiden Variablen zur besseren Übersichtlichkeit als $rowCategory bzw. $rowSubCategory umbenannt.

<?php 
$sql = mysql_query("SELECT DISTINCT category FROM products"); 
while($rowCategory = mysql_fetch_array($sql)) { 
    $category = $rowCategory['category']; 
    // move main categories up and out here 
    echo '<h3><a href="#">'.$category.'</a></h3>'; 

    $sql2 = mysql_query("SELECT DISTINCT subcategory FROM products WHERE category = '$category'"); 
    while($rowSubCategory = mysql_fetch_array($sql2)) { 
    $subcategory = $rowSubCategory['subcategory']; 
    // just echo subcategories here 
    echo '<div> 
      <p><a href="#">'.$subcategory.'</a></p> 
     </div>'; 
    } 
} 
Verwandte Themen