PHP en OnChange probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gijs Jansen

Gijs Jansen

29/05/2013 10:00:26
Quote Anchor link
Goedemorgen,

Ik heb in een loop een aantal datum in een <select> gezet.
Bij die datum zoek ik de dag van de week en die staat er ook bij.

Nu wil ik graag dat als er een vrijdag geselecteerd wordt dat er 2 nieuwe text fields bij komen.
Alleen ik weet niet hoe ik dit doe met javascript. De <option> krijgt nu de waarde van de datum mee.

Hoop dat iemand me hiermee kan helpen.


---Code---
<select name="datum">
<option>Voor welke datum wilt U reserveren?</option>

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
<?php
    for ($d=0;$d<10;$d++){
    $nu = date("d-m-Y",strtotime("$d day"));
    $day_of_the_week = date('l', strtotime($nu));
    if ($day_of_the_week == Monday){$day_of_the_week = 'Maandag';}else if
    ($day_of_the_week == Tuesday){$day_of_the_week = 'Dinsdag';}else if
    ($day_of_the_week == Wednesday){$day_of_the_week = 'Woensdag';}else if
    ($day_of_the_week == Thursday){$day_of_the_week = 'Donderdag';}else if
    ($day_of_the_week == Friday){$day_of_the_week = 'Vrijdag';}else if
    ($day_of_the_week == Saturday){$day_of_the_week = 'Zaterdag';}else if
    ($day_of_the_week == Sunday){$day_of_the_week = 'Zondag';}
    
    echo '<option value="'.$nu.'">'.$day_of_the_week .' &emsp;'. $nu.'</option>';
    }

    ?>

</select>
 
PHP hulp

PHP hulp

16/11/2024 22:55:23
 
Pieter R

Pieter R

29/05/2013 13:48:47
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$("select").change(function(){
   $("div").empty();
   $("div").append('<br><input type="text"><br><input type="text" name="veld[]"><br>');
});

=> http://jsbin.com/oduzup/6/edit
 
Gijs Jansen

Gijs Jansen

29/05/2013 15:05:26
Quote Anchor link
Thanks, maar eigenlijk wil ik dat alleen op vrijdag die velden zichtbaar zijn.
 
Pieter R

Pieter R

29/05/2013 16:03:06
Quote Anchor link
Ik kom voorlopig uit op het volgende.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$("select").change(function() {
  $("div").empty();
  if ($("select").val() == "31-05-2013") {
    $("div").append('<br><input type="text"><br><input type="text" name="veld[]"><br>');
  }
});

Je hebt dan alleen 31-05-2013 te pakken.
Ik denk dat je wel een stap verder wilt.
Je zou dan in Jquery/Javascript moeten gaan bepalen of "31-05-2013" een vrijdag is.
Da's voor mij ook ff een uitzoeker.

=> http://jsbin.com/oduzup/9/edit
 
Gijs Jansen

Gijs Jansen

29/05/2013 16:11:02
Quote Anchor link
Iig bedankt, ik kwam er ook niet uit hoe je dat dat in javascript doet. Mocht je het weten dan hoor ik het graag.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

29/05/2013 17:34:05
Quote Anchor link
Als je de value van de option in het formaat May 31, 2013 (dus in het engels) zet, kan je
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$("select").change(function() {
    $("div").empty();
    var adate = new Date($(this).val())
    if (adate.getDay() == 5) {
        $("div").append('<br><input type="text"><br><input type="text" name="veld[]"><br>');
    }
});

