If statement pakt 'ie niet helemaal goed

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Klein maar vreemd probleempje, uit de database (MySQL) haal ik een datum op en dan moet de website in een drop-down knop laten zien welke datum dat dan is, ik heb het volgende:

PHP:
1
2
3
4
5
$datum = $info['datum'];
$datum = explode("-", $datum);
$dag = $datum[2];
$maand = $datum[1];
$jaar = $datum[0];


en

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<select name="maand">
<option value="01" <?php if($maand == 01){ ?>selected="01"<?php } ?>>januari</option>
<option value="02" <?php if($maand == 02){ ?>selected="02"<?php } ?>>februari</option>
<option value="03" <?php if($maand == 03){ ?>selected="03"<?php } ?>>maart</option>
<option value="04" <?php if($maand == 04){ ?>selected="04"<?php } ?>>april</option>
<option value="05" <?php if($maand == 05){ ?>selected="05"<?php } ?>>mei</option>
<option value="06" <?php if($maand == 06){ ?>selected="06"<?php } ?>>juni</option>
<option value="07" <?php if($maand == 07){ ?>selected="07"<?php } ?>>juli</option>
<option value="08" <?php if($maand == 08){ ?>selected="08"<?php } ?>>augustus</option>
<option value="09" <?php if($maand == 09){ ?>selected="09"<?php } ?>>september</option>
<option value="10" <?php if($maand == 10){ ?>selected="10"<?php } ?>>oktober</option>
<option value="11" <?php if($maand == 11){ ?>selected="11"<?php } ?>>november</option>
<option value="12" <?php if($maand == 12){ ?>selected="12"<?php } ?>>december</option>
</select>


Nu het vreemde, de maanden januari t/m juli en oktober t/m december pakt 'ie goed, maar de maanden augustus en september gek genoeg niet. De dagen en jaren worden wel goed gepakt, alleen dus augustus en september niet 8)7 Heb de code al meerdere malen overgetypt/gekopieerd, maar niks helpt vooralsnog...

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Een 0 "voorloop" zorgt er waarschijnlijk voor dat je getal octaal geïnterpreteerd wordt ;) En in octaal kennen we geen 8 en 9 ;) Zie ook onze Getallen en talstelsels FAQ

[ Voor 44% gewijzigd door RobIII op 23-07-2012 15:10 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

^^
Verklap het nou niet :P



Je post in WEB (HTML en JS, amongst other things), maar je probleem is meer PRG (PHP)... Je kan dit probleem op meerdere manieren proberen te tackelen.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
BtM909 schreef op maandag 23 juli 2012 @ 15:11:
Je kan dit probleem op meerdere manieren proberen te tackelen.
O.a. met een loopje; zo'n codeblock wil toch geen hond meer uittypen anno 2012? :X :P
O-) :P
Mijn eerste reactie, bij 't lezen van de topictitel, was "daar gaan we weer; een = vs. == uitleggen". Dat was nou eindelijk eens een keer niet aan de orde dus in mijn enthousiasme verklapte ik misschien inderdaad wat veel :P

Verder kan dit topic inderdaad naar PRG: Waar hoort mijn topic?
*schopt* ... en... GOAAAAAL! *O*

[ Voor 53% gewijzigd door RobIII op 23-07-2012 15:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

RobIII schreef op maandag 23 juli 2012 @ 15:12:
[...]

O.a. met een loopje; zo'n codeblock wil toch geen hond meer uittypen anno 2012? :X :P
Mja, ik wilde net een linkje posten naar DRY. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 11-09 13:55
3 modjes in 3 minuten.. met 1 behulpzaam antwoord :9
En 1 user die eveneens niets toevoegt met zijn reactie :P

[ Voor 38% gewijzigd door RobIII op 23-07-2012 15:15 ]


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Waarom heeft selected een "value"?

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Nee okee, een loop heb ik dan ook wel met bijv de dagen gedaan, maar met de maanden leek het mijn in eerste instantie makkelijker om het even zo te proberen vanwege de namen (in het Nederlands), maar dan ga ik dat even proberen dan.

@OkkE, ik heb eens meegemaakt dat die 'm niet (juist) pakte zonder value en sindsdien doe ik het eigenlijk altijd met (kan ook zomaar zijn dat die het om een andere reden niet deed... ), maar hij doet het bijv nu ook wel zonder value ja.

Acties:
  • 0 Henk 'm!

  • 418O2
  • Registratie: November 2001
  • Laatst online: 16:46
dan moet je selected="selected" gebruiken :)

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

