vergelijking uit database(simpel)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim S

Tim S

22/10/2012 02:36:43
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>'
;
        }
        
    }

?>


Ik hoop dat iemand kan helpen!
 
PHP hulp

PHP hulp

17/10/2021 03:04:27
 
Andy V

Andy V

22/10/2012 04:31:48
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>'
;
        }
        
    }

?>
 
Eddy E

Eddy E

22/10/2012 08:02:05
Quote Anchor link
Als je alleen maar de hoofdmenu-dingen wilt doe je dat uiteraard in je query al:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$sql
= mysql_query("SELECT menu, paginaid FROM content WHERE paginaid = $menupaginaid AND menu = 'no'    ");
?>
 
Tim S

Tim S

22/10/2012 09:48:08
Quote Anchor link
Bedankt voor de reacties!

@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?
 
Andy V

Andy V

22/10/2012 11:14:16
Quote Anchor link
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
 
Tim S

Tim S

22/10/2012 20:03:54
Quote Anchor link
ik krijg overal menu yes, terwijl ik in de database toch echt een paar op no heb staan.

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?
 
Eddy E

Eddy E

22/10/2012 20:29:58
Quote Anchor link
Als je dan toch goed bezig wilt zijn vervang je de yes/no door parent_id.
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.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

22/10/2012 21:47:33
Quote Anchor link
Als je nooit meer als 2 lagen krijgt werkt een parent child perfect.
tabel menu:
- menu_id
- menu_name
- menu_link
- parent_id
En dan de query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Dit werkt alleen bij twee lagen
Edit:

de aliasen vergeten
Gewijzigd op 22/10/2012 21:50:54 door Ger van Steenderen
 
Tim S

Tim S

22/10/2012 21:52:44
Quote Anchor link
Ja ik snap het idee, ik heb alleen nog nooit met JOIN gewerkt, ik ga het vanavond of morgen uitproberen.

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.