Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP dynamické menu za pomocí MySQL

V tabulce helppc_menu mam ulozene jakoby kategorie (rodicovske menu) a v menu_sub jsou jakoby subclass (deti) a potreboval bych poradit jak toto vypsat pomoci cyklu. Jde o to, aby se vypsala polozka z helppc_menu a hned pod to aby se vypsali polozky z helppc_menu_sub, ktere maji v position stejne cislo jako helppc_menu v ID a pote zase polozka z helppc_menu a .....
Doufám že je to srozumitelné.
Děkuji za jakoukoliv pomoc.

CREATE TABLE IF NOT EXISTS `helppc_menu` (
  `ID` int(10) NOT NULL auto_increment,
  `name_cz` varchar(100) collate utf8_czech_ci NOT NULL,
  `name_eng` varchar(100) collate utf8_czech_ci NOT NULL,
  `name_de` varchar(100) collate utf8_czech_ci NOT NULL,
  `obsah` text collate utf8_czech_ci NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=3 ;

CREATE TABLE IF NOT EXISTS `helppc_menu_sub` (
  `ID` int(10) NOT NULL auto_increment,
  `name_cz` varchar(100) collate utf8_czech_ci NOT NULL,
  `name_eng` varchar(100) collate utf8_czech_ci NOT NULL,
  `name_de` varchar(100) collate utf8_czech_ci NOT NULL,
  `site` varchar(200) collate utf8_czech_ci NOT NULL,
  `title_cz` varchar(250) collate utf8_czech_ci NOT NULL,
  `title_eng` varchar(250) collate utf8_czech_ci NOT NULL,
  `title_de` varchar(250) collate utf8_czech_ci NOT NULL,
  `rank` int(100) NOT NULL,
  `position` int(100) NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=7 ;
Předmět Autor Datum
Mám zatím toto, ale nefunguje to tak jak potřebuji <?php function menu($link){?> /* celý div id men…
tomas.kulhanek 08.11.2010 20:51
tomas.kulhanek
Buď jsem nepochopil přesně zadání nebo to není zas tak těžké... Vypsat v cyklu věty z tabulky helpp…
host 08.11.2010 20:56
host
já chápu jak to udělat, ovšem nejsem schopnej to tak udělat.. neustále to mám špatně.. neumím moc pr…
tomas.kulhanek 08.11.2010 20:58
tomas.kulhanek
nějak takto? function menu($link){ $dotaz = 'SELECT * FROM `helppc_menu`'; $vysledek = mysql_query(… poslední
tomas.kulhanek 08.11.2010 21:59
tomas.kulhanek

Mám zatím toto, ale nefunguje to tak jak potřebuji

<?php function menu($link){?>
/* celý div id menu se má opakovat tolikrát dokud bude mít co menu_name vypisovat */
<div id="menu">
            <div class="menu_head">
                <div class="menu_name"><?php menu_name($link); ?></div>
            </div>
            <div class="menu_body">
                <div class="menu_obsah">
                <?php menu_sub($link); ?>
                </div>
            </div>
            <div class="menu_footer"></div>
        </div>
        <?php 
}

function menu_sub($link) {

$dotaz = 'SELECT *  FROM `helppc_menu_sub` ORDER BY `rank` ASC';

                    $vysledek = mysql_query($dotaz, $link) or die ("SQL dotaz nešlo provést"); ?>
<ul> <?php while ($radek = mysql_fetch_array($vysledek)) //Načte výsledný řádek do asociativního pole 
                     { ?>
            <li><a href="index.php?page=<?php echo $radek['site']; ?>" title=""><?php print $radek['name_cz']; ?></a></li>
            <?php } ?>            
        </ul> <?php
}

function menu_name($link) {

$dotaz = 'SELECT *  FROM `helppc_menu` ORDER BY `ID` ASC';

                    $vysledek = mysql_query($dotaz, $link) or die ("SQL dotaz nešlo provést");
                    while ($radek = mysql_fetch_array($vysledek)) //Načte výsledný řádek do asociativního pole 
                     { 
            echo $radek['name_cz'];
} 
} ?>

Buď jsem nepochopil přesně zadání nebo to není zas tak těžké...

Vypsat v cyklu věty z tabulky helppc_menu předpokládám dokážeš? Do tohoto cyklu vnoříš obdobně druhý cyklus, který bude vybírat věty z tabulky helppc_menu_sub s podmínkou WHERE position = $ID_helppc_menu. V té proměnné $ID_helppc_menu budeš mít samozřejmě uloženo aktuální ID věty z nadřazeného cyklu. A pokud se položky mají na stránce chovat jako menu, bude asi vhodné použít nečíslovaný seznam (UL) a položky vypisovat tagem LI.

nějak takto?

function menu($link){
$dotaz = 'SELECT *  FROM `helppc_menu`';

					$vysledek = mysql_query($dotaz, $link) or die ("SQL dotaz nešlo provést"); 
					while ($radek = mysql_fetch_array($vysledek)) //Načte výsledný řádek do asociativního pole 
					 { $a = $radek['ID'];
                     
for($c=1; $c<$a; $c++){
	
	$dotaz = "SELECT *  FROM `helppc_menu_sub` WHERE `position` ='$c' ORDER BY `rank` ASC";

					$vysledek = mysql_query($dotaz, $link) or die ("SQL dotaz nešlo provést"); while ($radek = mysql_fetch_array($vysledek)) //Načte výsledný řádek do asociativního pole 
					 { 
        	print $radek['name_cz']; } 
echo($c."<br>");
}
}

Zpět do poradny Odpovědět na původní otázku Nahoru