Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

php else

Varför funkar inte detta.
Den ska ta lördag eller söndag och skriva ut ledig ?

<?php $dag = strftime('Idag är det %A %d %B %Y %T <br>'); echo $dag; if ($dag == "Saturday" || $dag =="Sunday") { echo "Du är ledig"; } else { echo "Du måste jobba "; }

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009

varför göra det så jobbigt?

echo "idag är det". $date("l"); if (date("N")>5){ det är helg }else det är inte helg }

om du envisas med din lösning är det för att $dag är aldrig "saturday" eller "sunday" för du skriver till massa saker till $dag

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Jan 2004
Skrivet av Lady:

Varför funkar inte detta.
Den ska ta lördag eller söndag och skriva ut ledig ?

Därför att $dag ALDRIG innehåller enbart "Saturday" eller "Sunday" som du bevisligen borde se när du skriver ut $day.

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

sorry men fattar inte

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

Hur ska jag köra för att den ska fatta att idag eller i morgon så är det helg ?

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009
Skrivet av Lady:

Hur ska jag köra för att den ska fatta att idag eller i morgon så är det helg ?

inte läst förslaget jag gav?

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Mar 2005

@Lady: Din variabel $dag innehåller mer än endast Saturday eller Sunday, dvs du kan inte använda '==' för att testa om Saturday eller Sunday finns i variabeln. Du måste använda preg_match eller strpos istället. Se gärna http://stackoverflow.com/questions/4366730/check-if-string-contains-specific-words för mer information. När du använder '==' testas endast om $dag är hundraprocentigt lika med Saturday eller Sunday, då din variabel även innehåller annan text så kan $dag aldrig vara lika med Saturday eller Sunday.

Trädvy Permalänk
Medlem
Registrerad
Maj 2013
Skrivet av Lady:

Hur ska jag köra för att den ska fatta att idag eller i morgon så är det helg ?

Du ser i din $echo vad $dag innehåller.

Det du gör med din kod, är att kontrollera om $dag är EXAKT lika med "Saturday" eller "Sunday".
Vad innehåller $dag? Jo, det innehåller för det första något mer än bara vilken dag det är... den innehåller faktiskt detta; 'Idag är det %A %d %B %Y %T <br>'

Det din kod då betyder, är att du får ut följande information genom din formatering: 'Idag är det Saturday 18 June 2016 15:50:00 <br>'

Det du ville få fram var alltså dagen? Då räcker det med att du döper om din nuvarande variabel till $date, och skapar sedan en ny variabel med namnet $dag.
$dag kommer då alltså bli detta;

$dag = strftime('%A'); då %A i formateringen betyder "A full textual representation of the day" - se http://php.net/manual/en/function.strftime.php

M-ITX: Fractal Design Node 304 Gigabyte H97N i7 4790k Msi GTX980 Gaming Ballistix Sport 16GB @ 1600MHz

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

@Christley:
Läste men förstod inte

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Lund
Registrerad
Sep 2003
Skrivet av Lady:

@Christley:
Läste men förstod inte

date("N") returnerar 6 för lördag och 7 för söndag. Allt som krävs för att titta om det är helg är alltså den här if-satsen

if (date("N") > 5)

Men du bör också läsa vad zneike och Pamudas skrivit så att du förstår vad felet var i din lösning

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

ok, jag har läst era tips, vissa har jag förståt men problemet ligger i att jag är för newbi.
Jag har gjort om lite .
Det som jag har fastnat på nu är hur jag ska få in min array så att den tar siffran 6 eller 7 och skriver ut värdet dvs dagen.

<?php // skapar en variabel som är en array "vektor" där varje nyckel pekar på ett värde "index värde" $dagar[1] ="Måndag" ; $dagar[2] ="Tisdag"; $dagar[3] ="Onsdag"; $dagar[4] ="Torsdag"; $dagar[5] ="Fredag"; $dagar[6] ="Lördag"; $dagar[7] ="Söndag"; if (date("N") >6 || ("N") <7 ) { echo date("N"); } else { echo "back to work"; }

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Maj 2009
Skrivet av Lady:

ok, jag har läst era tips, vissa har jag förståt men problemet ligger i att jag är för newbi.
Jag har gjort om lite .
Det som jag har fastnat på nu är hur jag ska få in min array så att den tar siffran 6 eller 7 och skriver ut värdet dvs dagen.
<?php

// skapar en variabel som är en array "vektor" där varje nyckel pekar på ett värde "index värde"
$dagar[1] ="Måndag" ;
$dagar[2] ="Tisdag";
$dagar[3] ="Onsdag";
$dagar[4] ="Torsdag";
$dagar[5] ="Fredag";
$dagar[6] ="Lördag";
$dagar[7] ="Söndag";

if (date("N") >6 || ("N") <7 )
{
echo date("N");

}

else
{
echo "back to work";
}

date("l") ger dagens fulla namn

Min dator: Silent Base 600 | 1700X @ 3.9Ghz | MSI Gaming X 1080TI | RM750X | 512Gb M2 | 16Gb 3200mhz Ram | S34E790C @ 3440x1440
Tjejens dator: Define r4 | i5 3570k @ 4.2ghz | GTX Titan | 750w Supernova | 240gb SSD | 32gb ram
Citera/Tagga för svar!

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