Kan ook met de datum zoals je heb nu er in hebt staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$("select").change(function() {
    $("div").empty();
    var date_arr = $(this).val().split('-');
    var adate = new Date(parseInt(date_arr[2]), parseInt(date_arr[1]) - 1, parseInt(date_arr[0]);
    if (adate.getDay() == 5) {
        $("div").append('<br><input type="text"><br><input type="text" name="veld[]"><br>');
    }
});
 
Frank Nietbelangrijk

Frank Nietbelangrijk

29/05/2013 17:41:46
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
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Datum naar javascript</title>
<script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
<script>
$(document).ready(function() {
    $('.my-select').change(function() {
        var milliseconds = $('.my-select option:selected').val();
          var d = new Date();
        d.setTime(milliseconds);
        var datum = d.getDate()+'-'+(d.getMonth()+1)+'-'+d.getFullYear();
        alert(datum);
    });
});
</script>
</head>

<body>
<select class="my-select">
<?php
    $days
= array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
    $timenow = time();
    for ($d=0;$d<10;$d++){
        $nextday = $timenow + $d * 24 * 60 * 60;
        $day_of_the_week = $days[date('w', $nextday)];
        
        echo '<option value="'.($nextday*1000).'">'.$day_of_the_week .' &emsp;'. date('d-m-Y',$nextday).'</option>';
    }

?>

</select>
</body>
</html>
 
Pieter R

Pieter R

30/05/2013 12:04:38
Quote Anchor link
Ger en Frank. Dank.
Weer wat geleerd.
 
Gijs Jansen

Gijs Jansen

01/06/2013 19:21:26
Quote Anchor link
Bedankt voor de reacties, probeer er mee te spelen maar krijg hem niet goed. zie nu bij elke datum, of verandering een alert box ipv alleen op vrijdag twee text fields
Gewijzigd op 01/06/2013 19:31:24 door Gijs Jansen
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/06/2013 01:38:52
Quote Anchor link
hee Gijs,

ik heb een voorbeeld gemaakt hoe je de datum uit de select (die overigens door php gemaakt wordt) kunt uitlezen en in een javascript Date object omgezet worden. Om te bewijzen dat het werkt heb ik die alert er ingezet. Ik ging er van uit dat je de rest zelf zou kunnen :)

Wat is de volgende stap?
maak die twee textfields gewoon in de html maar maak ze in de css hidden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
input.my-textfield {
    display:none;
}

dan in de change() functie haal je die alert weg en op die plek moeten dus die twee textfields zichtbaar worden.

Toevoeging op 02/06/2013 01:57:33:

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Datum naar javascript</title>
<style>
.my-textfield {
    display:none;
}
</style>
<script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
<script>
// wacht tot de pagina geladen is
$(document).ready(function() {
    
    // als er een ander item geselecteerd wordt in de selectbox
    $('.my-select').change(function() {
        // haal de milliseconden sinds 1-1-1970 uit de 'value' van het geselecteerde item
        var milliseconds = $('.my-select option:selected').val();
        // maak een Date object en zet hem op de juiste tijd/datum aan de hand van de milliseconden
        var d = new Date();
        d.setTime(milliseconds);

        // als het om een vrijdag gaat laat dan twee textfields zien
        if(d.getDay() == 5) {
            $('.my-textfield').fadeIn('slow');
            // ter demonstratie dan ook de inhoud even wijzigen van de textfields:
            $('#text1').val('Thanks god..');
            $('#text2').val('it is Friday!');
        // anders de textfields weer laten verdwijnen
        } else {
            $('.my-textfield').fadeOut('slow');    
        }
    });
});
</script>
</head>

<body>
<select class="my-select">
<?php
    $days
= array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
    $timenow = time();
    for ($d=0;$d<10;$d++){
        $nextday = $timenow + $d * 24 * 60 * 60;
        $day_of_the_week = $days[date('w', $nextday)];
        
        echo '<option value="'.($nextday*1000).'">'.$day_of_the_week .' &emsp;'. date('d-m-Y',$nextday).'</option>';
    }

?>

</select>
<input type="text" id="text1" class="my-textfield" value="test1" />
<input type="text" id="text2" class="my-textfield" value="test2" />
</body>
</html>
Gewijzigd op 02/06/2013 10:06:02 door Frank Nietbelangrijk
 
Gijs Jansen

Gijs Jansen

02/06/2013 11:40:46
Quote Anchor link
SUPER! :) Merci, dit is wat ik wilde. Snap er niet zo veel van vandaar dat ik er niet zo ver mee kwam.
 



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.