mauricedb schreef op maandag 23 juli 2012 @ 15:17:
Nee okee, een loop heb ik dan ook wel met bijv de dagen gedaan, maar met de maanden leek het mijn in eerste instantie makkelijker om het even zo te proberen vanwege de namen (in het Nederlands), maar dan ga ik dat even proberen dan.
Dan zou ik een key=>value array gebruiken, dat is eventueel ook makkelijk uit te breiden naar andere talen.
@OkkE, ik heb eens meegemaakt dat die 'm niet (juist) pakte zonder value en sindsdien doe ik het eigenlijk altijd met (kan ook zomaar zijn dat die het om een andere reden niet deed... ), maar hij doet het bijv nu ook wel zonder value ja.
Over het algemeen mag de value weggelaten, maar ander is het (zoals hier boven al gezegd) dus selected="selected" :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Dit is natuurlijk gewoon een issue met php dat er geen goede foutmelding wordt gegeven op 08: http://www.phpsadness.com/sad/31 :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:22

crisp

Devver

Pixelated

418O2 schreef op maandag 23 juli 2012 @ 15:19:
dan moet je selected="selected" gebruiken :)
Gewoon 'selected' is prima in HTML; is ook weer wat DRY-er ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:15
Dat mag dus niet in XHTML. Vandaar die selected="selected" nonsense, want HTML is een SGML-dialect wat dus niet compatible is met XML.

(Met HTML5 zijn ze weer van XHTML/XML-compliance afgestapt. Wel pragmatisch, niet echt consistent van de W3C. Het makkelijkst is gewoon vergeten dat XHTML überhaupt ooit bestaan heeft, hoewel het wel handig was om HTML te processen met XML tools.)

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Want je kon aan de code zien dat er XHTML werd gebruikt? :P

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Sowieso... wie gebruikt er tegenwoordig geen HTML5 doctype? :)

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$dag = date("j");       // j = day without leading zero's, 
$maand = date("n"); // n = day without leading zero's
$jaar = date("Y");      // let op y = format xx. Y = format XXXX

$amaanden = array(
  1 => "januari",
  2 => "februari",
  3 => "maart",
  4 => "april",
  5 => "mei",
  6 => "juni",
  7 => "juli",
  8 => "augustus",
  9 => "september",
  10 => "oktober",
  11 => "november",
  12 => "december" );

echo '<select name="maand">';
for ($maanden = 1; $maanden <= 12; $maanden++) {
  echo '  <option value="' . $maanden .'" '. ($maanden==$maand)?'selected':'' . '>' . $amaanden[ $maanden ] . '</option>';
}
echo '</select>';


Let op ik gebruik ' voor echo en niet ", dat zorgt ervoor dat je " in een string kan embedden.

Overigens is het mooiste om ook nog javascript te gebruiken met een "onchange" event op maanden, zodat een dagen selectie zich aanpast aan de geslecteerde maand/jaar cobi. Maar ben er te lang uit om daar een voorbeeld van te geven....

[ Voor 13% gewijzigd door Wim-Bart op 23-07-2012 15:42 ]

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Niet lullig bedoeld, maar als je spul zoals dit op die manier echoot krijg je sowieso een onleesbare codesoep. Dat doet de topicstarter hierboven veel netter. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Bedankt mannen, ik heb 'm nu zo en 't werkt goed :)

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$datum = $info['datum'];
$datum = explode("-", $datum);
$maand = $datum[1];
$maandnaam = array("", "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
<select name="maand">
    <?php $maand2 = 01; while($maand2 < 13) { ?>
    <option value="<?php if($maand2 <= 9){ echo "0", $maand2; } else { echo $maand2; } ?>" <?php if($maand == $maand2){ ?>selected="selected"<?php } ?>><?php echo $maandnaam[$maand2]; $maand2++; ?></option><?php } ?>
</select>

Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

NMe schreef op maandag 23 juli 2012 @ 15:42:
Niet lullig bedoeld, maar als je spul zoals dit op die manier echoot krijg je sowieso een onleesbare codesoep. Dat doet de topicstarter hierboven veel netter. ;)
Lol, ben dan ook een hobby programmeur :)

