if else in javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

N K

N K

10/09/2012 21:15:38
Quote Anchor link
Maak ik hier een denkfout?
Bij onderstaande if else werkt alleen het if gedeelte.
Als ik het if gedeelte verwijder werkt het else gedeelte wel.
Alle variabelen zijn aanwezig, is mijn if else fout??


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
<script>
    $(function() {
       var date = new Date();
        $( "#with-altField" ).multiDatesPicker({
        addDates: [
                        <?php
                        
                        if(isset ($_POST['radiobutton_value'])){
                            $value = "'" . str_replace(array("'", ","), array("\\'", "','"), $dates) . "'";
                            echo $value;
                            }

                        else{
                            $string = "'" . str_replace(array("'", ","), array("\\'", "','"), $_POST['dates']) . "'";
                            echo $string;
                            }
?>

                    ],
        altField: '#altField'
    });
    });
    </script>
 
PHP hulp

PHP hulp

24/11/2024 12:20:39
 
Jurgen B

Jurgen B

10/09/2012 21:50:36
Quote Anchor link
En wat zou het moeten doen volgens jou(w verwachting)? Bij een if/else is het de bedoeling dat maar één van de twee werkt, anders zou je er geen if/else omheen zetten.
 
John Berg

John Berg

10/09/2012 21:52:44
Quote Anchor link
Zomaar een gokje, maar ik denk dat regel 8 moet zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  if( isset ($_POST['radiobutton_value'] ) && $_POST['radiobutton_value'] ) {
?>
 
Flip --

Flip --

10/09/2012 21:55:00
Quote Anchor link
gebruik dan !empty() ...
 
N K

N K

10/09/2012 21:59:05
Quote Anchor link
Als ($_POST['radiobutton_value'])) een waarde bevat moet hij $value echo-en.
Zo niet dan moet hij $string echo-en.

Edit:
@John: Dat was een goede gok. ;)
Wat doe je daar precies?
Gewijzigd op 10/09/2012 22:01:22 door N K
 
Wouter J

Wouter J

10/09/2012 22:10:57
Quote Anchor link
@NK, John gebruikt een niet zo goede manier van checken of er wil iets is ingevuld. Beter is dit te gebruiken: (wel even de juiste waarden invullen)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (isset(...) && '' == $_POST[...])) {
    // ...
}
 
Flip --

Flip --

10/09/2012 22:11:00
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
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
  $true
= true; // A
  $zero = 0; // B
  $null = null; // C
  $one = 1; // D
  $zero_string = '0'; // E
  $one_string = '1'; // F
  $anders = 'anders'; // G
  if (isset($true)) print("A 1<br />\n");
  if (!empty($true)) print("A 2<br />\n");
  if ($true) print("A 3<br />\n");
  if ($true != '') print("A 4<br />\n");
  if (isset($zero)) print("B 1<br />\n");
  if (!empty($zero)) print("B 2<br />\n");
  if ($zero) print("B 3<br />\n");
  if ($zero != '') print("B 4<br />\n");
  if (isset($null)) print("C 1<br />\n");
  if (!empty($null)) print("C 2<br />\n");
  if ($null) print("C 3<br />\n");
  if ($null != '') print("C 4<br />\n");
  if (isset($one)) print("D 1<br />\n");
  if (!empty($one)) print("D 2<br />\n");
  if ($one) print("D 3<br />\n");
  if ($one != '') print("D 4<br />\n");
  if (isset($zero_string)) print("E 1<br />\n");
  if (!empty($zero_string)) print("E 2<br />\n");
  if ($zero_string) print("E 3<br />\n");
  if ($zero_string != '') print("E 4<br />\n");
  if (isset($one_string)) print("F 1<br />\n");
  if (!empty($one_string)) print("F 2<br />\n");
  if ($one_string) print("F 3<br />\n");
  if ($one_string != '') print("F 4<br />\n");
  if (isset($anders)) print("G 1<br />\n");
  if (!empty($anders)) print("G 2<br />\n");
  if ($anders) print("G 3<br />\n");
  if ($anders != '') print("G 4<br />\n");
