Kom ihåg mig?
Home Menu

Menu


Idag har .... namnsdag?

Ämnesverktyg Visningsalternativ
Oläst 2011-09-12, 18:45 #1
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Question Idag har .... namnsdag?

Tja , hur gör man en funktion som visar den som har namnsdag idag? ungefär som
http://www.zxy.se/ ?


Tack /Fredrik
Zyry är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-12, 18:51 #2
emilvs avatar
emilv emilv är inte uppkopplad
Bara ett inlägg till!
 
Reg.datum: Feb 2004
Inlägg: 1 564
emilv emilv är inte uppkopplad
Bara ett inlägg till!
emilvs avatar
 
Reg.datum: Feb 2004
Inlägg: 1 564
Plocka listan med namnsdagar från Wikipedia:
http://sv.wikipedia.org/wiki/Lista_&...i_datumordning
emilv är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-12, 19:48 #3
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Ok tack , men hur ser funktions koden ut som hämtar och checkar om datumet stämmer ihop med dagens?
Zyry är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-12, 20:51 #4
freakies avatar
freakie freakie är inte uppkopplad
Medlem
 
Reg.datum: Nov 2008
Inlägg: 128
freakie freakie är inte uppkopplad
Medlem
freakies avatar
 
Reg.datum: Nov 2008
Inlägg: 128
I vilket språk har du tänkt dig att använda?
freakie är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-12, 21:26 #5
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
jag har tänkt att använda php 5
Zyry är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-12, 21:33 #6
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
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");
Låt oss låtsas att vi varit duktiga och lagt in alla dagar i vår behållare (namedays).

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;
Vad vi gör här är att ta dagens datum och formatera det så att det blir i samma format som nycklarna i behållaren. Detta är viktigt. Skapar vi en annan nyckel, t.ex. "12/09", kommer det inte bli någon träff eftersom det finns med en extra nolla i nyckeln. Då kommer vår kod att krascha eftersom vi inte har lagt in logik för att hantera sådana fall, men eftersom vi har kontroll på hur vi skapar vår nyckel borde det inte vara nån fara i det här fallet.

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
Det här är ett väääääldigt enkelt sätt att göra det på men jag antar att du vill komma igång med nånting relativt snabbt.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-13, 09:06 #7
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
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
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-13, 09:49 #8
andreasp andreasp är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2010
Inlägg: 5
andreasp andreasp är inte uppkopplad
Nykomling
 
Reg.datum: Dec 2010
Inlägg: 5
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:
$namedays = array(
    
"12/9" => "Åsa, Åslög",
    
"13/9" => "Sture",
     
// .. fyll på med namnsdagar
);

$key date('j/n');
$nameday $namedays[$key];

echo 
"Idag har $nameday namnsdag." 
Om du lär dig att programmera, kika på hur associativa arrayer fungerar, de är väldigt användbara och effektiva om de används på rätt sätt!
andreasp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-13, 20:15 #9
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Zyry Zyry är inte uppkopplad
Medlem
 
Reg.datum: Aug 2011
Inlägg: 118
Citat:
Ursprungligen postat av andreasp Visa inlägg
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:
$namedays = array(
    
"12/9" => "Åsa, Åslög",
    
"13/9" => "Sture",
     
// .. fyll på med namnsdagar
);

$key date('j/n');
$nameday $namedays[$key];

echo 
"Idag har $nameday namnsdag." 
Om du lär dig att programmera, kika på hur associativa arrayer fungerar, de är väldigt användbara och effektiva om de används på rätt sätt!
Tusen tack, ska försöka börja använda associativa arrayer.
Zyry är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-09-14, 22:42 #10
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Citat:
Ursprungligen postat av fredrikwirth Visa inlägg
Tusen tack, ska försöka börja använda associativa arrayer.
Jaha, så min långa och utförliga förklaring passade inte va, VA!??!?

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.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 19:02.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017