Ok, dit kan ook:
PHP:
1
2
3
4
5
6
for ($maanden = 1; $maanden <= 12; $maanden++) 
  { 
    echo '  <option value="' echo $maanden .'" ';
    if ($maanden==$maand) echo 'selected';
    echo '' . '>' . $amaanden[ $maanden ] . '</option>';
   }


pfffff

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

mauricedb schreef op maandag 23 juli 2012 @ 15:45:
Bedankt mannen, ik heb 'm nu zo en 't werkt goed :)

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$datum = $info['datum'];
$datum = explode("-", $datum);
$maand = $datum[1];
$maandnaam = array("", "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
<select name="maand">
    <?php $maand2 = 01; while($maand2 < 13) { ?>
    <option value="<?php if($maand2 <= 9){ echo "0", $maand2; } else { echo $maand2; } ?>" <?php if($maand == $maand2){ ?>selected="selected"<?php } ?>><?php echo $maandnaam[$maand2]; $maand2++; ?></option><?php } ?>
</select>
code:
1
sprintf("%02d", $maand2);


Maar waarom voeg je nu daar een 0 toe? Zeg alsjeblieft niet omdat het anders fout gaat met opslaan in je database? :P

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

mauricedb schreef op maandag 23 juli 2012 @ 15:45:
Bedankt mannen, ik heb 'm nu zo en 't werkt goed :)

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$datum = $info['datum'];
$datum = explode("-", $datum);
$maand = $datum[1];
$maandnaam = array("", "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
<select name="maand">
    <?php $maand2 = 01; while($maand2 < 13) { ?>
    <option value="<?php if($maand2 <= 9){ echo "0", $maand2; } else { echo $maand2; } ?>" <?php if($maand == $maand2){ ?>selected="selected"<?php } ?>><?php echo $maandnaam[$maand2]; $maand2++; ?></option><?php } ?>
</select>
Als je str_pad gebruikt hoef je die extra if niet te doen, leest makkelijker. Verder: om jezelf problemen te besparen: zet nooit maar dan ook nooit een 0 voor je integerwaardes tenzij je bewust een octaal getal wil schrijven. Dit nodigt uit tot fouten bij refactoring. ;)
Wim-Bart schreef op maandag 23 juli 2012 @ 15:46:
[...]

Lol, ben dan ook een hobby programmeur :)

Ok, dit kan ook:
PHP:
1
2
3
4
5
6
for ($maanden = 1; $maanden <= 12; $maanden++) 
  { 
    echo '  <option value="' echo $maanden .'" ';
    if ($maanden==$maand) echo 'selected';
    echo '' . '>' . $amaanden[ $maanden ] . '</option>';
   }


pfffff
Je begrijpt mijn opmerking niet. ;) Überhaupt echoën in plaats van een soort template te gebruiken zoals de topicstarter doet is een slecht plan. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Waarom geen foreach() loop van de maanden?

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Ow okee... Ik dacht juist dat je 'm dan sowieso goed in de database zet.. :P Dan haal ik dat eruit (wat betreft die nul).

[ Voor 10% gewijzigd door mauricedb op 23-07-2012 15:52 ]


Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

NMe schreef op maandag 23 juli 2012 @ 15:49:
[...]

Als je str_pad gebruikt hoef je die extra if niet te doen, leest makkelijker. Verder: om jezelf problemen te besparen: zet nooit maar dan ook nooit een 0 voor je integerwaardes tenzij je bewust een octaal getal wil schrijven. Dit nodigt uit tot fouten bij refactoring. ;)

