[PHP] Mysql

Pagina: 1
Acties:

Onderwerpen


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
edit:

Wat happent to mij topic titel? Geloof dat ik in het verkeerde venstertje de rest heb getypt :P

Hoe maak je in php een goed systeem om op een pagina een menu te laten zien. Zodra je op een menu item klikt de pagina info (titel + inhoud) en eventueel een submenu te laten zien?

De manier waarop ik dit nu doe werkt niet zoals ik het wil.

Ik haal namelijk met een while lus het menu op:

code:
1
2
3
4
5
6
7
8
9
include ('dbconnect/dbconnect.php');
$result = mysql_query("SELECT menutitel FROM pages");
//zet om in variabelen
while($r=mysql_fetch_array($result))
{    
$menutitel=($r["menutitel"]);

echo "<p><a href='index.php?menutitel=$menutitel' target='_self'>$menutitel</a></p>";
}


Maar als ik nu het submenu voor een menu item op wil halen krijg ik dat dus niet onder de gewenste menu optie.

Sub menu ophalen voor een menu optie:
code:
1
2
3
4
5
6
7
8
9
10
if ($submenu = "yes")
{ 

$result = mysql_query("SELECT submenu FROM subpages WHERE menutitel= '$menutitel'");
while($r=mysql_fetch_array($result))
{    
$submenu=($r["submenu"]);

echo "<p><a href='index.php?submenu=$submenu' target='_self'>$submenu</a></p>";
}


Hoe pak je zoiets aan ??

Zo als ik het nu doe werkt niet want ik kan het submenu niet onder de menu optie plaatsen.... :X

[ Voor 15% gewijzigd door ViNyL op 20-11-2003 18:48 ]


  • dingstje
  • Registratie: Augustus 2002
  • Laatst online: 02-01-2024
Iets als:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$query = mysql_query("SELECT name FROM pages WHERE parent='0'");
// Selecteer alle records waar de parent '0' is, dit betekent de hoofdmenuitems
while ($row = mysql_fetch_array($query))
{
echo "<a href=\"{$row['name']}\">{$row['name']}</a><br />";
// Poep de hoofdlinks uit
if (isset($_GET['submenu']))
$subquery = mysql_query("SELECT name FROM pages WHERE parent='". addslashes($_GET['submenu']) ."'");
while ($row = mysql_fetch_array($query))
echo "<a href=\"{$row['name']}\">{$row['name']}</a><br />";
// Poep eventueel submenu's uit als daarom gevraagd wordt
echo "<br />";
}
?>


Bij wijze van voorbeeld :-)

If you can't beat them, try harder


Verwijderd

neem aan dat je al die menutitels in een tabel hebt staan, de hoofdmenu's en submenu's, als je daar nou een veld is_sub tussen hebt staan ofzo, die ingeval van een hoofdmenu een 0 krijgt en in geval van een submenu het id van het bijbehorende hoofdmenu, dan kan je in je eerst loop een tweede loop doen die alle submenu's bij het hoofdmenu haalt...

zoiets??...

//edit, dat wat in de post hierboven staat dus :P

