2016-07-12 26 views
0

Ich möchte KATEGORIEN anzeigen und dann UNTERKATEGORIEN auf Maus über zeigen. Ich habe 2 Tabellen:Anfrage an Kategorien und Unterkategorien anzeigen

create table categorias (
`idCategoria` int NOT NULL PRIMARY KEY, 
`nomCategoria` varchar (55) NOT NULL, 
`desCategoria` varchar (255), 
`tipoCategoria` int (2), 
`fotoCategoria` varchar (55), 
`metaTiCategoria` varchar (255), 
`metaDesCategoria` varchar (255), 
`keywordsCategoria` varchar(100) 
) 

und

CREATE TABLE IF NOT EXISTS `subcategoria` (
    `idSubcate` int(3) NOT NULL AUTO_INCREMENT, 
    `nomSubcate` varchar(55) NOT NULL, 
    `fotoSubcate` varchar(255) DEFAULT NULL, 
    `metaTiSubcate` varchar(255) DEFAULT NULL, 
    `metaDesSubcate` varchar(255) DEFAULT NULL, 
    `keywordsSubcate` varchar(255) DEFAULT NULL, 
    `tipoSubcate` int(1) DEFAULT NULL, 
    `cateSubcate` int(3) DEFAULT NULL, 
    PRIMARY KEY (`idSubcate`)) 

Der PHP-Code:

<ul class="grid cs-style-4"> 
    <? 
     $cate = 'communit_new_site_2016.categorias'; 
     $qry = ("SELECT * 
     from $cate 
     where $cate.tipoCategoria = 1 or $cate.tipoCategoria=3 
     ORDER BY $cate.nomCategoria 
     "); 
     $rst = mysql_query($qry); 
     $tN = mysql_num_rows($rst); 
     $cN = 1; 
     ?> 
     <? 
      while($categoria = mysql_fetch_assoc($rst)) { 


     ?> 
     <li class="col-xs-12 col-sm-12 col-md-3"> 
     <div class="col-xs-12 col-sm-12 col-md-12 text-center"> 
     <figure> 
     <div><img src="<?= $categoria['fotoCategoria'] ?>" alt="<?= $categoria['nomCategoria'] ?>"></div> 
     <figcaption class="subcate"> 
     <? 
      $sub = 'communit_new_site_2016.subcategoria'; 
      $catein = 'communit_new_site_2016.categorias'; 
      $qry1 = ("SELECT nomSubcate 
       from $sub 

       ORDER BY $sub.nomSubcate 
      "); 
      $rst1 = mysql_query($qry1); 
      $tN1 = mysql_num_rows($rst1); 
      $cN1 = 1; 
     ?> 
     <? 
      while($subcate = mysql_fetch_assoc($rst1)) { 


     ?> 
     <span> <?= $subcate['nomSubcate']?></span> 
      <? 

     if($cN1 != $tN1) { 
     ?> 

     <? 
      } 
     $cN1++; 
     } 
     ?>  
     </figcaption> 
     </figure> 
     </div> 
     <div class="col-xs-12 col-sm-12 col-md-12 text-center"> 
       <a href=""><span class="caption"><?=$categoria['nomCategoria']?></span></a> 
      </div> 
    </li> 
     <? 

     if($cN != $tN) { 
     ?> 

     <? 
      } 
     $cN++; 
     } 
    ?>  
    </ul> 

Die Webseite ist www.communita.com.mx/interior.php. Auch gibt es zwei Arten: Innen (Innen) und Außen (Außen). Deshalb verwende ich tipoCategoria = 1 (indoor) und 3 für drinnen und draußen.

Vielen Dank im Voraus.

+0

Wie hängen Kategorien mit Unterkategorien zusammen? –

+0

@ Nicht Panic Unterkategorien hat einen anderen Schlüssel auf CateSubcate Referenzen Kategorien (idCategorias) – goeknax

+0

Danke, ich dachte, dass war es wahrscheinlich, aber war mir nicht sicher. Ist dir aufgefallen, dass du einige "if" Blöcke in deinem PHP hast, in denen nichts ist? –

Antwort

0

Hier ist, wie ich dies mit einem linken Join tun würde. Ich habe dies nicht getestet, weil ich nicht Ihre Datenbank habe, aber es sollte Ihnen die allgemeine Idee meines Ansatzes zeigen:

Zuerst führen Sie die Abfrage und lesen Sie die Zeilen in einem mehrdimensionalen Array gruppiert nach Kategorie ID:

<?php 
$cate = 'communit_new_site_2016.categorias'; 
$sub = 'communit_new_site_2016.subcategoria'; 
$qry = ("SELECT idCategoria, nomCategoria, fotoCategoria, idSubcate, nomSubcate 
     FROM $cate c LEFT JOIN $sub s ON c.idCategoria = s.cateSubcate 
     WHERE tipoCategoria = 1 OR tipoCategoria = 3 ORDER BY nomCategoria, nomSubcate"); 
$rst = mysql_query($qry); 
while ($row = mysql_fetch_assoc($rst)) { 
    // use the category id as a key here to group the array 

    // these two values will just overwrite with the same thing if they're repeated 
    $categorias[$row['idCategoria']]['nomCategoria'] = $row['nomCategoria']; 
    $categorias[$row['idCategoria']]['fotoCategoria'] = $row['fotoCategoria']; 

    // the subcategory will be added to an inner array 
    $categorias[$row['idCategoria']]['subcategoria'][$row['idSubcate']] = $row['nomSubcate']; 
}?> 

Nachdem Sie ein Array in dieser Struktur haben, wird es einfacher sein, den HTML-Code auszugeben, den Sie erhalten möchten.

<ul class="grid cs-style-4"> 
<?php foreach ($categorias as $categoria): ?> 
    <li class="col-xs-12 col-sm-12 col-md-3"> 
     <div class="col-xs-12 col-sm-12 col-md-12 text-center"> 
      <figure> 
       <div> 
        <img src="<?= $categoria['fotoCategoria'] ?>" 
          alt="<?= $categoria['nomCategoria'] ?>"> 
       </div> 
       <figcaption class="subcate"> 
        <?php foreach ($categoria['subcategoria'] as $id => $subcategoria): ?> 
         <span><?= "$id: $subcategoria" ?></span> 
        <?php endforeach ?> 
       </figcaption> 
      </figure> 
     </div> 
     <div class="col-xs-12 col-sm-12 col-md-12 text-center"> 
      <a href=""><span class="caption"><?= $categoria['nomCategoria']?></span></a> 
     </div> 
    </li> 
<?php endforeach ?> 
</ul> 
+0

Lass mich das versuchen! Vielen Dank. – goeknax

+0

@ dont-panic vielen Dank! du hilfst mir sehr. funktioniert perfekt. Sie können in den vorher geposteten Link sehen = D – goeknax

+0

Großartig! Schön aussehende Seite. –

Verwandte Themen