if/else in een while?
Ik heb de volgende code:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
while($rw = mysql_fetch_array($r))
{
$first = ($rw['order'] == '0') ? ' class="first"' : '';
$current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';
echo '<li ' . $first . '><a href="' . $rw['page'] . '"' . $current . '>' . $rw['item'] . '</a></li>';
}
{
$first = ($rw['order'] == '0') ? ' class="first"' : '';
$current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';
echo '<li ' . $first . '><a href="' . $rw['page'] . '"' . $current . '>' . $rw['item'] . '</a></li>';
}
Werkt allemaal prima. Mijn vraag gaat over dit specifieke stukje code:
Het haalt de loaction uit de db en vergelijkd die met de uitkomst van get_bb_location(). Ik wil hier eerst op andere loactions laten controleren en daarna pas gebruikmakend van die met die uit de db. Dan krijg je dus iets als:
Code (php)
1
2
3
2
3
if $current = (locatie1 == get_bb_location()) ? ' id="current"' : '';
elseif $current = (locatie2 == get_bb_location()) ? ' id="current"' : '';
else $current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';
elseif $current = (locatie2 == get_bb_location()) ? ' id="current"' : '';
else $current = ($rw['location'] == get_bb_location()) ? ' id="current"' : '';
Maar dit werkt niet. Wat moet ik veranderen om dit wel werkend te krijgen?
Alvast bedankt
Kijk eens op php.net hoe het moet.
http://nl2.php.net/manual/en/language.control-structures.php
Overigens zou ik in dit geval voor een switch() gaan.
Dus:
Greetz
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
// Vb 1, true vergelijken
switch(true) {
case 1==1:
print '1 is dus wel 1!';
break;
case 1==2:
print '1 is dus 2!';
break;
default:
print 'Geen enkele case true!';
//break;
}
// Vb 2, string vergelijken
$tekst = 'abc';
switch($tekst) {
case 'abc':
print 'Tekst is abc!!';
break;
case 'def':
print 'Tekst is def!!';
break;
}
?>
// Vb 1, true vergelijken
switch(true) {
case 1==1:
print '1 is dus wel 1!';
break;
case 1==2:
print '1 is dus 2!';
break;
default:
print 'Geen enkele case true!';
//break;
}
// Vb 2, string vergelijken
$tekst = 'abc';
switch($tekst) {
case 'abc':
print 'Tekst is abc!!';
break;
case 'def':
print 'Tekst is def!!';
break;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Jos
Beadnkt voor je reactie Jos, maar als UBER noob ken ik hier niet veel mee. Doelde op een voorbeeld met de gegevens uit het laatste stukje code van mijn eerste post :)
Iemand?
Code (php)
1
$current = (locatie1 == get_bb_location() || locatie2 == get_bb_location() || $rw['location'] == get_bb_location()) ? ' id="current"' : '';
Werkt ook niet
Zijn 'locatie1' en 'locatie2' constanten?
Locatie1 en locatie2 kon ik niet in de db tabel verwerken, dus daarom wil ik eerst daarop checken of die gelijk is aan bb_get_location en daarna pas de locations uit de location db.
SanThe schreef op 03.02.2007 15:43:
Zijn 'locatie1' en 'locatie2' constanten?
Je geeft niet echt antwoord op deze vraag.
Maar indien het geen constanten zijn, maar variabelen zijn zal er toch een $ aan moeten zitten.
Het moet dus die hard checken of de tekst Locatie1 voldoet aan bb_get_location (die dus ook location1 kan spugen)
- Een constante heeft altijd dezelfde waarde en die maak je met define().
- Een variabele heeft wisselende waarde en die schrijf je altijd met een $ dus: $variabele.
- Tekst staat altijd tussen quotes. Dus 'tekst' of "tekst".
$current = ('locatie1' == get_bb_location() || $rw['location'] == get_bb_location()) ? ' id="current"' : '';
?