[ Voor 10% gewijzigd door Verwijderd op 20-11-2003 18:57 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 17-09 14:05

.oisyn

Moderator Devschuur®

Demotivational Speaker

PHP:
1
if ($submenu = "yes")


maak daar eens een == van

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Mijn menu + submenu werkt wel nu. Hij kijkt idd of in de tabel menu submenu op yes staat. Zo ja dan haalt hij submenu alle items waarbij het veld menu de titel van de bijbehorende menu optie is.

Wat ik niet voor elkaar krijg is hoe ik de submenu items onder een menu item krijg waar ze bij horen.

Ik denk dat dit komt omdat ik beide op haal met een while loop. Maar hoe ik dit anders zou moeten doen dat weet ik niet.

  • Bubbaman
  • Registratie: Juli 2003
  • Laatst online: 20-03-2022
Hieronder een stukje van een werkend menuutje met submenu's:

PHP:
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//OPHALEN HOOFDMENU TOPICS
$mencnt = 1;
$tmenuquery = mysql_query("SELECT DISTINCT topmenu_item,tmen_pos FROM menu ORDER BY tmen_pos");
while($toprow = mysql_fetch_array($tmenuquery))
{
  $tmen_pos = $toprow[tmen_pos];
  $topmenu_item = stripslashes($toprow[topmenu_item]);

//OPHALEN SUBMENU TOPICS (IN DE EERSTE LOOP!)
  $smenuquery = mysql_query("SELECT submenu_item,open_file,file_parms FROM menu WHERE tmen_pos='$mencnt' and suspended<'1' ORDER BY smen_pos");
  while($subrow = mysql_fetch_array($smenuquery)){
    $submenu_item = stripslashes($subrow[submenu_item]);
    $open_file = stripslashes($subrow[open_file]);
    $file_parms = stripslashes($subrow[file_parms]);

enzovoort....
De tabel is heel simpel: recnr, topmenunr, topmenutopic, submenunr, submenutopic. De eerste loop haalt het hoofdmenu topic, daarna in de tweede loop alle submenutpoics die daar bij horen.

Werkend voorbeeld op www.jobzzonline.com (stuurmenu aan de linkerkant); sorry voor de link, maar ik kan het menu er niet even uithalen... De rest van dit menu is Javascript.

[ Voor 23% gewijzigd door Bubbaman op 20-11-2003 23:59 . Reden: beetje aangevuld :) ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Ah kijk. Alleen bij mij is het niet zo dat het menu uitvouwt als je er op klikt. Maar hij gaat naar een volgende pagina, toont de inhoud van de aangeklikte pagina + eventueel een submenu.

Maar hoe zet je dat op het scherm bij jou menu?

Acties:
  • 0 Henk 'm!

  • Bubbaman
  • Registratie: Juli 2003
  • Laatst online: 20-03-2022
ViNyL schreef op 21 november 2003 @ 08:40:
Ah kijk. Alleen bij mij is het niet zo dat het menu uitvouwt als je er op klikt. Maar hij gaat naar een volgende pagina, toont de inhoud van de aangeklikte pagina + eventueel een submenu.

Maar hoe zet je dat op het scherm bij jou menu?
Dan laat je de Javascripting toch weg?

Zoiets:

PHP:
4
5
6
7
8
9
Loop1
     Lees hoofdpunt en display
     Loop2
          Lees subpunt en display
     /Loop2
/Loop1

[ Voor 9% gewijzigd door Bubbaman op 21-11-2003 10:46 . Reden: foutje... ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
hmmm......

Kom er nog niet helemaal uit, ben er al weer wat uurtje zoet mee geweest :)

Ik zat aan een nested loop te denken....

menu ----> iemand klikt ----> query menu items pagina titel + inhoud ----> kijk tevens of er submenu items zijn en zet ze in het menu onder het juiste menu item....

Maar ik kan het gewoon niet in code voor me neus krijgen...

Acties:
  • 0 Henk 'm!

Verwijderd

Voor http://www.berger-blanc-suisse.nl/index.php?page=main heb ik een system gebruikt waarin submenu-items in de db weten wie hun 'parent' is.
Eerst doe ik een serie queries waarin ik steeds de parent van de parent, etc. opvraag en zo het pad van de opgevraagde pagina naar het bovenste niveau bijwerk.
Vervolgens begin ik bij het bovenste niveau en gebruik ik een recursieve functie die steeds de kinderen van het huidige item afbeeld. Als het huidige kind in het pad dat ik eerder heb vastgesteld staat, dan roept de functie zichzelf aan om z'n eigen kinderen af te beelden.

[ Voor 5% gewijzigd door Verwijderd op 21-11-2003 11:36 ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Dat is inderdaad precies het ik het wil hebben zoals op die site.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

.oisyn schreef op 20 november 2003 @ 18:58:
PHP:
1
if ($submenu = "yes")


maak daar eens een == van
en dat dan ook meteen bij alle andere vergelijkingen :X

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
EY! ik ben niet zon uberprogrammeur :) !

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ViNyL schreef op 21 november 2003 @ 12:11:
EY! ik ben niet zon uberprogrammeur :) !
maar daarom had je wel even kunnen bedenken (lees: basic stuff wat in de manual als een van de eerste dingen staat) dat een vergelijking (in php) met twee = tekens werkt ;)
anders ken je een waarde toe, en dat geeft (bijna altijd) true ;)

[ Voor 11% gewijzigd door Erkens op 21-11-2003 12:16 ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
aah ok :) Thanks...

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
hehe ik kom op zoiets uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include ('dbconnect/dbconnect.php');
//query
$result = mysql_query("SELECT menu, submenu FROM pages");
while($r=mysql_fetch_array($result)) {    
//bouw het menu op
echo " {$r["menu"]} <br/> ";
  if ($r["submenu"] == "yes")
  $result = mysql_query("SELECT submenu FROM subpages WHERE menu= '{$["menu"]}' ");

while($r= mysql_fetch_array($result)){ 
echo " {$r["submenu"]} <br/> ";};
}
?>


Nu doet ie het wel, ik ziet menu opties, maar bij submenu items staat of steeds een error in mysql of er staat alleen het eerste menu item met verder overal "0" (wat default value is voor submenu als er geen submenu is)....

Acties:
  • 0 Henk 'm!

Verwijderd

waarom niet met een join?

