En keksinyt parempaa otsikkoa.
Eli kyseessä on valikko jossa on kategoria ja sen alikategoriat.
En keksi millään miten saan että koodi tulostaisi alakategoriotten jälkeen tuon </div> tekstin
<a class="item1" href="javascript:void(0)">Kategoriat</a> <div class="section"> <?php $result = mysql_query("SELECT ala.id, cat.name, ala.name FROM alakategoriat ala LEFT JOIN category cat ON cat.id = ala.kategoria ORDER BY cat.id, ala.name", $yhteys); $tempCat = null; while ($row = mysql_fetch_row($result)) { if ($tempCat != $row[1]) { // Kategoria echo "\t\t<a class=\"item2 arrow\" href=\"javascript:void(0)\">" . $row[1] . "<img src=\"images/arrow1.gif\" width=\"10\" height=\"12\"/></a>\n"; echo "\t\t\t<div class=\"section\">\n";} // Alakategoria echo "\t\t\t\t<a class=\"item2\" href=?page=pics&id=" . $row[0] . ">" . $row[2] . "</a>\n"; $tempCat = $row[1];} ?> </div>
Eli vähän tarkennusta siis sitten kun kategorian kaikki alakategoriat on tulostettu niin tulostuisi </div> teksti ja sitten alkaisi tulostumaan uus kategoria ja sen alakategoriat jne.
Tän näkönen siitä pitäisi tulla (koodia vähän karsittu)
<a class="item1" href="javascript:void(0)">Kategoriat</a> <div class="section"> <a class="item2 arrow" href="javascript:void(0)">Kategoriaa> <div class="section"> <a class="item2" href=#>Alakategoria</a> <a class="item2" href=#>Alakategoria</a> <a class="item2" href=#>Alakategoria</a> </div> <a class="item2 arrow" href="javascript:void(0)">Kategoria</a> <div class="section"> <a class="item2" href=#>Alakategoria</a> </div> </div>
Menisköhän jotenkin näin äkkiä sutastuna:
<a class="item1" href="javascript:void(0)">Kategoriat</a> <div class="section"> <?php $kategoriat = mysql_query("SELECT id, name FROM category", $yhteys); // haetaan kategoriat $result = mysql_query("SELECT ala.id, cat.name, ala.name FROM alakategoriat ala LEFT JOIN category cat ON cat.id = ala.kategoria ORDER BY cat.id, ala.name", $yhteys); while ($row = mysql_fetch_row($kategoriat)) { // Kategoria echo "\t\t<a class=\"item2 arrow\" href=\"javascript:void(0)\">" . $row[1] . "<img src=\"images/arrow1.gif\" width=\"10\" height=\"12\"/></a>\n"; echo "\t\t\t<div class=\"section\">\n"; // Alakategoriat while ($rowa = mysql_fetch_row($result)) { if ( $rowa[1] == $row[1] ) { echo "\t\t\t\t<a class=\"item2\" href=?page=pics&id=" . $rowa[0] . ">" . $rowa[2] . "</a>\n"; } } echo "</div>"; } ?> </div>
Jokin vika vielä kun nyt se ei tulosta ton toisen kategorian alakategorioita
Niin no vikahan on siinä, että $resultista loppuu rivit jo ekalla kertaa. Korjaussarja:
<a class="item1" href="javascript:void(0)">Kategoriat</a> <div class="section"> <?php $kategoriat = mysql_query("SELECT id, name FROM category", $yhteys); // haetaan kategoriat $result = mysql_query("SELECT ala.id, cat.name, ala.name FROM alakategoriat ala LEFT JOIN category cat ON cat.id = ala.kategoria ORDER BY cat.id, ala.name", $yhteys); while ($row = mysql_fetch_row($kategoriat)) { // Kategoria echo "\t\t<a class=\"item2 arrow\" href=\"javascript:void(0)\">" . $row[1] . "<img src=\"images/arrow1.gif\" width=\"10\" height=\"12\"/></a>\n"; echo "\t\t\t<div class=\"section\">\n"; // Alakategoriat for (int $i = 0 ; $i < mysql_num_rows($result) ; ++$i) { $alaid = mysql_result($result, $i, 0); $catnimi = mysql_result($result, $i, 1); $alanimi = mysql_result($result, $i, 2); if ( $catnimi == $row[1] ) { echo "\t\t\t\t<a class=\"item2\" href=?page=pics&id=" . $alaid . ">" . $alanimi . "</a>\n"; } } echo "</div>"; } ?> </div>
Sama esimerkiksi template-malliin (tietokantahaut vielä muualle, väleillä väliä jos kaipaa lisäselkeyttä), toiminnasta en sano mittään. Tuli tykästyttyä tähän Symfony frameworkkiin tutustuessa.
<?php $kategoriat = mysql_query( "SELECT name FROM category", $yhteys ); $alakategoriat = mysql_query( "SELECT ala.id, cat.name, ala.name FROM alakategoriat ala LEFT JOIN category cat ON cat.id = ala.kategoria ORDER BY cat.id, ala.name", $yhteys ); ?> <a class="item1" href="javascript:void(0)">Kategoriat</a> <div class="section"> <?php while ( $rowK = mysql_fetch_array( $kategoriat ) ): ?> <a class="item2_arrow" href="javascript:void(0)"> <?php echo $rowK[ 'name' ]; ?> <img src="images/arrow1.gif" width="10" height="12" /></a>; <div class="section">; <?php while ( $rowAK = mysql_fetch_array( $alakategoriat ) ): ?> <?php if ( $rowAK[ 'ala.name' ] === $rowK[ 'name' ] ): ?> <a class="item2" href="?page=pics&id=<?php echo $rowAK[ 'ala.id' ]; ?>"><?php echo $rowAK[ 'ala.name' ]; ?></a> <?php endif; ?> <?php endwhile; ?> </div> <?php endwhile; ?> </div>
Tämä toimii muuten mutta se ei tulosta linkkiä mitä toisessa kategoriassa on
<?php $kategoriat = mysql_query("SELECT name FROM `category` ", $yhteys); //kategoriat $result = mysql_query("SELECT ala.id, cat.name, ala.name FROM alakategoriat ala LEFT JOIN category cat ON cat.id = ala.kategoria ORDER BY cat.id, ala.name", $yhteys); while ($row = mysql_fetch_row($kategoriat)) { // Kategoria echo "\t\t<a class=\"item2 arrow\" href=\"javascript:void(0)\"> " . $row[0] . "<img src=\"images/arrow1.gif\" width=\"10\" height=\"12\"/></a>\n"; echo "\t\t\t<div class=\"section\">\n"; // Alakategoriat while ($rowa = mysql_fetch_row($result)) { if ( $rowa[1] == $row[0] ) { echo "\t\t\t<a class=\"item2\" href=?page=pics&id=" . $rowa[0] . "> " . $rowa[2] . "</a>\n"; } } echo "\t\t\t</div>\n"; } ?>
Eikö tuo minun korjaussarja auttanut?
ei
Parse error: syntax error, unexpected T_VARIABLE, expecting ';'
Aihe on jo aika vanha, joten et voi enää vastata siihen.