Permalänk
Medlem

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 "; }

Visa signatur

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)

Permalänk
Medlem

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

Visa signatur

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!

Permalänk
Medlem
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.

Permalänk
Medlem

sorry men fattar inte

Visa signatur

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)

Permalänk
Medlem

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

Visa signatur

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)

Permalänk
Medlem
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?

Visa signatur

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!

Permalänk
Medlem

@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.

Permalänk
Medlem
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

Visa signatur

NZXT H510 Flow MSI B450 Tomahawk MAX
AMD Ryzen 5800X3D RX 7900XTX Kingston Fury 64GB

Permalänk
Medlem

@Christley:
Läste men förstod inte

Visa signatur

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)

Permalänk
Medlem
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

Permalänk
Medlem

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"; }

Visa signatur

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)

Permalänk
Medlem
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

Visa signatur

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!

Permalänk
Medlem

// 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"; }

Visa signatur

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)

Permalänk
Medlem

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"; }

Visa signatur

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)

Permalänk

<?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?

Visa signatur

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

Permalänk
Medlem
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."; }

Visa signatur

Spela Swemantle! Du vet att du vill.

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

Permalänk
Medlem
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.

Permalänk
Medlem
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 ?

Visa signatur

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)

Permalänk
Medlem
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.).