vergelijking uit database(simpel)
Ik probeer een simpele vergelijking te doen met gegevens uit een database.
In de database staan een tabel "menu" als ik de pagina in het menu wil laten zien staat hier "yes" wil ik de pagina als subpagina dan staat er "no".
Als ik in de code een else{ echo ...} toevoeg krijg ik dat wel te zien.
Ik moet iets over het hoofd zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sql = mysql_query("SELECT menu,paginaid FROM content WHERE paginaid=$menupaginaid");
$option = mysql_fetch_assoc($sql);
if('no' == $option['menu']){
echo '<select><option value="menu">Menu pagina</option>
<option selected value="sub_page">Sub pagina</option></select>';
}
}
?>
$sql = mysql_query("SELECT menu,paginaid FROM content WHERE paginaid=$menupaginaid");
$option = mysql_fetch_assoc($sql);
if('no' == $option['menu']){
echo '<select><option value="menu">Menu pagina</option>
<option selected value="sub_page">Sub pagina</option></select>';
}
}
?>
Ik hoop dat iemand kan helpen!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sql = mysql_query("SELECT menu,paginaid FROM content WHERE paginaid=$menupaginaid");
while($option = mysql_fetch_assoc($sql)){//probeer het eens met een while
if('no' == $option['menu']){
echo '<select><option value="menu">Menu pagina</option>
<option selected value="sub_page">Sub pagina</option></select>';
}
}
?>
$sql = mysql_query("SELECT menu,paginaid FROM content WHERE paginaid=$menupaginaid");
while($option = mysql_fetch_assoc($sql)){//probeer het eens met een while
if('no' == $option['menu']){
echo '<select><option value="menu">Menu pagina</option>
<option selected value="sub_page">Sub pagina</option></select>';
}
}
?>
Code (php)
1
2
3
2
3
<?php
$sql = mysql_query("SELECT menu, paginaid FROM content WHERE paginaid = $menupaginaid AND menu = 'no' ");
?>
$sql = mysql_query("SELECT menu, paginaid FROM content WHERE paginaid = $menupaginaid AND menu = 'no' ");
?>
@andy
Met een while had ik al geprobeerd werkt ook niet....
@eddy
Ja dat os ook een prima optie in dit geval, ik ga het vanmiddag effe testen. Ik wil ook de subpagina's en in de toekomst wil ik dit misschien nog uitbreiden dus nu blijft de vraag waarom dit niet werkt, ik denk dat ik dit nog wel vaker nodig ga hebben.
Heeft iemand een idee waarom dit niet zou werken?
omdat je er toch een array van maakt kan je best eens print_r($option); doen om te kijken of er effectief iets in de array steekt
Array ( [menu] => yes [paginaid] => 17 )
Dit geeft dus wel aan dat het probleem dus in de sql moet zitten als ik het zo bekijk. Alleen volgens mij is alles hier ook goed....?
nog ideën?
Kan je gelijk meerdere lagen toevoegen en blijft de structuur behouden. Maar kan je ook complexere menu's maken.
En bovenal: daarvoor zijn al 100000000000-den scripts te vinden online.
tabel menu:
- menu_id
- menu_name
- menu_link
- parent_id
En dan de query:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT
m.menu_id,
m.menu_name,
m.menu_link,
mc.menu_id mc_id,
mc.menu_name mc_name,
mc.menu_link mc_link,
FROM
(SELECT
menu_id
FROM
menu
WHERE
parent_id = 0
) AS m
LEFT JOIN
menu AS mc
ON
m.menu_id = mc.parent_id
m.menu_id,
m.menu_name,
m.menu_link,
mc.menu_id mc_id,
mc.menu_name mc_name,
mc.menu_link mc_link,
FROM
(SELECT
menu_id
FROM
menu
WHERE
parent_id = 0
) AS m
LEFT JOIN
menu AS mc
ON
m.menu_id = mc.parent_id
Dit werkt alleen bij twee lagen
Edit:
de aliasen vergeten
de aliasen vergeten
Gewijzigd op 22/10/2012 21:50:54 door Ger van Steenderen
Als ik het goed heb kan je ook met meerdere query's werken. maar voor 2 lagen is dit dan inderdaad perfect. Ik zal morgen even laten weten of het werkt.
Toevoeging op 23/10/2012 20:19:55:
@Ger
Ik kan je niet helemaal volgen, waar komen die aliassen vandaan, ik dacht de de aliassen de db naam waren. Ook zie ik niet de kolommen van de tabel content. Misschien zou je nog wat kunnen uitleggen....?
Toevoeging op 23/10/2012 21:37:27:
Ik heb het probleem opgelost, de fout zat hem in $menupaginaid, ik heb het nu zo gedaan.
tabel content:
Hierin staan de titel id etc. en parent_id
tabel menu:
hierin staan de gegevens van de opties voor de <select> en ook een parent_id
Ik kan nu in de tabel menu de opties aanmaken voor de <select> en kan met update de juiste parent_id aan de tabel content toevoegen.
De benaming van de variabele en de kolommen zijn nog niet goed omdat ik alles aan het testen was.
Als iemand me nog kan helpen met JOIN of een nettere manier weet voor dit dan hoor ik het wel.
Hieronder is de code zoals ik het nu heb:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$menupaginaid = $_GET['paginaid'];
$query = ("SELECT parent_id,paginaid FROM content WHERE paginaid=$menupaginaid");
$result = mysql_query($query);
while($option = mysql_fetch_assoc($result))
{
$menu = $option['parent_id'];
$query2 = ("SELECT parent_id,option,menu_name FROM menu WHERE parent_id=$menu");
$result2 = mysql_query($query);
echo'<select>';
while($option2 = mysql_fetch_assoc($result2)){
echo '<option '.$option2['option'].' value='.$option2['menu_name'].'>'.$option2['parent_id'].'</option>';
}
}
}
echo'</select>';
?>
$menupaginaid = $_GET['paginaid'];
$query = ("SELECT parent_id,paginaid FROM content WHERE paginaid=$menupaginaid");
$result = mysql_query($query);
while($option = mysql_fetch_assoc($result))
{
$menu = $option['parent_id'];
$query2 = ("SELECT parent_id,option,menu_name FROM menu WHERE parent_id=$menu");
$result2 = mysql_query($query);
echo'<select>';
while($option2 = mysql_fetch_assoc($result2)){
echo '<option '.$option2['option'].' value='.$option2['menu_name'].'>'.$option2['parent_id'].'</option>';
}
}
}
echo'</select>';
?>