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.