[...]

Je begrijpt mijn opmerking niet. ;) Überhaupt echoën in plaats van een soort template te gebruiken zoals de topicstarter doet is een slecht plan. :)
Je bedoeld code van html scheiden..... Het is een mogelijkheid, alleen heeft dat niet mijn voorkeur, maar dat is iets persoonlijks :-) Maar ik weet het heeft zo zijn voordelen :-)

[ Voor 3% gewijzigd door Wim-Bart op 23-07-2012 15:53 ]

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

  • Speedfreak230
  • Registratie: September 2011
  • Laatst online: 09-10-2018
Het gebruik van een template engine, bijvoorbeeld Smarty, zou inderdaad een aanrader zijn. Loopjes, ifjes etc kan je hierin keurig oppakken. Mijn tip van de dag is dus ook om zoiets dergelijks te gaan gebruiken ;-)

Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

Speedfreak230 schreef op maandag 23 juli 2012 @ 15:53:
Het gebruik van een template engine, bijvoorbeeld Smarty, zou inderdaad een aanrader zijn. Loopjes, ifjes etc kan je hierin keurig oppakken. Mijn tip van de dag is dus ook om zoiets dergelijks te gaan gebruiken ;-)
Hmmm, misschien leuk, maar sinds jaar en dag gebruik ik alleen maar UltraEdit :D Zelfs geen css building tools, gewoon alles uit het hoofdje :)

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Smarty werkt prima "samen" met UltraEdit :+

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Wim-Bart schreef op maandag 23 juli 2012 @ 15:52:
Je bedoeld code van html scheiden..... Het is een mogelijkheid, alleen heeft dat niet mijn voorkeur, maar dat is iets persoonlijks :-) Maar ik weet het heeft zo zijn voordelen :-)
Waarom niet? Jij vind een PHP string (zonder verdere code-highlighting) prettiger lezen dan een net stukje HTML (met highlighting)? :?
Speedfreak230 schreef op maandag 23 juli 2012 @ 15:53:
Het gebruik van een template engine, bijvoorbeeld Smarty, zou inderdaad een aanrader zijn. Loopjes, ifjes etc kan je hierin keurig oppakken. Mijn tip van de dag is dus ook om zoiets dergelijks te gaan gebruiken ;-)
Euhm, nee? Dat is het zelfde als iedereen met een (simpele) Javascript vraag direct jQuery aanraden. Het ging er over dat HTML beter niet in een PHP string gezet kan worden, zodat het overzichtelijker blijft.

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.


Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
PHP kan anders prima functioneren als templating taal (zeker met short tags enabled)

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
26
27
28
29
30
31
32
33
34
35
36
37
38
<? 

$huidigeMaand = date("n"); // n = day without leading zero's 

$maanden = array( 
  1 => "januari", 
  2 => "februari", 
  3 => "maart", 
  4 => "april", 
  5 => "mei", 
  6 => "juni", 
  7 => "juli", 
  8 => "augustus", 
  9 => "september", 
  10 => "oktober", 
  11 => "november", 
  12 => "december"
);

?>

<select name="maand">

  <? foreach ($maanden as $maandNummer => $maandNaam): ?> 

    <? if ($maandNummer == $huidigeMaand): ?>
      <option value="<?= $maandNummer ?>" selected>
    <? else: ?>
      <option value="<?= $maandNummer ?>">
    <? endif ?>
  
      <?= $maandNaam ?>

    </option>
  
  <? endforeach ?>

</select>

Acties:
  • 0 Henk 'm!

  • Wim-Bart
  • Registratie: Mei 2004
  • Laatst online: 10-01-2021

Wim-Bart

Zie signature voor een baan.

Radiant schreef op maandag 23 juli 2012 @ 15:57:
Smarty werkt prima "samen" met UltraEdit :+
Hij staat inmiddels in mijn todo lijst om eens naar te kijken.... :-)
Goede tip :)

Ik denk dat jullie deze bedoelen Smarty

