geplaatst door: DennisvdH
Hallo allemaal,

Ik weet niet of er veel macfreaks ook programmeren maar ik kan het allicht proberen.

Ik ben bezig met een website waarvoor ik een dynamisch menu gebruik. Die wordt opgehaald uit de db en bestaat uit categorien en wanneer erop geklikt is verschijnen ook de deelpaginas (subpaginas) in het menu onder de juiste categorie.

Het probleem is nu dat hij alleen de 1e categorie ophaalt, en de subpaginas (waarvan je eerder op de juiste categorie hebt geklikt) onder de 1e categorie plaatst.


<?
// MENU OPHALEN

if(!isset($_GET['m'])){

$query = "SELECT * FROM menu WHERE publiek='1' AND sub='0' ORDER BY id ASC";
$sql = mysql_query($query) or die ( mysql_error( ) );

while($record = mysql_fetch_assoc($sql)){
echo '<li class="none"> <a href="?id='.$record['paginaid'].'&m='.$record['id'].'">'.$record['naam'].'</a></li>';
}

} else {

$query = "SELECT * FROM menu WHERE publiek='1' AND sub='0' ORDER BY id ASC";
$sql = mysql_query($query) or die ( mysql_error( ) );

while($record = mysql_fetch_assoc($sql)){
echo '<li class="none"> <a href="?id='.$record['paginaid'].'&m='.$record['id'].'">'.$record['naam'].'</a></li>';


$query = "SELECT * FROM menu WHERE publiek='1' AND sub='".$_GET['m']."' ORDER BY id ASC";
$sql = mysql_query($query) or die ( mysql_error( ) );

while($record = mysql_fetch_assoc($sql)){
echo '<li class="sub"> <a href="?id='.urlencode($record['paginaid']).'&amp;m='.urlencode($record['sub']).'">'.$record['naam'].'</a></li>';
}
}

}
?>

Het script deugt qua veiligheid niet, dat weet ik, maar dat is een laatste zorg. Eerst werkend krijgen
:wink:

Bedankt alvast!

Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 20:01    reactie #1
geplaatst door: Administrator
[news]Zie niet zo snel iets raars, maar als je nu i.p.v. mysql_fetch_assoc($sql) mysql_fetch_array($sql) gebruikt?

of mysql_fetch_object($sql)? Bij dit laatste worden wel je verwijzingen anders $record->naam i.p.v. $record['naam'].[/news]

MacFreak Admin
- MacBook Pro 15inch
Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 20:36    reactie #2
geplaatst door: DennisvdH
Met Array werkt helaas ook niet..

http://vn.dennisvdhaar.nl/?id=7&m=3

Voorbeeldje wat het probleem is (eerst op Assortiment geklikt, krijg je nu dit).

Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 20:51    reactie #3
geplaatst door: Administrator
Door dit voorbeeldje zie ik wat er fout gaat en dat dit in de else clause gebeurd.

Ik ben ff bezig met een voorbeeldje te maken, want ik zou het iets anders doen.

Zal zo even posten.

MacFreak Admin
- MacBook Pro 15inch
Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 20:57    reactie #4
geplaatst door: mvdg
De tweede 'while' is niet afgesloten door een '}'.
Daardoor loopt hij niet langs alle hoofditems maar pakt alleen de eerste
en gaat daarna door met de subitems.

} else {

$query = "SELECT * FROM menu WHERE publiek='1' AND sub='0' ORDER BY id ASC";
$sql = mysql_query($query) or die ( mysql_error( ) );

while($record = mysql_fetch_assoc($sql)){
echo '<li class="none"><a href="?id='.$record['paginaid'].'&m='.$record['id'].'">'.$record['naam'].'</a></li>';
}    //  <---- deze '}' is er dus bijgezet

Het kan dan natuurlijk ook nog zo zijn dat je de subitems onder het betreffende hoofditem wilt hebben, je moet dan telkens bij het uitvoeren van een hoofditem even checken of het id gelijk is aan $_GET['m'] en zo ja, dan het gedeelte uitvoeren waar je de subitems laat zien.

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 21:04    reactie #5
geplaatst door: Administrator
Ik had dit verzonnen (wel ff spaties voor in de, < li en < a href tag weghalen.
Tevens heb ik de variable namen aangepast. Je overschreef in de else ook het record van de
hoofdcategorieën dus het kan wel kloppen dat hij na de eerste stopt, omdat je record niet meer
bestaat.


<?
// MENU OPHALEN

$menu = $_GET['m'];

if(empty($menu)){

$querymain = "SELECT * FROM menu WHERE publiek='1' AND sub='0' ORDER BY id ASC";
$sqlmain = mysql_query($querymain) or die ( mysql_error( ) );

while($mainmenu = mysql_fetch_array($sqlmain)){
echo '< li class="none">< a href="?id='.$mainmenu['paginaid'].'&m='.$mainmenu['id'].'">'.$mainmenu['naam'].'</a></li>';
}

} else {

$querymain = "SELECT * FROM menu WHERE publiek='1' AND sub='0' ORDER BY id ASC";
$sqlmain = mysql_query($main) or die ( mysql_error( ) );

while($mainmenu = mysql_fetch_array($sqlmain)){
echo '< li class="none">< a href="?id='.$mainmenu['paginaid'].'&m='.$mainmenu['id'].'">'.$mainmenu['naam'].'</a></li>';


if ($mainmenu['id'] == $menu) {

$querysub = "SELECT * FROM menu WHERE publiek='1' AND sub='".$menu."' ORDER BY id ASC";
$sqlsub = mysql_query($querysub) or die ( mysql_error( ) );

while($submenu = mysql_fetch_array($sqlsub)){
echo '< li class="sub"> < a href="?id='.urlencode($submenu['paginaid']).'&amp;m='.urlencode($submenu['sub']).'">'.$submenu['naam'].'</a></li>';
}
}
}

}
?>

Edit:
Het is idd wat mvdg zegt. De if-statement is erg handig om niet telkens een sql call te doen.

MacFreak Admin
- MacBook Pro 15inch
Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 21:17    reactie #6
geplaatst door: DennisvdH
Hartstikke bedankt!!!  :shakehands:

http://vn.dennisvdhaar.nl hij werkt prima zoals ik wil, en ik snap nu ook wat ik fout heb gedaan, een les voor de volgende keer  :tounge:

Nog even beveiligen e.d.

Top!  :biggrin:

Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 21:29    reactie #7
geplaatst door: Administrator
alleen heb je nog twee foutjes op de startpagina:

Notice: Undefined index: m in /home/dennisvdhaar.nl/vn/index.php on line 41
Notice: Undefined index: id in /home/dennisvdhaar.nl/vn/index.php on line 87

Meestal krijg je deze fout als een index niet gedefinieerd is. Variabelen die je uit de $_get()
en $_post() omgeving wil gebruiken eerst deze dan in een lokale variabele stoppen.
Volgens mij gebruik je een get of post variabele ergens in je code zonder deze te definiëren.

MacFreak Admin
- MacBook Pro 15inch
Probleem met menu en submenu's inladen [PHP & MySQL]
9 maart 2008 - 22:04    reactie #8
geplaatst door: DennisvdH
Fixed  :thumbs-up:

Even door een Isset gehaald.