een variable gegevens laten vergelijken en laten kijken of deze voorkomt in een

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maurice prive

Maurice prive

24/01/2007 00:57:00
Quote Anchor link
Hi,

Oke een vaag onderwerp maar ik weet niet hoe ik dit beter moet beschrijven. Ik heb de volgende variabele:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';

location wordt uit de tabel dd-menu gehaald en hierin staat Huis.php
get_bb_location wordt door de pagina gegenereerd. Als ik dus op huis.php kom, wordt dus id=current weergegeven.

Nu mijn vraag:
get_bb_location kan dus ook andere pagina's genereren zoals boom.php en beest.php. In location staat maar 1 waarde, in dit geval Huis.php. Hoe kan ik meerdere gegevens in location proppen? Moet ik dit doen met komma's (Huis.php, boom.php, beest.php)? Ik heb dit al geprobeert met || (Huis.php || boom.php || beest.php), maar de output van location is dan ook: Huis.php || boom.php || beest.php en voldoet dus nooit aan get_bb_location.

Hoe kan ik dit oplossen? Dus als get_bb_location voorkomt in location (ook al is de output Huis.php || boom.php || beest.php of Huis.php, boom.php, beest.php) dan komt deze dus wel voor in location en moet die id=current weergeven.

Ik hoop dat het een beetje duidelijk is

Mvgr,
 
PHP hulp

PHP hulp

25/12/2024 02:27:54
 
Joren de Wit

Joren de Wit

24/01/2007 13:02:00
Quote Anchor link
In je database zul je meerdere records moeten aanmaken met alle pagina's. Vervolgens zul je tijdens het uitlezen deze gegevens in een array moeten zetten.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
    while($row = mysql_fetch_assoc($sql)
    {

        $location[] = $row['location'];
    }

?>

Daarnaa zul je moeten kijgen of het resultaat van get_bb_location() in de array voorkomt.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
    $current
= (in_array(get_bb_location(), $location)) ? ' id="current"' : '';
?>
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Maurice prive

Maurice prive

24/01/2007 15:07:00
Quote Anchor link
Oke dus het is niet mogelijk om alles in 1 record te donderen en het dan met uitlezen te vegelijken of deze pagina erin staat?
 
Joren de Wit

Joren de Wit

24/01/2007 15:09:00
Quote Anchor link
Ja dat is het wel, maar dan help je je hele datamodel om zeep. Je gaat niet meerdere gegegevens in 1 veld opslaan. Als je meerdere dezelfde gegevens hebt, sla je die op in verschillende records.
 
Maurice prive

Maurice prive

24/01/2007 15:17:00
Quote Anchor link
Ja oke, maar dit is het enige record waar meerdere pagina's onder vallen. Dit is nml voor een menu en als de pagina x.php is en get_bb_location is ook x.php dan wordt d=current weergeven waardoor de tab in het menu active is.

Echter ik heb 1 knop (we noemen deze ff huis), waar meerdere pagina's ondervallen, waardoor dus de knop huis actief moet blijven. Vandaar dat ik van die knop alles onder location wil zetten.

Tabel ziet er zo uit:
Naam link (de knop dus) - Location
Huis - Huis.php, boom.php, beest.php
FAQ - Faq.php
Home - home.php
Info - about.php

Snap je dus alleen bij huis zijn er meerdere locations. Daarom dacht ik dus, die stop ik allemaal in location en dan laat ik het vergelijken.
 
Joren de Wit

Joren de Wit

24/01/2007 15:31:00
Quote Anchor link
Ok, maar op dit moment klopt je datamodel niet. Je komt nu namelijk op het punt dat je meerdere gegevens in 1 veld moet gaan op slaan, en dat kan niet.

Hoe je het bijvoorbeeld zou kunnen doen is door bij elk menu-item ook een parent aan te geven. Je tabel zou er dan zo uit zien:

menu_items
--------------
id
naam
location
parent

Als een item een hoofditem is, dus in het eigenlijke menu getoond wordt, geef je dat item gewoon de parent 0. Dus de inhoud zou dan bijvoorbeeld zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
id | naam | location | parent
1  | huis | huis.php | 0
2  | boom | boom.php | 1
3  | beest | beest.php | 1
4  | faq | faq.php | 0
5  | info | info.php | 4

Nu zijn boom en beest dus een submenu van het menu huis. En info is een submenu van faq. Dit even als voorbeeld, zelf kun je dit natuurlijk veranderen ;)

En nu kun je dus alle submenus van 'huis' selecteren door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
    naam
FROM
    menu_items
WHERE
    parent = 1
 
Maurice prive

Maurice prive

24/01/2007 16:13:00
Quote Anchor link
Of kan ik niet de querie aanpassen? Dus:

If get_bb_location() = huis.php OR boom.php OR beest.php ? ' id="current"' : '';

else $current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';


of iets in die zin? Geen idee hoe de querie dan moet zijn...
 



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.