Overigens wel leuk op de site:
Templates: Two camps of thought

When it comes to templating in PHP, there are basically two camps of thought. The first camp exclaims that "PHP is a template engine". This approach simply mixes PHP code with HTML. Although this approach is fast from a pure script-execution point-of-view, many would argue that the PHP syntax is messy and difficult to maintain when mixed with presentation. PHP works well for programming, but not so well for templating.

The second camp exclaims that presentation should be void of all programming code, and instead use simple tags to indicate where application content is revealed. This approach is common with other template engines (and other programming languages), and is the approach that Smarty takes. The idea is to keep the templates focused squarely on presentation, void of application code, and with as little overhead as possible.
Hmmmmm, volgens mij zit ik in eerste kampje :D

Overigens spreekt het voorbeeld van Zeebonk mij meer aan, maar meer omdat ik dat zelf vaker toe pas. Alleen ben ik gek op (conditie)?waar:nietwaar constructies :-)

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
26
27
28
29
30
31
<?  

$huidigeMaand = date("n"); // n = day without leading zero's  

$maanden = array(  
  1 => "januari",  
  2 => "februari",  
  3 => "maart",  
  4 => "april",  
  5 => "mei",  
  6 => "juni",  
  7 => "juli",  
  8 => "augustus",  
  9 => "september",  
  10 => "oktober",  
  11 => "november",  
  12 => "december" 
); 

?> 

<select name="maand"> 

  <? foreach ($maanden as $maandNummer => $maandNaam) ?>  

      <option value="<?= $maandNummer ?>" <?= ($maandNummer == $huidigeMaand)? "selected" : ""  ?> >  
      <?= $maandNaam ?></option> 
   
  <? endforeach ?> 

</select>

[ Voor 23% gewijzigd door Wim-Bart op 23-07-2012 16:11 ]

Beheerders, Consultants, Servicedesk medewerkers. We zoeken het allemaal. Stuur mij een PM voor meer info of kijk hier De mooiste ICT'er van Nederland.


Acties:
  • 0 Henk 'm!

  • Speedfreak230
  • Registratie: September 2011
  • Laatst online: 09-10-2018
OkkE schreef op maandag 23 juli 2012 @ 16:00:
[...]

Waarom niet? Jij vind een PHP string (zonder verdere code-highlighting) prettiger lezen dan een net stukje HTML (met highlighting)? :?

[...]

Euhm, nee? Dat is het zelfde als iedereen met een (simpele) Javascript vraag direct jQuery aanraden. Het ging er over dat HTML beter niet in een PHP string gezet kan worden, zodat het overzichtelijker blijft.
Euhm, nee? Zeker niet, ik geef ook een voorbeeld. Het voorbeeld is Smarty, je zult vast nog een paar template parsers hebben die zulke zaken kunnen regelen.

Mij gaat het erom dat de html code in principe volledig gescheiden is van je PHP app. Dat is naar mijn idee een stuk netter dan de hele tijd je php tags openen en sluiten om vervolgens wat stukjes html eruit te gooien. Niet erg mooi vind ik.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Speedfreak230 schreef op maandag 23 juli 2012 @ 16:30:
[...]


Euhm, nee? Zeker niet, ik geef ook een voorbeeld. Het voorbeeld is Smarty, je zult vast nog een paar template parsers hebben die zulke zaken kunnen regelen.

Mij gaat het erom dat de html code in principe volledig gescheiden is van je PHP app. Dat is naar mijn idee een stuk netter dan de hele tijd je php tags openen en sluiten om vervolgens wat stukjes html eruit te gooien. Niet erg mooi vind ik.
Daar heb je gelijk in, maar waarom meteen beginnen met Smarty? Dat is voor de meeste simpele sites nogal overkill én maakt het leerproces lastiger omdat je én een andere denkwijze aan moet leren, en een andere "taal". Je kan ook gewoon logica van weergave scheiden met PHP zelf, zie de topicstart.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 15:22
Zeebonk schreef op maandag 23 juli 2012 @ 16:00:
PHP kan anders prima functioneren als templating taal (zeker met short tags enabled)
Beter geen short tags gebruiken... (Linkje)

Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Styxxy schreef op maandag 23 juli 2012 @ 16:51:
Beter geen short tags gebruiken... (Linkje)
Beter niet switchen van server als je niet zeker weet of je app daar runt...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Beter je code zo te schrijven dat hij onder de meest standaard-omstandigheden wél snel te runnen valt. Daarnaast levert het gezeik op met XML en dus XHTML.

