FAQ |
Kalender |
2011-09-12, 19:45 | #1 | ||
|
|||
Medlem
|
Tja , hur gör man en funktion som visar den som har namnsdag idag? ungefär som
http://www.zxy.se/ ? Tack /Fredrik |
||
Svara med citat |
2011-09-12, 19:51 | #2 | |||
|
||||
Bara ett inlägg till!
|
Plocka listan med namnsdagar från Wikipedia:
http://sv.wikipedia.org/wiki/Lista_&...i_datumordning |
|||
Svara med citat |
2011-09-12, 20:48 | #3 | ||
|
|||
Medlem
|
Ok tack , men hur ser funktions koden ut som hämtar och checkar om datumet stämmer ihop med dagens?
|
||
Svara med citat |
2011-09-12, 21:51 | #4 | |||
|
||||
Medlem
|
I vilket språk har du tänkt dig att använda?
|
|||
Svara med citat |
2011-09-12, 22:26 | #5 | ||
|
|||
Medlem
|
jag har tänkt att använda php 5
|
||
Svara med citat |
2011-09-12, 22:33 | #6 | |||
|
||||
Mycket flitig postare
|
Problematiken ser ut på samma sätt oavsett språk. Det som skiljer är syntax och API:er.
Låt oss bryta ned problemet. För det första behöver du veta vilka dagar som det finns namnsdagar på och namnen såklart. Om det som står på wikipedia stämmer kan du spara dessa i en databas, Xml-fil eller i en sorts behållare i minnet, vilket spelar liten roll. Låt oss säga att vi sparar det i minnet den här gången eftersom det blir mindre kod och lättare att förstå om man är ny på att programmera (vilket du verkar vara). Eftersom varje dag är unik (den 12/9 förekommer bara en gång per år) så vi kan lägga in informationen i en key/value-collection för enkelhetens skull. Det är en typ av behållare som har en nyckel per rad och ett värde per rad. En sådan behållare är perfekt när man har två data som kan representeras med två kolumner (i vårt fall datum och namn). Eftersom vi faktiskt vet att det bara finns en dag på året som är den 12/9 kan vi göra på det här sättet. Fördelen med den här typen av behållare är att vi slipper loopa igenom alla dagar för att hitta rätt rad och få ut rätt namn. Kod:
var namedays = new Dictionary<string, string>(); //[...] namedays.Add("12/9","Åsa, Åslög"); namedays.Add("13/9", "Sture"); namedays.Add("14/9", "Ida"); namedays.Add("15/9", "Sigrid, Siri"); namedays.Add("16/9", "Dag, Daga"); //[...] namedays.Add("25/12", ""); namedays.Add("26/12", "Stefan, Staffan") namedays.Add("27/12", "Johannes, Johan"); namedays.Add("28/12", "Benjamin"); namedays.Add("29/12", "Natalia, Natalie"); namedays.Add("30/12", "Abel, Set"); namedays.Add("31/12", "Sylvester"); För att hämta ut namnsdagarna för ett datum behöver vi på något sätt skapa en nyckel så att vi hämtar ut namnen för rätt rad. Nyckeln är t.ex. "12/9" ovan. Hade vi använt en databas hade nyckeln fortfarande kunnat vara "12/9", en räknare eller något annat som bara kan förekomma en gång. Eftersom vi vet om alla nycklar behöver vi inte loopa igenom alla rader utan kan enkelt hämta en rad genom att skapa en nyckel som finns i behållaren. Vill vi ha ut dagens namnsdagar (idag är det den 12/9) behöver vi således sätta ihop en sträng som är - just det - "12/9". Vi vill ju inte behöva ändra nyckeln varje dag så vi skapar nyckeln dynamiskt i koden genom att hämta dag och månad från dagens datum. Kod:
string key = DateTime.Today.Day + "/" + DateTime.Today.Month; Nu har vi en nyckel som är i samma format som behållarens. Kör vi koden idag ger den oss "12/9" medan den resulterar i "13/9" imorrn. Kod:
string todaysNames = namedays[key]; //hämtar ut dagens namnsdagar med hjälp av nyckeln. string output = "Idag har " + todaysNames + " namnsdag."; if (string.IsNullOrEmpty(todaysNames)) { output = "Ingen har namnsdag idag"; //på skoj: fanns det ingen namnsdag, skriv ut morgondagens istället. key = DateTime.Today.AddDays(1).Day + "/" + DateTime.Today.AddDays(1).Month; string tomorrowsNames = namedays[key]; output += " men imorrn har " + tomorrowsNames + " namnsdag."; } //gör sedan vad du vill med output-variabeln |
|||
Svara med citat |
2011-09-13, 10:06 | #7 | ||
|
|||
Supermoderator
|
Eftersom du skriver "Lär mig PHP 5 & mysql" så kanske det är PHP du vill ha? I så fall sparar du helt enkelt datum och namn i en tabell i din databas och sedan söker du bara på dagens datum och skriver ut namne(n/t).
__________________
Full-stack developer, free for smaller assignments |
||
Svara med citat |
2011-09-13, 10:49 | #8 | ||
|
|||
Nykomling
|
Ett konkret exempel hur dAEks exempel kan se ut i PHP, där Dictionary motsvaras av en associativ array, och där det enklaste sättet att plocka fram nyckeln är med date():
PHP-kod:
|
||
Svara med citat |
2011-09-13, 21:15 | #9 | ||
|
|||
Medlem
|
Citat:
|
||
Svara med citat |
2011-09-14, 23:42 | #10 | |||
|
||||
Mycket flitig postare
|
Citat:
Ett tips till nästa gång är att skriva vilket programmeringsspråk det gäller antingen i rubriken eller i första inlägget. Då slipper vi gamlingar skriva svar som ändå inte kommer uppskattas. |
|||
Svara med citat |
Svara |
|
|