PHP:
1
2
3
4
5
6
7
8
9
10
11
$sql_menu = "SELECT p.menu as p_menu, p.submenu as p_submenu, s.submenu as s_submenu FROM pages p, subpages s WHERE p.menu = s.menu";
$result_menu = mysql_query($sql_menu);
$str_menu_oud = null;
while ($row_menu = mysql_fetch_object($result_menu)) {
    if ($row_menu->p_menu != $str_menu_oud) {
        //een nieuw menu
        echo <h1>$row_menu->p_menu</h1>;
    }
    echo "<p>".$row_menu->s_submenu."</p>";
    
}

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Argh denk niet dat het gaat lukken, want volgens mij kan ik gewoon niet zo goed uitleggen of zo :(

tabel 1: heet "pages" bevat: menu (titel in het menu) submenu (default op '0' anders 'yes')
als hij dus 'yes' is moet hij uit
tabel 2: heet "subpages": submenu (titel van subitem) halen...

Aangezien ik niet een hele goeie php programmeur ben snap ik niet heel veel van de code die hier neergezet wordt..

Acties:
  • 0 Henk 'm!

  • Bubbaman
  • Registratie: Juli 2003
  • Laatst online: 20-03-2022
I rest my case...

Als je idd niet goed thuis bent in PHP dan adviseer ik je toch om je er in te verdiepen. Zoals je ziet wil iedereen je helpen, maar we gaan het NIET voor je maken. Dan moet je echt zelf doen!

Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
JA dat tuurlijk dat snap ik. Ik ben me er ook in het verdiepen anders vroeg ik dit niet right?

Alleen ik geloof niet dat de voorbeelden helemaal aansluiten bij wat ik bedoel...

Als ik jou voorbeeldje van die loop neem dan kom tot het resultaat wat 3 posts hoger staat, dan ben ik dus al een heel eind, alleen er zit geloof ik nog een foutje ergens in. Of ik heb de loops niet goed toegepast.

Wat doe ik hier nu fout dan?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
include ('dbconnect/dbconnect.php');

$result = mysql_query("SELECT menu, submenu FROM pages");

while($r=mysql_fetch_array($result)){
$menu=($r["menu"]);
$submenu=($r["submenu"]);
echo " <a href='test.php?menu=$menu' target='_self'>$menu</a><br/>";
    if ( $submenu == 'yes') {
    $result2 = mysql_query("SELECT subtitel FROM subpages WHERE menu = '$menu'");
    while($r=mysql_fetch_array($result)) {
    $subtitel=($r["subtitel"]);
    echo " $subtitel <br/>";
    }
  }
}

[ Voor 40% gewijzigd door ViNyL op 21-11-2003 14:19 ]


Acties:
  • 0 Henk 'm!

  • ViNyL
  • Registratie: Augustus 2001
  • Niet online
Hoera! Hij doet het nu bijna helemaal zoals ik het wil , ik heb me database even aangepast.

alles staat nu in 1 tabel. Als er in het veld sub het 'id' van een menu opties staat hoort deze bij die pagina als sub item.

PHP:
1
2
3
4
5
6
7
8
9
 include ('dbconnect/dbconnect.php');
$query = mysql_query("SELECT id, menu FROM pags WHERE sub = '0'"); 
while ($row = mysql_fetch_array($query)) 
{ 
echo " {$row['menu']}<br/> ";
    $subquery = mysql_query("SELECT menu FROM pags WHERE sub = '{$row['id']}'"); 
    while ($row = mysql_fetch_array($subquery)) 
    echo "--{$row['menu']}<br/>"; 
}


Het enige wat ie nu nog niet doet is dit: Je krijgt eerst een pagina te zien met alleen de menu links. Als je er vervolgens op klikt kom je op een pagina uit waar bovenstaande code in staat.

Het is de bedoeling dat alleen het submenu opgehaald wordt van de menu link waar op geklikt is. Hij haalt nu alle submenu's op |:(

en als ik er dit van maak:

PHP:
1
2
3
4
5
6
7
8
9
10
$menu=$_GET['menu'];
include ('dbconnect/dbconnect.php');
$query = mysql_query("SELECT id, menu FROM pags WHERE sub = '0' AND WHERE menu = '$menu'"); 
while ($row = mysql_fetch_array($query)) 
{ 
echo " {$row['menu']}<br/> ";
    $subquery = mysql_query("SELECT menu FROM pags WHERE sub = '{$row['id']}'"); 
    while ($row = mysql_fetch_array($subquery)) 
    echo "--{$row['menu']}<br/>"; 
}

Dan haalt hij alleen het gespecificeerde menu item + subitems op, maar dan laat ie de overige menu items niet meer zien.....

[ Voor 48% gewijzigd door ViNyL op 21-11-2003 23:43 ]

Pagina: 1