[ Voor 4% gewijzigd door NMe op 23-07-2012 16:59 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Is gewoon een keuze. Als de eis van je applicatie is dat deze overal gedeployed moet kunnen worden, dat is het misschien nuttig om ze niet te gebruiken. Heb je zelf controle over de server of over de keuze van hosting dan lijkt het me een prima optie.

Wat heeft XML er mee te maken? De DOM heeft toch niks te maken met de gebruikte tags?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Wim-Bart schreef op maandag 23 juli 2012 @ 16:04:
Alleen ben ik gek op (conditie)?waar:nietwaar constructies :-)
Dat heet een ternary operator FWIW ;)
offtopic:
Overigens spreekt 't voorbeeld op WikiPedia weer boekdelen :X

PHP:
1
$valueOne = (5 > 1) ? true : false;

I.p.v.
PHP:
1
$valueOne = 5 > 1;

:X

Maar goed; een dergelijke "ternary" kun je, mits goed gemikt, her-en-der wel gebruiken. Staat je code er bol van of gebruik je erg lange expressies in de true/false sub-expressions dan ben ik er persoonlijk niet zo'n fan van.

[ Voor 20% gewijzigd door RobIII op 23-07-2012 17:17 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 15:22

.oisyn

Moderator Devschuur®

Demotivational Speaker

Heel goed, een ternaire operator (=> operator met 3 operanden). Maar omdat het de enige is in menig programmeertaal is het ook wel dé ternaire operator, maar het blijft het verkeerde naampje voor het beestje. Noem het gewoon conditional operator.

[ Voor 7% gewijzigd door .oisyn op 23-07-2012 17:49 ]

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.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Zeebonk schreef op maandag 23 juli 2012 @ 17:10:
Is gewoon een keuze. Als de eis van je applicatie is dat deze overal gedeployed moet kunnen worden, dat is het misschien nuttig om ze niet te gebruiken. Heb je zelf controle over de server of over de keuze van hosting dan lijkt het me een prima optie.
Er gaan geruchten dat short tags deprecated gaan zijn in PHP6. Ik ben daar liever op voorbereid. Het is ook niet alsof je bijster veel voordeel hebt van het gebruik van short tags.
Wat heeft XML er mee te maken? De DOM heeft toch niks te maken met de gebruikte tags?
<?xml version="1.0" encoding="UTF-8" ?>

I rest my case.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zeebonk
  • Registratie: Augustus 2005
  • Laatst online: 30-07 20:50
Een platform targetten voor een applicatie lijkt me normaal en dan houd je de keuze om short tags te gebruiken. Voorbereiden mag altijd, ik vraag me alleen af of je voorbereidingen nuttig zijn:

Dit zorgt er voor dat je je niet druk hoeft te maken over verschillende server settings, zolang ze maar php 5.4 draaien:
http://php.net/manual/en/migration54.new-features.php

Dit lijkt er op de wijzen dat ze nog een tijdje zullen bestaan:
http://www.php.net/~deric...guage-php-and-add-php-var

Xml met templates opbouwen terwijl er prima libraries beschikbaar zijn die ook meteen escaping uit handen nemen lijkt me onhandig. Noodzaak voor XHTML lijkt mij minimaal en als het dan toch nodig is gebruik je de normale tags.

Mij maakt het niet uit of andere het gebruiken maar het kan prima en lijkt me vooral geen: "beter geen shorttags gebruiken, punt". Ik vind het vooral veel leesbaarder en maakt de noodzaak voor een extra templating engine minimaal.

I rest my case }:O ;)

[ Voor 4% gewijzigd door Zeebonk op 23-07-2012 22:10 ]


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

