For loop voor weeknummers.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Karamm Jzz

Karamm Jzz

13/09/2017 16:37:39
Quote Anchor link
Kan iemand mij helpen een forloop te schrijven die van 1 t/m 52 telt, maar dan begint met de huidige weeknummer boven aan?

ik heb nu dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
for ($week = 1; $week <= 52; $week++) {
    if ($week == date('W')){
        echo ">>>";
    }

    echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
    echo "<div id='content$week'>";
}

?>

graag zou ik het zo willen:

(huidige week nummer is 37)
37
38
39
40
...
52

1
2
3
..
36

alvast bedankt voor alle hulp!!
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 13/09/2017 16:41:00 door - Ariën -
 
PHP hulp

PHP hulp

26/04/2024 01:13:47
 
- Ariën  -
Beheerder

- Ariën -

13/09/2017 16:42:55
Quote Anchor link
Als je wilt beginnen met het huidige weeknummer, dan moet je in je for() niet met $week = 1 beginnen, maar met $week=date('W').
 
Karamm Jzz

Karamm Jzz

13/09/2017 16:45:08
Quote Anchor link
Ariën, bedankt voor je reactie,

Dat heb ik gedaan, dan begint hij inderdaad met de huidige weeknummer...

maar dan eindig hij bij 52, en begint hij niet meer opnieuw.

ik wil dat die na de 52 weer bij 1 begint
 
- Ariën  -
Beheerder

- Ariën -

13/09/2017 17:27:09
Quote Anchor link
Tja, weeknummers blijven getallen, en getallen blijven oplopen, dus ik denk dat je dan toch echt met twee for loopjes aan de slag moet gaan.
 
Ben van Velzen

Ben van Velzen

13/09/2017 17:29:44
Quote Anchor link
Misschien zoiets? Zou een stuk netter kunnen uiteraard.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
for ($currentWeek = date('W'), $week = $currentWeek; $week != $currentWeek - 1; $week++) {
    if ($week > 52) {
      $week = 1;
    }

    if ($week == $currentWeek){
        echo ">>>";
    }

    echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
    echo "<div id='content$week'>";
}

?>
 
Rob Doemaarwat

Rob Doemaarwat

13/09/2017 17:31:47
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$date
= time();
for($i = 0; $i < 52; $i++){
  print(date('o\\WW',$date) . "\n");
  $date = strtotime('+1 week',$date);
}

?>


Let op: soms heeft een jaar 53 weken (2020 weer).
 
Karamm Jzz

Karamm Jzz

13/09/2017 18:19:34
Quote Anchor link
Geweldig!!!

Ben van Velzen, jou loop werkt, alleen week 63 wordt dan niet getoond?

Rob doemaarwat -> jou code is wat ik wil hebben

alleen hoe ga ik deze implementeren zodat die op mijn eigen code lijkt..

(ik ben nog maar een php beginner)
 
Rob Doemaarwat

Rob Doemaarwat

13/09/2017 18:24:01
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$date
= time();
for($i = 0; $i < 52; $i++){
  $week = date('o\\WW',$date);
  if(!$i) print('>>>'); //1st week = current week
  echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>\n";
  echo "<div id='content$week'>\n";
  $date = strtotime('+1 week',$date);
}

?>
 
Ben van Velzen

Ben van Velzen

13/09/2017 19:17:56
Quote Anchor link
Misschien zou een loop als volgt ook nog werken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
for ($i = time(); $i < strtotime('+1 year'); $i = strtotime('+1 week', $i)) {
  $week = date('W', $i);
  if ($week == date('W')){
    echo ">>>";
  }

  echo "<button id='toggle$week' value='$week' type='button' class='btn btn-link'><h4>Week $week</h4></button>";
  echo "<div id='content$week'>";
}

?>
 
Rob Doemaarwat

Rob Doemaarwat

13/09/2017 19:35:02
Quote Anchor link
@Ben: sjiek :-)

Je hebt dan wel 2x een week 37 (deze week, en die van volgend jaar), en dus ook 2x een id='toggle37' (en dus een probleem). Daarom had ik het jaartal er nog even voor geplakt ('o\\WW' -> o = jaartal behorende bij het weeknr, \\W = letterlijke 'W', W = weeknummer).
 
- SanThe -

- SanThe -

13/09/2017 19:43:49
Quote Anchor link
De <div> wordt nergens afgesloten.
 
Marthijn Buijs

Marthijn Buijs

13/09/2017 19:57:05
Quote Anchor link
Misschien heb je hier wat aan?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

$weeknummers
= array_merge(range(date('W'), 52), range(1, date('W') - 1));

?>
 
Karamm Jzz

Karamm Jzz

17/09/2017 19:23:15
Quote Anchor link
Iedereen bedankt voor jullie bericht!!

Ik ben nu een stuk verder, alleen helaas werkt niet toggle niet meer.

Weet iemand hoe dat komt.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

17/09/2017 20:02:57
Quote Anchor link
Waarschijnlijk omdat je allemaal verschillende id's hebt? Ik zou in plaats van id="toggle11" maar gewoon een class gebruiken, bijvoorbeeld class="toggleWeek". Hiervoor moet je wel enigzins je javascript aanpassen waarschijnlijk. Een stukje code hiervan zou handig zijn..
 
Karamm Jzz

Karamm Jzz

18/09/2017 13:27:17
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var toggle1 = document.getElementById('toggle1');
var content1 = document.getElementById('content1');

var toggle2 = document.getElementById('toggle2');
var content2 = document.getElementById('content2');


t/m 52


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
toggle1.addEventListener("click", function(){
    content1.style.display = (content1.dataset.toggled ^= 1) ? "block" : "none";
}, false);

toggle2.addEventListener("click", function(){
    content2.style.display = (content2.dataset.toggled ^= 1) ? "block" : "none";
}, false);


t/m 52

Classes weet ik niet hoe dat werkt, dat staat op me lijstje om het te leren!
Gewijzigd op 18/09/2017 13:40:40 door Karamm Jzz
 
Ivo P

Ivo P

18/09/2017 13:57:58
Quote Anchor link
mag het met jquery?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
  echo "<button data-weeknr='$week' value='$week' type='button' class='weektogglaar btn btn-link'><h4>Week $week</h4></button>";
  echo "<div id='content$week' class='contentdiv'>";


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
$(document).on('click', '.weektogglaar', function() {
    $('.contentdiv').hide();
    var weekrn = $(this).data('weeknr');
    $('#content' + weeknr).show();

});


indien ergens geklikt wordt, en het blijkt een element te zijn met de class weektogglaar, dan doe:
* verberg alle elementen met de class contentdiv
* haal het weeknr op uit het geklikte element (de button) dus in data-weeknr
* show het element met id = content+weeknr
 
Remco nvt

Remco nvt

18/09/2017 16:34:20
Quote Anchor link
https://weeknummers.nl/faq.php

Vergeet niet dat het soms kan zijn dat een week 53 bestaat.
 
Karamm Jzz

Karamm Jzz

18/09/2017 17:08:33
Quote Anchor link
Bedankt voor je reactie, helaas werkt dat niet.

Het stukje van @rob doemaarwat doet wat ik wil alleen werkt de toggle niet, misschien omdat de weeknummers
worden geprint met 01,02, 03 enz..

ik heb me javascript aangepast naar toggle01 content01

maar hij werkt helaas niet.
 
Bastiaan Van Overrede

Bastiaan Van Overrede

28/03/2018 10:47:51
Quote Anchor link
Een compleet overzicht van hoe weeknummers werken vind je op: https://en.wikipedia.org/wiki/ISO_week_date
 



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.