// skapar en variabel som är en array "vektor" där varje nyckel pekar på ett värde "index värde" $dagar[1] ="Måndag" ; $dagar[2] ="Tisdag"; $dagar[3] ="Onsdag"; $dagar[4] ="Torsdag"; $dagar[5] ="Fredag"; $dagar[6] ="Lördag"; $dagar[7] ="Söndag"; if (date("N") >6 || ("N") <7 ) { if(date("N")==6) { echo "Idag är det " .$dagar[6] ."<br>". "Du är ledig" ; } elseif(date("N")==7) { echo "Idag är det " .$dagar[7] ."<br>". "Du är ledig" ; } } else { echo "back to work, det är inte helg ännu"; }

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003

Jag tror jag har fått till som jag vill ha , men frågan är om det är det korrekta sättet eller dåligt.

// skapar en variabel som är en array "vektor" där varje nyckel pekar på ett värde "index värde" $dagar[1] ="Lördag"; $dagar[2] ="Söndag"; if(date("N")==6) { echo "Idag är det " .$dagar[1] ."<br>". "Du är ledig" ; } elseif(date("N")==7) { echo "Idag är det " .$dagar[2] ."<br>". "Du är ledig" ; } else { echo "Idag är det " . date("l")." back to work, det är inte helg ännu"; }

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Registrerad
Jun 2012

<?php $dag = strftime('Idag är det %A %d %B %Y %T <br>'); echo $dag; if (strpos($dag, "Saturday") !== false || strpos($dag, "Sunday") !== false ) { echo "Du är ledig"; } else { echo "Du måste jobba "; } // kanske det där fungerar?

bara jag som inte kan echoa strftime?

Processor: Intel i5 3570K @ 4,5 GHz | Kylare: CM Hyper 212 Evo | Grafikkort: EVGA GTX 970 SSC | Chassi: HAF 922 Svart | Mobo: Asus P8Z77-V | RAM: Corsair Vengeance Low Profile 16 GB (4x4GB) | SSD01: 250GB Samsung 840 EVO | SSD02: 1TB Samsung 850 EVO | Nätagg: Corsair 850 W

Trädvy Permalänk
Medlem
Plats
SweClockers forum
Registrerad
Aug 2012
Skrivet av Lady:

Jag tror jag har fått till som jag vill ha , men frågan är om det är det korrekta sättet eller dåligt.
// skapar en variabel som är en array "vektor" där varje nyckel pekar på ett värde "index värde"

$dagar[1] ="Lördag";
$dagar[2] ="Söndag";

if(date("N")==6)
{
echo "Idag är det " .$dagar[1] ."<br>". "Du är ledig" ;
}

elseif(date("N")==7)
{

echo "Idag är det " .$dagar[2] ."<br>". "Du är ledig" ;
}

else
{
echo "Idag är det " . date("l")." back to work, det är inte helg ännu";
}

Du gör det oerhört komplicerat för dig. Vad fyller din 1-indexerade array för syfte om du ändå hårdkodar vilket index du accessar? Det du efterfrågar går att göra på flera olika "rätt" sätt. Själv tycker jag om oneliners och ternary operators väldigt mycket, så jag hade gjort en sådan här:

printf("Idag är det %s.\nDu är%s ledig.", date("l"), date("N") > 4 ? "" : " inte");

För en nybörjare kanske det är mer förståeligt att använda något i stil med detta:

echo "Idag är det", date("l"), "\n"; if (date("N") > 4) { // större än fredag echo "Du är ledig."; } else { echo "Du är inte ledig."; }

Guide: Roota din HTC - BB-Kod-knappar på Prisjakt

              Min burk - Kvävekyld till 80%
Phenom II X4 965@3900MHz (Sommarklock)
GTX 760@1111MHz

Ibland har jag fel, men då är det någon annans fel.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av LemonIllusion:

Vad fyller din 1-indexerade array för syfte om du ändå hårdkodar vilket index du accessar?

Jag misstänker att han vill ha dygnsnamnen på svenska, även om det senaste försöket blev lite konstigt. Ett vettigare sätt än att använda en array för det borde vara att bara slänga in en setlocale i början av koden, t.ex. setlocale(LC_TIME, "") för att använda systemets datumformatering.

Trädvy Permalänk
Medlem
Plats
Härnösand
Registrerad
Apr 2003
Skrivet av perost:

Jag misstänker att han vill ha dygnsnamnen på svenska, även om det senaste försöket blev lite konstigt. Ett vettigare sätt än att använda en array för det borde vara att bara slänga in en setlocale i början av koden, t.ex. setlocale(LC_TIME, "") för att använda systemets datumformatering.

Nybörjare är bara förnamnet. Ja det stämmer, jag ville få fram svenska namn.
Räcker det med att skriva <?php setlocale (LC_TIME) för att få svenska datum ?

K4 Jägare är härliga människor. Varför får inte rika människor bli rikare. Ja till EMU
We live for the one, we die for the one'
(Loggar man inte ut får man en extra rad i sin signatur :-) /VaCUm)

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Jun 2007
Skrivet av Lady:

Nybörjare är bara förnamnet. Ja det stämmer, jag ville få fram svenska namn.
Räcker det med att skriva <?php setlocale (LC_TIME) för att få svenska datum ?

Antagligen, jag kan egentligen inte PHP. Det viktiga är att anropa setlocale innan du använder date för att få ut dagens namn. Men det är setlocale(LC_TIME, "") du ska anropa då, notera den tomma strängen som andra argument. En tom sträng säger åt setlocale att använda samma datumformat som systemet i övrigt använder, d.v.s. svenska om du har ditt operativsystem inställt på svenska. Man kan också använda t.ex. setlocale(LC_TIME, "sv_SE") för att explicit ange svenska, men då blir det krångligare eftersom namnen inte verkar vara plattformsoberoende av någon anledning ("sv_SE" fungerar troligtvis inte i Windows t.ex.).