webForumDet fria alternativet

Generera en dropdown med svenska veckodagar, dagens dag ska vara förvald?

PHP

13 svar · 2 217 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#1

Antar att min rubrik säger allt :) Vill med php generera en dropdown/valbar lista med de svenska veckodagarnas namn där dagens dag ska vara förvald i listan. Hur?

Medlem sedan juni 2012581 inlägg
#2
$days = array('Söndag', 'Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag');

echo "<select>";

for($i=0; $i<count($days); $i++) {
    if($i == date("w")) {
        echo "<option selected>{$days[$i]}</option>";
    } else {
        echo "<option>{$days[$i]}</option>";
    };
};

echo "</select>";

Helt otestad, men borde fungera.

Medlem sedan maj 2002821 inlägg
#3

Strålande! Tack!

Medlem sedan juli 200012 978 inlägg
#4

Notera att vi som svensk standard har en vecka som börjar på måndag!

Medlem sedan maj 2002821 inlägg
#5

Sant. Hur skulle man uppdatera det för att måndag ska stå först?

Medlem sedan juni 2012581 inlägg
#6

Egentligen skulle jag bara kunna dumpa ett par rader kod som fixar det också, men om du vill lära dig programmera så borde jag inte göra det.

Börja med att lägg arrayen i ordningen du vill ha den i, måndag, tisdag, osv.
date("w") returnerar 0 för söndag, 1 för måndag, osv.
Om date("w") == 0, är dagens "dag" $days[7], annars $days[$i-1] i loopen. Svårare än så är det inte. Hur du löser det är upp till dig att komma på! :-)

Medlem sedan maj 2002821 inlägg
#7

I'm a bad student master. Hjälp :(

Medlem sedan juli 200012 978 inlägg
#8

Testa! Vad händer när du lägger dagarna i rätt ordning, vad skall plussas på?

Medlem sedan juni 2012581 inlägg
#9

Vad har du själv testat med? Vad blev resultatet?

Medlem sedan maj 2002821 inlägg
#10

Jo, jag har provat att sätta dagarna i rätt ordning (Måndag, Tisdag, osv.) men då är den valda dagen en dag före aktuell dag. Som i dag Måndag står Tisdag som vald. Antar att det ska in -1 någonstans, men har provat det och får inte det att fungera.

Medlem sedan maj 2002821 inlägg
#11

Så här kanske?

$days = array('Måndag', 'Tisdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lördag', 'Söndag'); 
echo "<select name='day' style='width: 220px;'>"; 
for($i=0; $i<count($days); $i++) { 
  if($i+1 == date("w")) {
    echo "<option value='{$days[$i]}' selected>{$days[$i]}</option>"; 
  } else { 
    echo "<option value='{$days[$i]}'>{$days[$i]}</option>"; 
  }; 
};
Medlem sedan juni 2012581 inlägg
#12

Det där fungerar ända tills det blir söndag. date("w") returnerar 0 om det är söndag. $i+1 kommer aldrig bli 0.

Medlem sedan maj 2002821 inlägg
#13

Jaha :(

Medlem sedan juni 2012581 inlägg
#14

Jaja, här kommer väl lösningen, då.

Byt ut

  if($i+1 == date("w")) {

mot

  if($i+1 == date("w") || ($i == 7 && date("w") == 0)) {

Hänger du med vad jag gjort här?

272 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
143 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)