?>

A 1
A 2
A 3
A 4
B 1
D 1
D 2
D 3
D 4
E 1
E 4
F 1
F 2
F 3
F 4
G 1
G 2
G 3
G 4
Gewijzigd op 10/09/2012 22:15:05 door Flip --
 
Wouter J

Wouter J

10/09/2012 22:14:17
Quote Anchor link
Filp, het is misschien beter een uitleg te geven. Tevens ook een uitleg dat je empty (bijna) nooit moet gebruiken, is even fout als de methode van John.
 
Flip --

Flip --

10/09/2012 22:15:38
Quote Anchor link
geef jij maar eens een uitleg dan
 
Wouter J

Wouter J

10/09/2012 22:39:06
Quote Anchor link
isset
Deze functie controlleerd of de variabele ingesteld is (met andere woorden is gezet of op z'n engels IsSet). Voorbeeldje:
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
if (isset($foo)) {
    // deze code wordt niet uitgevoerd,
    // aangezien $foo nog niet is ingesteld

}

// we stellen $foo in
$foo = 'bar';

if (isset($foo)) {
    // deze code wordt uitgevoerd, we hebben
    // zojuist $foo ingesteld

}
?>


Als een variabele ingesteld is hoeft het nog niet per se een waarde te hebben, bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$foo
= '';

if (isset($foo)) {
    // deze code wordt uitgevoerd
}
?>


Dus we moeten nog iets hebben om te checken of de variabele wel een waarde heeft. De 3 aangedragen opties:

1. empty
Empty (engels voor leeg) kijkt of een variabele leeg is. bijv:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$foo
= '';

if (empty($foo)) {
    // deze code wordt uitgevoerd
}
?>

Als we het omgekeerde willen, de code uitvoeren als de variabele niet leeg is. Gebruiken we !empty() (spreek je uit als not empty => niet leeg).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$foo
= '';

if (!empty($foo)) {
    // deze code wordt niet uitgevoerd
}
?>


Helaas geeft empty niet alleen true terug als de variabele leeg ('') is. Maar met alle zogeheten falsey waardes. Hieronder vallen 0, '0', false, null, array() en array(0) (en array(null)). Je merkt het al, zodra we de waarde 0 invullen, wat gewoon echt een geldige waarde is voor een veld, zal de code ook uitgevoerd worden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$foo
= 0;

if (empty($foo)) {
    // deze code wordt uitgevoerd
}
?>


2. if ($foo)
Dit is een shorthand if condition, de condition is dat hele stuk tussen (). Hiermee zeggen we dat de code uitgevoerd wordt zodra $foo een truthy, iets dat als true gezien wordt zoals true, 'iets met een waarde die niet leeg is', 1 (elk cijfer dat niet gelijk is aan 0), array(1), enz.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$foo
= 'hello world';

if ($foo) {
    // deze code wordt uitgevoerd
}
?>


Omgekeerd (!$foo) kan natuurlijk ook, dan check je of het een falsey waarde is. Je hebt hier dus weer te maken met hetzelfde probleem als met de empty functie.

3. '' != $foo
En dit is dan de oplossing. Deze kijkt of de waarde van $foo niet gelijk is aan een lege string. Hierbij worden dus dingen als '0' niet meegenomen: precies wat we willen.
 
G P

G P

10/09/2012 22:50:53
Quote Anchor link
Waarom niet zo?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (strlen($foo) < 1){
    // String is leeg
} elseif (strlen($foo) > 0) {
    // String is niet leeg
}
 
Wouter J

Wouter J

10/09/2012 22:58:59
Quote Anchor link
Kan ook, al is die if in de else overbodig aangezien dat precies het omgekeerde is van wat je daarvoor hebt getest.

Zelf denk ik dat hij wat langzamer is, omdat je gebruik maakt van een functie.
 
N K

N K

11/09/2012 12:13:19
Quote Anchor link
Bedankt voor alle info!
 



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.