mauricedb schreef op maandag 23 juli 2012 @ 15:45:
Bedankt mannen, ik heb 'm nu zo en 't werkt goed :)

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$datum = $info['datum'];
$datum = explode("-", $datum);
$maand = $datum[1];
$maandnaam = array("", "januari", "februari", "maart", "april", "mei", "juni", "juli", "augustus", "september", "oktober", "november", "december");
?>
<select name="maand">
    <?php $maand2 = 01; while($maand2 < 13) { ?>
    <option value="<?php if($maand2 <= 9){ echo "0", $maand2; } else { echo $maand2; } ?>" <?php if($maand == $maand2){ ?>selected="selected"<?php } ?>><?php echo $maandnaam[$maand2]; $maand2++; ?></option><?php } ?>
</select>
Je kunt ook je values zelf voorzien van een key, dan hoef je geen loze inhoud te hebben. :) Bijkomend voordeel is dat je dan zeker weet dat de values de keys hebben die jij wilt dat ze hebben.

[ Voor 5% gewijzigd door CH4OS op 23-07-2012 21:35 ]


Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Doel je dan op die 0 die hij bij de code die jij hebt gequoteerd toevoegt?

Acties:
  • 0 Henk 'm!

  • CurlyMo
  • Registratie: Februari 2011
  • Laatst online: 16:53
Wim-Bart schreef op maandag 23 juli 2012 @ 16:04:
Hmmmmm, volgens mij zit ik in eerste kampje :D
Wanneer je PHP (ook) als templating engine beschouwt (net als ik) dan vind ik het veel makkelijker om gewoon via extract te werken: http://www.ejeliot.com/blog/101.

Sinds de 2 dagen regel reageer ik hier niet meer


Acties:
  • 0 Henk 'm!

  • Keeper
  • Registratie: Juni 2001
  • Niet online

Keeper

<3 Ruby

Ik vind het wel vrij bizar dat in dit topic de meeste exotische manieren voorbij komen om de TS uit te leggen hoe hij zijn dropdown iets dynamischer kan bouwen onder het mom van DRY en uiteindelijk het beste antwoord ondergesneeuwd raakt in een discussie over of je Smarty moet gebruiken :P.

PHP heeft prima datumfuncties, gebruik die dan ook in plaats van zelf met arrays te gaan lopen pielen ;).

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ah, prima datumfuncties, altijd handig... Weleens de warning en comments bij setlocale gelezen? :p

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

The locale information is maintained per process, not per thread. If you are running PHP on a multithreaded server API like IIS or Apache on Windows, you may experience sudden changes in locale settings while a script is running, though the script itself never called setlocale(). This happens due to other scripts running in different threads of the same process at the same time, changing the process-wide locale using setlocale().
Lol.. Ipv dat ze het gewoon oplossen (wat gewoon kan, lijkt mij).. PHP, soms.. 8)7

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

mauricedb schreef op maandag 23 juli 2012 @ 22:07:
Doel je dan op die 0 die hij bij de code die jij hebt gequoteerd toevoegt?
Ja, je array is dan dus
PHP:
1
$maandnaam = array(1 => "januari", 2 => "februari", 3 => "maart", 4 => "april", 5 => "mei", 6 => "juni", 7 => "juli", 8 => "augustus", 9 => "september", 10 => "oktober", 11 => "november", 12 => "december");

Acties:
  • 0 Henk 'm!

  • mauricedb
  • Registratie: Maart 2007
  • Laatst online: 08:52
Ah ja okee, op die fiets, ga 't nog even veranderen dan, danku :D

Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Waarom een array van maandnamen als die gewoon in php zit?
PHP:
1
2
3
4
5
6
// Unix systemen
setlocale(LC_TIME, "nl_NL.UTF-8");
// Windows systemen
//setlocale(LC_TIME, "nld");
// Geeft de maandnaam...
strftime('%B');

Raar... Is zo gek nog niet


Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Lees anders even wat er een paar posts terug over setlocale wordt gezegd :P
Pagina: 1