<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>I am Kay</title>
	<atom:link href="http://www.iamkay.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamkay.com</link>
	<description>Ett webbimperium under utveckling</description>
	<pubDate>Sat, 12 Jun 2010 15:36:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<item>
		<title>Tippa.nu smyglanseras</title>
		<link>http://www.iamkay.com/tippa-nu-smyglanseras/</link>
		<comments>http://www.iamkay.com/tippa-nu-smyglanseras/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 15:36:13 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Okategoriserat]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=201</guid>
		<description><![CDATA[Igår lanserades en nedbantad version av Tippa.nu lagom till fotbolls-VM:s första speldag. Fokus kommer att ligga på spelfonder, statistikuppföljning och nyheter inom sport och betting. Trevligt!
]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Igår lanserades en nedbantad version av <a href="http://www.tippa.nu">Tippa.nu</a> lagom till fotbolls-VM:s första speldag. Fokus kommer att ligga på spelfonder, statistikuppföljning och nyheter inom sport och betting. Trevligt!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/tippa-nu-smyglanseras/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kays domännamn</title>
		<link>http://www.iamkay.com/kays-domannamn/</link>
		<comments>http://www.iamkay.com/kays-domannamn/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 15:00:45 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Domännamn]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=198</guid>
		<description><![CDATA[I am Kay skulle jag kanske presentera mig med, om jag bodde i St. Tropez eller Sunny Beach. I Gällivare skulle det nog uppfattas som namnet på något EMO-band. Här från min kontorsplats i hemmet märks inte mycket av det stadsliv som pulserar utanför.  Gratis musik från Spotify överröstar sorlet. Nån självutnämnd talang försöker covra [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.iamkay.com">I am Kay</a> skulle jag kanske presentera mig med, om jag bodde i <a href="http://www.sttropez.nu">St. Tropez</a> eller <a href="http://www.sunnybeach.nu">Sunny Beach</a>. I <a href="http://www.gällivare.se">Gällivare</a> skulle det nog uppfattas som namnet på något <a href="http://www.emo.nu">EMO</a>-<a href="http://www.band.nu">band</a>. Här från min <a href="http://www.kontorsplats.se">kontorsplats</a> i hemmet märks inte mycket av det <a href="http://www.stadsliv.se">stadsliv</a> som pulserar utanför.  <a href="http://www.gratismusik.se">Gratis musik</a> från Spotify överröstar sorlet. Nån självutnämnd <a href="http://www.talang.nu">talang</a> försöker covra <a href="http://www.hallelujah.se">Hallelujah</a> på <a href="http://www.fagott.se">fagott</a> och hade jag haft chansen skulle jag <a href="http://www.tipsa.nu">tipsa</a> om att byta genre till <a href="http://www.nirvana.nu">Nirvana</a>, <a href="http://www.coldplay.nu">Coldplay</a> eller rent av <a href="http://www.lilyallen.se">Lily Allen</a> (lily låter som att det skulle kunna betyda <a href="http://www.gredelin.nu">gredelin</a> på engelska).  Istället tvingas jag leta igenom all <a href="http://www.lokalreklam.se">lokal reklam</a> för närmsta <a href="http://www.eapotek.se">e-apotek</a>. <a href="http://www.ringgratis.se">Ring gratis</a>, står det med stora bokstäver. Jag skulle <a href="http://www.tippa.nu">tippa</a> på att de bakat in det i produktpriset i slutändan, så jag tar upp min <a href="http://www.3gs.se">iPhone 3GS</a>.</p>
<p>Till helgen planerar jag utgång. Jag har kollat med <a href="http://www.allahotell.nu">alla hotell</a> ifall de har något <a href="http://www.vegetariskt.se">vegetariskt</a>, men icke. Tanken slog mig att det kanske finns nån <a href="http://www.bytesplats.se">bytesplats</a> för mat, precis som det finns för <a href="http://www.kladbutiker.se">klädbutiker</a> i form av second-hand. Det låter dock inte tillräckligt <a href="http://www.topnotch.se">top notch</a> med <a href="http://www.förvaltning.se">förvaltning</a> av gammal mat. Jag får istället inrikta mig på att försöka hamna på lite <a href="http://www.kändisbilder.se">kändisbilder</a> - kort och gott <a href="http://www.pictures.nu">pictures</a> som de säger utomlands - men nu bodde jag varesig i <a href="http://www.mumbai.nu">Mumbai</a> eller <a href="http://www.brno.se">Brno</a>, så vi fortsätter att hålla oss till svenska.</p>
<p><em>Inspirerad av en annan domän<a href="http://www.dan.se/dans-domaner.html">pundare</a> (även om jag inte längre har domännamnet i mitt ägo).</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/kays-domannamn/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Gredelin.nu - färgglada kuvert</title>
		<link>http://www.iamkay.com/gredelinnu-fargglada-kuvert/</link>
		<comments>http://www.iamkay.com/gredelinnu-fargglada-kuvert/#comments</comments>
		<pubDate>Sun, 28 Mar 2010 03:57:45 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Gredelin.nu]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=196</guid>
		<description><![CDATA[Så här under småtimmarna kom Gredelin.nu att bli ett nytt tillskott i samlingen av nischade småbutiker. Sedan tidigare har vi Kyänibutiken och Sportprylar och nu alltså Gredelin.nu. Den som hängt med i nyhetsrapporteringen kan nog göra kopplingen till kuvert ganska snabbt, då Beatrice Ask härom veckan gick ut och föreslog att gredelina kuvert borde skickas [...]]]></description>
			<content:encoded><![CDATA[<p>Så här under småtimmarna kom <a href="http://www.gredelin.nu">Gredelin.nu</a> att bli ett nytt tillskott i samlingen av nischade småbutiker. Sedan tidigare har vi <a href="http://www.kyanibutiken.se">Kyänibutiken</a> och <a href="http://www.sportprylar.se">Sportprylar</a> och nu alltså <strong>Gredelin.nu</strong>. Den som hängt med i nyhetsrapporteringen kan nog göra kopplingen till <em>kuvert </em>ganska snabbt, då Beatrice Ask härom veckan gick ut och föreslog att <a href="http://www.gredelin.nu/default.asp?produkt=1">gredelina kuvert</a> borde skickas ut till misstänkta sexköpare.</p>
<p>Knasigt så det förslår, vilket hon även insåg och gick ut och tog tillbaka sitt uttalande. Gredelina kuvert har dock kommit att bli en grej på var persons läppar - så varför inte erbjuda gredelina kuvert till försäljning för att piffa upp sina försändelser och göra någon bekant glad?</p>
<p><img title="Gredelint kuvert" src="http://www.gredelin.nu/kuvert.png" alt="Gredelint kuvert" /></p>
<p>När fick du ett färgglatt kuvert senast? Beställ på <a href="http://www.gredelin.nu">Gredelin.nu</a>!</p>
<p>Mer på området: <a href="http://www.dan.se/ny-kurs-i-bevisborda-och-rattssakerhet.html">Dan</a> | <a href="http://www.aftonbladet.se/nyheter/article6832578.ab">Aftonbladet</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/gredelinnu-fargglada-kuvert/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nya vinyl- &#038; LP-skivor i Göteborg</title>
		<link>http://www.iamkay.com/nya-vinyl-lp-skivor-i-goteborg/</link>
		<comments>http://www.iamkay.com/nya-vinyl-lp-skivor-i-goteborg/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 08:42:45 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Musik]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=193</guid>
		<description><![CDATA[Har lite sporadiskt börjat samla på LP-/vinylskivor och då främst limiterade, signerade eller på annat vis utstickande utgåvor. Inledningsvis har jag enbart kikat på svenska nysläpp, men när man lär sig vad som är eftertraktat kommer man säkert att vidga vyerna. Tänkte nu utan förbehåll bjuda på lite länkkärlek, bl.a. till två ytterst trevliga butiker [...]]]></description>
			<content:encoded><![CDATA[<p>Har lite sporadiskt börjat samla på LP-/vinylskivor och då främst limiterade, signerade eller på annat vis utstickande utgåvor. Inledningsvis har jag enbart kikat på svenska nysläpp, men när man lär sig vad som är eftertraktat kommer man säkert att vidga vyerna. Tänkte nu utan förbehåll bjuda på lite länkkärlek, bl.a. till två ytterst trevliga butiker i <a href="http://www.stadsliv.se/goteborg">Göteborg</a>.</p>
<p><a href="http://www.bengans.se/News.aspx?typ=vinyl">Bengans</a> - Stigbergstorget, Göteborg. Ofta artistbesök i butiken, vilket gör att utbudet av signerade alster ofta är vidsträckt.</p>
<p><a href="http://www.rockhouse.se">Rockhouse</a> - Kungsgatan, Göteborg med lagerstatus i realtid, vilket gör att man lätt kan kila dit för impulshandel. Dessutom trevlig, serviceinriktad personal.</p>
<p><a href="http://www.hotstuff.se">Hot Stuff</a> - Mycket angenäm nätbutik med ett gigantiskt utbud av både svenska och utländska släpp.</p>
<p><a href="http://www.doloresrecordings.com">Dolores Recordings</a> - Göteborgsbaserat skivbolag som även inhyser en singelklubb där vinylskivor skickas hem i brevlådan några gånger per år. Är medlem, men har inte fått min första försändelse ännu.</p>
<p><a href="http://www.drella.com">Drella.com</a> - Merchandise i form av t-shirts och skivor. Har haft en del limiterade släpp i sin webbshop, så att hålla ett öga där lönar sig garanterat.</p>
<p>Förmodligen har man till en början mer att hämta på begagnatmarknaden, men det kräver förstås bra mycket mer research för att skilja dussinskivorna från godbitarna - och där är jag som sagt inte riktigt ännu.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/nya-vinyl-lp-skivor-i-goteborg/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Kyänibutiken - fyra månader senare</title>
		<link>http://www.iamkay.com/kyanibutiken-fyra-manader-senare/</link>
		<comments>http://www.iamkay.com/kyanibutiken-fyra-manader-senare/#comments</comments>
		<pubDate>Sat, 06 Feb 2010 10:55:52 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Kyänibutiken]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=172</guid>
		<description><![CDATA[Efter att ha varit e-handlare i fyra månader är det dags för en liten uppföljning. Den kommer inte bjuda på något extravagant, men kan kanske ändå verka som en liten inspirationskälla för den som har en idé, men ännu inte av någon anledning tagit steget.
Bakgrund
I oktober 2009 startade jag Kyänibutiken, som ni kan läsa mer [...]]]></description>
			<content:encoded><![CDATA[<p><em>Efter att ha varit e-handlare i fyra månader är det dags för en liten uppföljning. Den kommer inte bjuda på något extravagant, men kan kanske ändå verka som en liten inspirationskälla för den som har en idé, men ännu inte av någon anledning tagit steget.</em></p>
<p><strong>Bakgrund</strong></p>
<p>I oktober 2009 startade jag <a href="http://www.kyanibutiken.se">Kyänibutiken</a>, som ni kan läsa mer om i <a href="http://www.iamkay.com/halsoprodukter-fran-kyani-pa-kyanibutiken-se/">denna bloggpost</a>. Produkterna, bland annat <a href="http://kyanibutiken.se/default.asp?produkt=1">vitaminshots</a> och <a href="http://kyanibutiken.se/default.asp?produkt=2">Omega 3-kapslar</a> distribueras till vardags av det amerikanska företaget Kyäni Inc, som är ett MLM-företag.</p>
<p><strong>Mål och förväntningar</strong></p>
<p>När butiken sattes upp gick tankarna i de banor de egentligen alltid borde gå i - vad finns det <em>egentligen </em>att förlora på att ha en webbutik igång? Börjar man i liten skala, kanske rent av med att beställa hem varor först när en beställning läggs, behöver man inte stå med skägget i brevlådan ifall det inte inkommer några beställningar. Jag valde dock att inledningsvis ta hem en mindre uppsättning av två av tre tillgängliga produkter. Den tredje produkten lades ändå upp i butiken ihop med en knapp där besökaren kunde lämna en anonym intresseanmälan om att ta in produkten i sortimentet. Resultatet visade att ett 10-tal personer önskade att produkten blev tillgänglig, så sedan den 12 januari finns även denna produkt i butiken.</p>
<p>Målet med butiken har aldrig varit volymförsäljning, utan har istället varit ett experiment för att få erfarenhet av de praktiska moment som en webbshop för med sig; fakturera, paketera, sköta kundservice, beställa varor och framförallt att få ett ljuvklingande samspel på maskineriet.</p>
<p><strong>Kostnader</strong></p>
<p>De kostnader som funnits i samband med butiken är - förutom då förstås produktkostnader - <strong>emballage- </strong>&amp; <strong>portokostnader</strong>, där portot i form av frimärken i vanlig ordning äter upp marginalerna då kollisändningarna går som skrymmande brev. Andra inköp som gjorts är brytkniv och en brevvåg, ett tämligen onödigt inköp så här i efterhand, eftersom de flesta paket tenderar att väga lika mycket, men är absolut vettigt att ha för framtida satsningar. Emballaget har i övrigt bestått i 18 rullar packtejp och 75 meter wellpapp, så även på detta plan är man rustad för framtida projekt.</p>
<p>Vidare anlitar jag <a href="http://www.upplysning.se">upplysning.se</a> för att kolla antal betalningsanmärkningar innan jag skickar till ny fakturakund. De tar 10 kr inkl. moms per upplysning, något som kan spara dig mycket möda ifall illvilliga personer är framme. Hittills har det för egen maskin inte varit några alarmerande resultat vid slagning, men det räcker att en betalningsovillig kund dyker upp för att det ska rasera mycket. <em>Better safe than sorry</em>, på detta plan.</p>
<p><strong>Marknadsföring</strong></p>
<p>Jag har under projektets inledande fas inte marknadsfört butiken på annat sätt än att länka den från mina andra projekt samt lagt en liten informativ notis på Facebook till vänner och bekanta. Butiken rankar bra på vitala produkttermer på Google, så det har rullat in besökare den vägen.</p>
<p><strong>Förändringar under tiden</strong></p>
<p>Paketens estetiska utformning har genomgått en smärre makeover, från att i början inte varit allt för sexiga enligt nedanstående bild, till att faktiskt bli rätt snygga (hittar dock inte bild på de nya nu) <img src='http://www.iamkay.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><img class="alignnone size-full wp-image-177" title="paket v1.0" src="http://www.iamkay.com/wp-content/uploads/2010/02/sexy.jpg" border="0" alt="" width="500" height="428" /></p>
<p>I takt med att varulagret tog slut i butiken uppstod viss förvirring hos kund när lagersaldo visade noll. Det behövdes därför förtydligas att produkten inte fanns för omedelbar leverans. Ihop med detta skapades en informationsruta som berättade när nästa leverans av varor beräknades inkomma samt hur många produkter leveransen bestod av.</p>
<p>Eftersom frakten åt upp marginalerna på produkterna implementerades i början av januari en funktion i butiken som gjorde det möjligt att välja fraktbolag. Anledningen var att Schenker var ca: 19 kr billigare på samma typ av paket och jag valde då att erbjuda gratis frakt ihop med Schenker, istället för som innan med Posten. Posten medför nu en extrakostnad om 19 kr för kund. Den korta tid som valmöjligheten har funnits har de flesta valt att få sitt paket skickat via Schenker. Nu har jag dock inte tagit steget fullt ut och kollat upp den administrativa biten gällande att skicka paket med Schenker, så tillsvidare har alla paket fortsatt att skickas via Posten, oavsett kundens val. Vad som önskas av Schenker är någon form av prepayfunktion eller fakturering i efterhand, så man slipper en verifikation för varje paket som skickas. Har dock inte fått svar på min förfrågan från Schenker.</p>
<p><strong>Arbetsbelastning</strong></p>
<p>Även om mycket av emballagearbetet går att förbereda genom att skarva och tejpa kartonglådor och wellpapp, tar faktureringsprocessen mest tid i anspråk. Detta har jag dock mig själv att skylla, då jag ännu inte skaffat mig ett övergripande administrationssystem för butiken. Istället får man lägga ihop information som inhämtats via e-post, direkt från databasen och även lägga in viss information manuellt. Med denna information skapas sedan en faktura manuellt - pinsamt jättemanuellt - med löpande fakturanummer manuellt, manuellt uträknat slutpris och ett manuellt satt förfallodatum. Det är som bäddat för trubbel i ett senare skede om orderingången ökar eller att butikens produktutbud breddas. I dagsläget när kombinationerna av beställda produkter är väldigt begränsade fungerar det bra att kopiera den senaste fakturan och ändra namn och ordernummer.</p>
<p>Ett paket tar totalt ungefär 10-12 minuter att administrera, ej inräknat tiden det tar att gå till postkontoret för inlämning.</p>
<p><strong>Statistik</strong></p>
<p>Dags för det väsentliga. Hur har det egentligen gått - i siffror?</p>
<p><em>Perioden 8 oktober 2009 - 5 februari 2010</em></p>
<p>Besökare: <strong>2180 st</strong><br />
Sidvisningar: <strong>15 183 st</strong><br />
Beställningar : <strong>25 st</strong> (okt: 2 | nov: 6 | dec: 8 | jan: 6 | feb: 3 hittills)<br />
Totalt ordervärde: <strong>16 659 kr<br />
</strong></p>
<p><a href="http://www.iamkay.com/wp-content/uploads/2010/02/kyanibutiken-statistik.jpg"><img class="alignnone size-thumbnail wp-image-180" title="kyanibutiken-statistik" src="http://www.iamkay.com/wp-content/uploads/2010/02/kyanibutiken-statistik-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p>Val av betalningslösning: Faktura: 23 st, förskottsbetalning: 2 st<br />
Skickade betalningspåminnelser: 2 st (dock betalda därefter)<br />
Kunder, män / kvinnor: 9 st / 16 st<br />
Återkommande kunder (två eller fler beställningar): 3 st</p>
<p><strong>Personliga reflektioner</strong></p>
<p>Främst har denna period om fyra månader varit väldigt lärorik vad gäller de praktiska saker som går hand i hand med att bedriva e-handel. Eftersom det är min första riktiga försäljningssatsning ut mot kund har viljan varit att alltid uppvisa största möjliga serviceanda och verkligen få paketen ivägskickade i samma stund som beställningarna kommit in. Det har ibland medfört att man varit tvungen att gå till inlämningen två gånger samma dag och på grund av att denna ligger i den lokala mataffären har detta ibland medfört att att eventuell avans på paketen ätits upp av något krimskrams i affären man egentligen inte behövt <img src='http://www.iamkay.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Att Kyäni Inc. är ett MLM-företag har egentligen inte påverkat så mycket. Det är klart att jag ibland blandas ihop med det amerikanska företaget och får supportfrågor rörande deras distributörsstruktur, men det är inte mer än att man får hänvisa dem till rätt instans. Jag personligen har ingen medverkan i själva MLM-konceptet, utan köper enbart in varor och säljer dem till kund på vanligt vis.</p>
<p><strong>Nästa steg i utvecklingen</strong></p>
<p>Tänkte avsluta med att punkta upp det som ligger mig närmast om hjärtat att justera eller utveckla i framtiden.</p>
<ul>
<li><strong>Kapa fraktkostnader</strong>, dels genom byte av logistikpartner till ex. Schenker, men även genom</li>
<li>Skapa ett administrationssystem eller på annat sätt automatisera <em>beställning till färdigt paket</em>-förfarandet.</li>
<li>Återanvända lärdom till att starta fler minibutiker med smalt, nischat utbud&#8230;</li>
</ul>
<p>Som synes handlar det i mångt och mycket om att bli effektivare, något som närmast kan te sig självklart för någon som vill växa i sina projekt och utvecklas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/kyanibutiken-fyra-manader-senare/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hälsoprodukter från Kyäni på Kyänibutiken.se</title>
		<link>http://www.iamkay.com/halsoprodukter-fran-kyani-pa-kyanibutiken-se/</link>
		<comments>http://www.iamkay.com/halsoprodukter-fran-kyani-pa-kyanibutiken-se/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 10:19:06 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Kyänibutiken]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=170</guid>
		<description><![CDATA[
Min första e-handelssatsning har i dagarna gått live. Det bygger på en vidarutveckling av det webbshopsskript som tagits fram i bloggföljetången Hur gör man en webbshop i ASP och är således en barskrapad men funktionell lösning för ändamålet.
Produkterna i butiken är hälsoprodukter från Kyäni, så som Kyäni Sunrise, Kyäni Sunset och Kyäni Body FX. Dessa [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Kyäni Sunrise" src="http://www.kyanibutiken.se/kyani-sunrise.jpg" alt="Kyäni Sunrise" /></p>
<p>Min första e-handelssatsning har i dagarna gått live. Det bygger på en vidarutveckling av det webbshopsskript som tagits fram i bloggföljetången <a href="http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1/">Hur gör man en webbshop i ASP</a> och är således en barskrapad men funktionell lösning för ändamålet.</p>
<p>Produkterna i butiken är hälsoprodukter från <a href="http://www.kyanibutiken.se">Kyäni</a>, så som <a href="http://www.kyanibutiken.se/default.asp?produkt=1">Kyäni Sunrise</a>, <a href="http://www.kyanibutiken.se/default.asp?produkt=2">Kyäni Sunset</a> och <a href="http://www.kyanibutiken.se/default.asp?produkt=3">Kyäni Body FX</a>. Dessa produkter utgör hela kroppens dagliga vitaminsbehov och verkar för ett piggare liv med ork och lust. Resultatet säger sig ge sig tillkänna redan inom två veckor.</p>
<p>Efter att i många år aktivt tagit del av diskussioner på ämnet e-handel föreligger det självklart att utrusta <a href="http://www.kyanibutiken.se">Kyänibutiken</a> med generösa köpvillkor, så som snabba, fraktfria leveranser och öppet köp.</p>
<p>En webbshopsinvigning utan ett öppningserbjudande är det förstås inte tal om. För de som är nyfikna på Kyäni Sunrise (enligt bild ovan) kan ni genom att skicka er hem-/leveransadress via <a href="http://www.kyanibutiken.se/default.asp?sida=kontakt">kontaktformuläret</a> lägga beslag på en uppsättning av <strong>två portionspåsar</strong> av produkten. Det är givetvis <strong>helt gratis</strong> och innehåller inga finstilta klausuler. Erbjudandet gäller de första 15 personerna, så ingen tid att spilla!</p>
<p><strong><a href="http://www.kyanibutiken.se">Gå till Kyänibutiken</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/halsoprodukter-fran-kyani-pa-kyanibutiken-se/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hur man gör en webbshop i ASP (del 3)</title>
		<link>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-3/</link>
		<comments>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-3/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 14:35:32 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Guide]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=133</guid>
		<description><![CDATA[Detta är tredje delen i artikelserien om hur man bygger en webbshop i ASP från grunden. Har du missat de tidigare delarna finns de här: Hur man gör en webbshop i ASP (del 1) och Hur man gör en webbshop i ASP (del 2). Vår webbshop hämtar nu kategorierna från databasen och länkar dem enligt [...]]]></description>
			<content:encoded><![CDATA[<p><em>Detta är tredje delen i artikelserien om hur man bygger en webbshop i ASP från grunden. Har du missat de tidigare delarna finns de här: <a href="http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1">Hur man gör en webbshop i ASP (del 1)</a> och <a href="http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-2">Hur man gör en webbshop i ASP (del 2)</a>. Vår webbshop hämtar nu kategorierna från databasen och länkar dem enligt <tt>default.asp?kategori=[ID]</tt>. Vi vill självklart visa produkterna under kategorisidorna och det är vad denna del kommer avhandla.</em></p>
<p>&#8212;</p>
<p>Vi har nu unika länkar som alla skiljer sig åt på en punkt - ID-numret i länken. Logiskt sätt måste vi använda oss av denna siffra för att kunna ta fram produkter som i databasen har samma siffra i fältet &#8220;intKategoriID&#8221; eftersom de tillhör den aktuella kategorin. Siffran i länken kan man skriva ut på sidan genom:</p>
<blockquote><p><tt>&lt;% Response.Write Server.HTMLEncode(Request.QueryString(&#8221;kategori&#8221;)) %&gt;</tt></p></blockquote>
<p>Oj, tänker ni kanske. Det var omständigt. Måste allt det där finnas med? Svaret är både ja och nej. Till en början använder vi oss av <tt>Response.Write</tt>, funktionen för att skriva ut något med hjälp av ASP-kod. <tt>Request.QueryString(&#8221;kategori&#8221;)</tt> innehåller värdet av &#8220;kategori=[ID]&#8221; i länken, dvs 1 eller 2 etc. Ett sista steg är att kapsla in QueryString-värdet med funktionen <tt>Server.HTMLEncode()</tt> som som sagt gör att eventuell  HTML-kod skrivs ut i klartext. Det är nödvändigt eftersom det annars är lätt för elakartade besökare att knappra in exempelvis denna länk: <tt>default.asp?kategori=&lt;script src=&#8221;elakt-script.js&#8221;&gt;</tt> som vid utskrift då skriver ut och kör javascriptet &#8220;elakt-script.js&#8221;, och det är aldrig att rekommendera. Det kan ge fel personer kontroll över er webbshop.</p>
<p>Vi vill dock inte skriva ut värdet just nu. Vi vill <strong>bara använda oss av det</strong><strong> </strong>i vår SQL-sträng för att sålla ut så enbart rader där <tt>intKategoriID = Request.QueryString(&#8221;kategori&#8221;)</tt> finns med. Vi förflyttar oss således till <tt>main</tt>-sektionen i <strong>default.asp</strong> och skriver följande:</p>
<blockquote><p><tt>&lt;% Set Conn = Server.CreateObject(&#8221;ADODB.Connection&#8221;)<br />
Conn.Open &#8220;Driver={MySQL ODBC 3.51 Driver};Server=&#8221; &amp; strMySQLServer &amp; &#8220;;port=&#8221; &amp; strMySQLPort &amp; &#8220;;Database=&#8221; &amp; strMySQLDatabase &amp; &#8220;;User=&#8221; &amp; strMySQLUsername &amp; &#8220;;Password=&#8221; &amp; strMySQLPassword &amp; &#8220;;&#8221;</tt></p></blockquote>
<p>Vår SQL-sträng måste vi skriva om enligt innan nämnda frågeutformning - vi vill ta fram alla rader från tabellen <strong>produkter </strong>där <em>intKategoriID </em>är samma som <em>Request.QueryString(&#8221;kategori&#8221;)</em></p>
<blockquote><p><tt>SQL = &#8220;SELECT ID, intKategoriID, strProdukt, strProduktBeskrivning, intPris FROM produkter WHERE intKategoriID = &#8221; &amp; strip(Request.QueryString(&#8221;kategori&#8221;)) &amp; &#8221; ORDER BY strProdukt&#8221;</tt></p></blockquote>
<p>Vad är då funktionen strip() för något? När man använder sig av variabler i sina SQL-strängar är det väldigt viktigt att man först säkerställer att inte vad som helst skickas med. I detta fallet vill vi enbart ha en siffra, men om man är elakartad besökare kan man genom att manipulera Request.QueryString(&#8221;kategori&#8221;) i värsta fall rasera hela databasen. strip() är en egenutvecklad funktion som helt sonika förmildrar riskerna med att drabbas av ondsinta inputs i SQL-strängen. Detta genom att ersätta alla enkelfnuttar &#8216; med &#8221; (två enkelfnuttar). Kopiera funktionen nedanför och klistra in näst längst upp i <strong>default.asp</strong>, under inkluderingen av settings.asp:</p>
<blockquote><p><tt>&lt;% Function strip(input)<br />
retVal = replace(input, &#8220;&#8216;&#8221;, &#8220;&#8221;&#8221;)<br />
strip = retVal<br />
End Function %&gt;</tt></p></blockquote>
<p>Åter till databaskopplingen. Vi fortsätter med att exekvera vår SQL-sträng.</p>
<blockquote><p><tt>Set RS = Conn.Execute(SQL)</tt></p></blockquote>
<p>Sen följer samma tillvägagångssätt som för kategorierna. Vi kollar ifall det hittas några produkter. Ifall så inte är fallet skrivs det ut att &#8220;Inga produkter hittas&#8221;. I annat fall skrivs produkterna ut, nu sorterade efter produktnamn (strProdukt, se SQL-strängen ovan)</p>
<blockquote><p><tt>If RS.EOF Then<br />
Response.Write &#8220;Inga produkter hittades&#8221;<br />
Else<br />
</tt><tt>Do Until RS.EOF %&gt;</tt><tt><br />
&lt;a href=&#8221;default.asp?produkt=&lt;%=Server.HTMLEncode(RS(&#8221;ID&#8221;))%&gt;&#8221;&gt;&lt;%=Server.HTMLEncode(RS(&#8221;strProdukt&#8221;))%&gt;&lt;/a&gt;, &lt;%=Server.HTMLEncode(RS(&#8221;intPris&#8221;))%&gt; kr&lt;br&gt;<br />
&lt;% RS.MoveNext<br />
Loop<br />
End if<br />
Set RS = Nothing<br />
Set Conn = Nothing %&gt;</tt></p></blockquote>
<p>Varje produkt länkas nu till default.asp?produkt=[ID] och då vill vi självklart visa produktinformationen när man klickar på länken. Detta har gjort att vi vill visa olika information på samma yta (main-sektionen) och vi behöver således kolla med en IF-sats vilken sida det är som visar för stunden. Detta görs genom att lägga in en enklare IF-sats i main-sektionen.</p>
<blockquote><p><tt>&lt;% If Request.QueryString(&#8221;kategori&#8221;) &lt;&gt; &#8220;&#8221; Then<br />
<em>kod för visning av kategori<br />
</em><br />
ElseIf Request.QueryString(&#8221;produkt&#8221;) &lt;&gt; &#8220;&#8221; Then<br />
<em>kod för visning av produkt<br />
</em><br />
Else<br />
<em>kod som visas när ingen kategori eller produkt är vald</em></tt></p>
<p><tt>End if %&gt;</tt></p></blockquote>
<p>Vi går igenom hur det funkar. Först kollas ifall Request.QueryString(&#8221;kategori&#8221;) har ett värde som är annat än &#8220;&#8221; (tom). Ifall det finns ett värde på kategori i länken (dvs. om vi har klickat på en kategorilänk) så skall koden nedanför skrivas ut. Det samma gäller för nästa steg, men här kollas ifall Request.QueryString(&#8221;produkt&#8221;) har ett värde som är annat än &#8220;&#8221; (tom). Slutligen, ifall båda dessa värden var tomma visas det som finns under Else, som är sista anhalten om inget annat villkor uppfyllts. Vad vi alltså gjort är att vi delat upp ett litet segment på sidan till att visa olika information beroende på vilken variabel i länken som har ett värde. Detta gör att det dynamiskt skapas nya sidor efter hur länkadressen ser ut, istället för att man manuellt ska sitta och skapa produkt1.html, produkt2.html och så vidare.</p>
<p>Denna IF-sats skall ligga precis under &lt;div id=&#8221;main&#8221;&gt; och bör sluta precis innan &lt;/div&gt; för samma maindiv-tagg. Klistra sedan in den kod som vi skrivit hittills under rätt villkor för att rätt information skall visas på rätt ställe. Den kodsnutt med databashämtning för produkter under kategorisidan skall alltså ersätta &#8220;kod för visning av kategori&#8221;. Var noga med att &lt;% och %&gt; är rätt till antalet. &lt;% signalerar början på ASP-kod och %&gt; påvisar att ett block med ASP-kod avslutas. Man kan inte ha två öppna &lt;%, utan måste alltid avsluta de öppna taggarna med %&gt;. Låter det knepigt? Ladda hem filerna, så klarnar det säkert!</p>
<p>Vi går nu vidare och skapar produktinformationssidan som man kommer till när man har klickat på en produktlänk, ex. default.asp?produkt=1. Det är precis samma sätt som innan. Skapa en databaskoppling, fundera över vilken relation vi har mellan den siffra vi får med oss i länken och vad som finns angivet i databasen, skriv SQL-strängen, exekvera, kolla antal resultat och skriv ut resultat beroende på antal och stäng slutligen databasanslutningen. Så här:</p>
<blockquote><p><tt>&lt;% Set Conn = Server.CreateObject(&#8221;ADODB.Connection&#8221;)<br />
Conn.Open &#8220;Driver={MySQL ODBC 3.51 Driver};Server=&#8221; &amp; strMySQLServer &amp; &#8220;;port=&#8221; &amp; strMySQLPort &amp; &#8220;;Database=&#8221; &amp; strMySQLDatabase &amp; &#8220;;User=&#8221; &amp; strMySQLUsername &amp; &#8220;;Password=&#8221; &amp; strMySQLPassword &amp; &#8220;;&#8221;<br />
</tt><tt><br />
SQL = &#8220;SELECT ID, intKategoriID, strProdukt, strProduktBeskrivning, intPris FROM butik_produkter WHERE ID = &#8221; &amp; strip(Request.QueryString(&#8221;produkt&#8221;))</tt></p></blockquote>
<p>Vi väljer att ta fram den information som finns i databasen om produkten som har det ID-nummer som återfinns i länken (default.asp?produkt=1). Eftersom ID var av typen <tt>auto_increment</tt>, <em>automatiskt ökande värde</em> för varje rad som läggs in, riskerar vi inte att få fler svar än en (1) rad från databasen. Eller noll (0) - ifall vi exempelvis manuellt skrivit in ID 1452 i länken och produkten inte existerar. Vi kommer således nu undan med mindre kod, eftersom det inte finns någon anledning att vilja loopa ut något. Antingen är det en rad eller så är det ingen, så att begära att gå till nästa rad och skriva ut denna är en situation som inte uppstår. Vi fortsätter hur som helst med att exekvera SQL-strängen och sen bör resten vara rätt självförklarande.</p>
<blockquote><p><tt>Set RS = Conn.Execute(SQL)<br />
If RS.EOF Then<br />
Response.Write &#8220;Produkten hittades inte&#8221;<br />
Else %&gt;<br />
&lt;h1&gt;&lt;%=Server.HTMLEncode(RS(&#8221;strProdukt&#8221;))%&gt;&lt;/h1&gt;<br />
&lt;p&gt;&lt;%=Server.HTMLEncode(RS(&#8221;strProduktBeskrivning&#8221;))%&gt;&lt;/p&gt;<br />
&lt;h2&gt;&lt;%=Server.HTMLEncode(RS(&#8221;intPris&#8221;))%&gt; kr&lt;/h2&gt;<br />
&lt;a href=&#8221;default.asp?kop=&lt;%=Server.HTMLEncode(RS(&#8221;ID&#8221;))%&gt;&#8221;&gt;Lägg i varukorgen&lt;/a&gt;<br />
&lt;% End if<br />
Set RS = Nothing<br />
Set Conn = Nothing %&gt;</tt></p></blockquote>
<p>Vi har nu skrivit ut produktnamn med &lt;h1&gt;-tagg, produktbeskrivning som textstycke, pris som &lt;h2&gt;-tagg och slutligen lagt in en länk som i framtiden är ämnad att lägga till varan i varukorgen. Och det är just precis vad som avhandlas i nästa steg av denna guide, så <a href="http://www.iamkay.com/webshop/webshop-del3.rar">ladda hem filerna</a> (1 kb) och dubbelkolla innan du skyndar dig vidare till nästa del.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-3/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hur man gör en webbshop i ASP (del 2)</title>
		<link>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-2/</link>
		<comments>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-2/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 20:33:43 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Guide]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=124</guid>
		<description><![CDATA[Detta är en artikelserie om hur man själv skapar en webbshop i ASP från grunden. I förra delen av denna artikelserie gick vi igenom vad som krävs av webbhotellet, hur man sätter upp databas- och tabellstrukturen för webbshopen och vi avslutade med att lägga till två kategorier; Kategori 1 och Kategori 2 ihop med två [...]]]></description>
			<content:encoded><![CDATA[<p><em>Detta är en artikelserie om hur man själv skapar en webbshop i ASP från grunden. I förra delen av denna artikelserie gick vi igenom vad som krävs av webbhotellet, hur man sätter upp databas- och tabellstrukturen för webbshopen och vi avslutade med att lägga till två kategorier; Kategori 1 och Kategori 2 ihop med två produkter; Produkt 1 och Produkt 2 som båda placerades i Kategori 1 (ID: 1).</em></p>
<p>Missade ni första delen finns den att tillgå här: <a href="http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1">Hur man gör en webbshop i ASP (del 1)</a></p>
<p>&#8212;</p>
<p>Nästa steg är att lägga upp en enklare designstruktur för sidan.</p>
<p><img src="http://www.iamkay.com/bilder/layout.png" alt="" /></p>
<blockquote><p><tt><br />
&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;&lt;/title&gt;<br />
&lt;style type=&#8221;text/css&#8221;&gt;</tt></p>
<p><tt>#logotype {<br />
float: left;<br />
height: 100px;<br />
width: 760px;<br />
}</tt></p>
<p><tt>#menu {<br />
float: left;<br />
width: 150px;<br />
}</tt></p>
<p><tt>#main {<br />
float: left;<br />
width: 610px;<br />
}</tt></p>
<p><tt>.long {<br />
</tt><tt>float: left;<br />
width: 760px;<br />
}</tt></p>
<p><tt>.wrap {<br />
clear: both;<br />
float: left;<br />
}</tt></p>
<p><tt>&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div class=&#8221;wrap long&#8221;&gt;<br />
&lt;div id=&#8221;logotype&#8221;&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;menu&#8221;&gt;&lt;/div&gt;<br />
&lt;div id=&#8221;main&#8221;&gt;&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</tt></p></blockquote>
<p>Kopiera koden ovanför och spara som <strong>default.asp</strong>. Detta webbshopsskript kommer utgå ifrån denna fil och det mesta kommer ligga i den, så när som på inställningar för databaskopplingar och funktioner för att validera data etc</p>
<p><strong>Inställningar för databaskoppling</strong></p>
<p>Skriptet behöver veta adressen och portnummer till databasservern, vilket användarnamn och lösenord som har behörighet att ansluta till databasen samt namnet på databasen som innehåller våra tabeller. För att slippa ange denna kritiska information i varje databaskoppling väljer vi att skapa en inställningsfil med variabler för denna information. Skapa en ny fil med följande innehåll och fyll i informationen mellan citationstecknen. Denna information fås av webbhotellet.</p>
<blockquote><p><tt>&lt;% strMySQLServer = &#8220;&#8221;<br />
strMySQLPort = &#8220;&#8221;<br />
strMySQLDatabase = &#8220;webXXXXX_webshop&#8221;<br />
strMySQLUsername = &#8220;webXXXXX&#8221;<br />
strMySQLPassword = &#8220;**********&#8221; %&gt;</tt></p></blockquote>
<p>Spara den nya filen som <strong>settings.asp</strong> och lägg till följande rad överst i <strong>default.asp</strong> för att inkludera filen med inställningarna:</p>
<blockquote><p><tt>&lt;!&#8211;#Include File=&#8221;settings.asp&#8221;&#8211;&gt;</tt></p></blockquote>
<p><strong>Lista kategorier från databasen</strong></p>
<p>För att ta fram kategorierna som vi lagt till i databasen behöver vi göra en databaskoppling. Detta är i regel ingen kod man behöver lägga på minnet, utan man kan kopiera och klistra in från tidigare användningsområden. Det vitala i databaskopplingen är den så kallade SQL-strängen, som anger vilken tabell och vilka fält som skall hämtas. Vi vet att vi vill ansluta till databasen webXXXXX_webshop med användarnamn webXXXXX och lösenord *********, men vi måste även tala om vilken tabell vi vill ansluta till - i detta fall &#8220;<strong>kategorier</strong>&#8221; som vi döpte tabellen till. Fälten vi vill hämta ut till en början är ID (det unika ID-numret för varje kategori) och strKategori (namnet på kategorin). Vi lämnar Parent ID (PID) orörd för stunden, men återkommer till det framöver, då det är en onödigt krånglig funktion så här tidigt i detta stadie.</p>
<p>Låt oss börja med inledande databaskopplingen:</p>
<blockquote><p><tt>&lt;% Set Conn = Server.CreateObject(&#8221;ADODB.Connection&#8221;)<br />
Conn.Open &#8220;Driver={MySQL ODBC 3.51 Driver};Server=&#8221; &amp; strMySQLServer &amp; &#8220;;port=&#8221; &amp; strMySQLPort &amp; &#8220;;Database=&#8221; &amp; strMySQLDatabase &amp; &#8220;;User=&#8221; &amp; strMySQLUsername &amp; &#8220;;Password=&#8221; &amp; strMySQLPassword &amp; &#8220;;&#8221;</tt></p></blockquote>
<p>Det ser krångligt ut och som sagt är det inget som man behöver lägga på minnet. Som synes använder vi de variabler som vi har angett i <strong>settings.asp</strong> för att slippa skriva informationen i klartext ifall vi av någon anledning råkar skriva fel i skriptet och ASP-koden inklusive lösenord till databasen skrivs ut i klartext. Detta är initierandet av databaskopplingen. Nu kommer vi till SQL-strängen, som ska se ut enligt följande för att lista kategorierna:</p>
<blockquote><p><tt>SQL = &#8220;SELECT ID, strKategori FROM kategorier ORDER BY strKategori&#8221;</tt></p></blockquote>
<p>Här lägger vi SQL-strängen som en variabel. Det är egentligen inte nödvändigt, men det kan vara överskådligare ifall det rör sig om mycket kod runt omkring, då man direkt ser var och vad man kan ändra. Vad gör då denna SQL-sträng? Jo, vi säger åt databasen att ta fram ID och strKategori från tabellen &#8220;kategorier&#8221; och avslutar med att bestämma vilken ordning vi vill att de skrivs ut i. Anger man inte ordning kommer den sortera efter ID, dvs. den ordning som man lagt in kategorierna i databasen. Vi väljer dock att sortera efter strKategori, vilket gör att när vi nedanför skriver ut de rader vi tagit fram kommer de komma i bokstavsordning.</p>
<p>Nästa steg är att köra SQL-frågan. Innan hade vi enbart deklarerat den. Detta görs genom nedanstående rad, där vi helt sonika ber om att få exekvera SQL-strängen (variabeln SQL nedan) med det databaskopplingsobjekt (Conn) som vi innan skapat:</p>
<blockquote><p><tt>Set RS = Conn.Execute(SQL)</tt></p></blockquote>
<p>Anropet är klart. Det är dags att kolla ifall den hittat några rader med fält i tabellen som matchar vår förfrågan. Det finns två möjliga resultat - antingen hittades rader eller så hittades det inga. Vi vill beroende på resultat visa olika saker, ex. &#8220;Inga kategorier hittades&#8221; eller som i vårt fall, eftersom vi vet med oss att vi lagt in kategorier, skriva ut dem. Med en enkel koll kan vi styra vad som händer för varje tänkbart resultat:</p>
<blockquote><p><tt>If RS.EOF Then<br />
Response.Write &#8220;Inga kategorier hittades&#8221;<br />
Else<br />
Do Until RS.EOF %&gt;<br />
&lt;a href=&#8221;default.asp?kategori=&lt;%=Server.HTMLEncode(RS(&#8221;ID&#8221;))%&gt;&#8221;&gt;&lt;%=Server.HTMLEncode(RS(&#8221;strKategori&#8221;))%&gt;&lt;/a&gt;&lt;br&gt;<br />
&lt;% RS.MoveNext<br />
Loop<br />
End if<br />
Set RS = Nothing<br />
Set Conn = Nothing %&gt;<br />
</tt></p></blockquote>
<p><strong>Rad 1</strong>: Om resultatet av databashämtningen är tomt (EOF - End of File) då (Then)<br />
<strong>Rad 2</strong>: Skriv ut &#8220;Inga kategorier hittades&#8221;. Detta görs med ASP-funktionen <tt>Response.Write</tt> för att skriva ut vanlig text.<br />
<strong>Rad 3</strong>: Annars (ifall resultatet av databashämtningen inte är tom, dvs att det finns rader som matchade vår SQL-slagning)<br />
<strong>Rad 4</strong>: &#8220;Gör nedanstående tills alla rader är utskrivna&#8221;<br />
<strong>Rad 5</strong>: Här skriver vi ut en länk till kategorin enligt följande mönster: default.asp?kategori=1 och där länktexten blir det som finns i fältet strKategori, dvs. &#8220;Kategori 1&#8243; då &#8220;Kategori 1&#8243; kommer före &#8220;Kategori 2&#8243; när man sorterar efter strKategori-fältet - som vi har gjort i detta exempel. Funktionen <tt>Server.HTMLEncode()</tt> gör att eventuell HTML-kod som finns i databasfältet inte exekveras, utan istället visas som klartext.<br />
<strong>Rad 6</strong>: <tt>RS.MoveNext</tt> säger till att vi nu är klara med denna tabellrad och vill ha nästa rad.<br />
<strong>Rad 7</strong>: <tt>Loop</tt> hoppar upp till senaste <tt>Do</tt>-rad, vilket gör att vi har en ny rad från databasen i pipelinen och att vi genom upphoppet med loopen är redo att behandla den på samma sätt som förra raden, dvs skriva ut en länk baserad på den nya informationen från rad 2<br />
<strong>Rad 8</strong>: <tt>End if</tt> avslutar kontrollen om vad som skall göras ifall det finns rader i databasen eller ifall hämtningen var tom. Denna rad nås först efter att alla rader är hämtade från databasen. Var hämtningen tom nås den direkt.<br />
<strong>Rad 9 &amp; 10</strong>: Vi stänger databaskopplingen</p>
<p>Kopiera in alla fyra kodblock ovanför på det ställe i <strong>default.asp</strong> där ni vill att kategorierna skall visas, till exempel mellan <tt>&lt;div id=&#8221;menu&#8221;&gt;</tt> och <tt>&lt;/div&gt;</tt> för att få dem i vänsterkant. Får ni det inte att fungera? <a href="http://www.iamkay.com/webshop/webshop-del2.rar">Ladda hem filerna</a> (856 bytes) och dubbelkolla så att ni har gjort rätt.</p>
<p>I nästa avsnitt visas hur man med hjälp av kategorilänkarna visar de produkter som är kopplade till de olika kategorierna.</p>
<p><em>Lägg gärna till <a href="http://www.iamkay.com/feed">feeden</a> för denna blogg i er RSS-läsare, så minimerar ni risken att missa kommande delar i artikelserien. Har ni frågor, funderingar eller tips på förbättringar är ni självklart välkomna att lämna kommentarer på inlägget.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Adwords gav efter lång väntan utdelning</title>
		<link>http://www.iamkay.com/adwords-gav-efter-lang-vantan-utdelning/</link>
		<comments>http://www.iamkay.com/adwords-gav-efter-lang-vantan-utdelning/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 16:50:27 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Adwords]]></category>

		<category><![CDATA[projekt]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=157</guid>
		<description><![CDATA[
Jag har nu tjänat mina första slantar med hjälp av Adwords. Genom att köpa sökord på Google för ett specifikt ämnesområde och vid klick skicka besökaren till min landningssida med säljande text och ett reklamerbjudande har jag nu dragit in mina första - *trumvirvel* - 23 kr. Ingen big business än, men jag är rätt [...]]]></description>
			<content:encoded><![CDATA[<p><img style="border: none;" title="Adwords gav utdelning" src="http://www.iamkay.com/bilder/woho.png" alt="Adwords gav utdelning" /></p>
<p>Jag har nu tjänat mina första slantar med hjälp av <strong>Adwords</strong>. Genom att <em>köpa sökord på Google</em> för ett specifikt ämnesområde och vid klick skicka besökaren till min landningssida med säljande text och ett <em>reklamerbjudande </em>har jag nu dragit in mina första - *trumvirvel* - <strong>23 kr</strong>. Ingen big business än, men jag är rätt säker på att kampanjen som sådan ligger på plus.</p>
<p>Det gör definitivt inte min andra kampanj, men det har varit stor klickbenägenhet både på Google-annonserna och på min landningssida, så problemet kanske ligger hos butiken ifråga. Efter att ha läst ett antal &#8220;666 Killer Strategies to Get the Big Bucks with Adwords&#8221; är det även kul att se hur annonser med en viss gnutta psykologi involverad är mer frekvent klickade. I slutändan vet jag inte ifall det är de som sedan klickat på annonsen på landningssidan, men går det att spåra vilken annons de kommer från tar jag tacksamt emot tips!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/adwords-gav-efter-lang-vantan-utdelning/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hur man gör en webbshop i ASP (del 1)</title>
		<link>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1/</link>
		<comments>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 16:14:13 +0000</pubDate>
		<dc:creator>Kay</dc:creator>
		
		<category><![CDATA[Guide]]></category>

		<guid isPermaLink="false">http://www.iamkay.com/?p=118</guid>
		<description><![CDATA[Inledning
I takt med att fler och fler vågar sig på handel på nätet - både att handla i butiker och viljan att starta egen webbshop - följer här en guide till hur man skapar sin egen webbshop från grunden. Den slutgiltiga produkten kommer bygga på ASP, MySQL, HTML och CSS och finns för nedladdning för [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Inledning</strong></p>
<p>I takt med att fler och fler vågar sig på handel på nätet - både att handla i butiker och viljan att starta egen webbshop - följer här en guide till hur man skapar sin egen webbshop från grunden. Den slutgiltiga produkten kommer bygga på ASP, MySQL, HTML och CSS och finns för nedladdning för varje steg i denna artikelserie.</p>
<p><strong>Välja ett webbhotell</strong></p>
<p>Detta skript kommer köras hos webbhotellet <a href="http://www.binero.se">Binero</a>. Privat- eller företagskonto på deras Windows-server fungerar lika bra, och det kan upp- eller nedgraderas när som helst.</p>
<p>När webbhotellet är beställt och ett domännamn är kopplat till kontot är ni redo att ansluta till FTP-servern för att ladda upp filerna. Eftersom det inte finns några filer att ladda upp ännu börjar vi istället med att sätta upp databasstrukturen.</p>
<p><strong>Sätta upp MySQL-databasen</strong></p>
<p>1. Skapa en databas vid namn &#8220;webshop&#8221;.</p>
<p>2. Gå till www.kontrollpanelen.se och logga in i det nedre formuläret med användarnamn webXXXXX och ert lösenord för anslutning till databasen. Dessa uppgifter finns i det e-postmeddelande som skickats ut av Binero till er när ni beställde webbhotellet. I phpMyAdmin, som är ett visuellt presentationsskal till de databaser som finns under ert konto, väljer ni nu till vänster under rubriken &#8220;webXXXXX&#8221; att klicka på &#8220;_webshop&#8221;.</p>
<p><strong>Tabellstruktur</strong></p>
<p>Vi kommer skapa en rad olika tabeller för skriptet, eftersom det är mycket information av varierande sort som ska sparas i databasen när skriptet är fullfjädrat. Man kan alltid gå tillbaks och fylla på med fler tabeller eller ta bort i efterhand. Man kan skapa hur många tabeller som helst och beror i stor grad på hur många funktioner man avser utveckla till skriptet. Vi börjar dock enkelt med två tabeller; <strong>kategorier </strong>och <strong>produkter</strong>.</p>
<p>I den högra delen av sidan scrollar ni nu till slutet &#8220;<strong>Skapa ny tabell i databas webXXXXX_databasnamn</strong>&#8220;. Skriv i tabellnamnet &#8220;kategorier&#8221; och välj att tabellen skall ha tre (3) fält.</p>
<p>På sidan som följer finns nu tre kolumner. Vi ska nu specificera vad de olika fälten ska heta och vilken typ av information som avses sparas i fältet.</p>
<p>I första kolumnen under &#8220;Fält&#8221; skriver ni namnet &#8220;ID&#8221;. Detta blir namnet på fältet. Varje kategori kommer således få ett <strong>eget unikt ID-nummer </strong>som enbart identifierar just precis en specifik kategori. Under &#8220;Typ&#8221; väljer ni i rullistan / drop down-boxen &#8220;<strong>INT</strong>&#8220;, vilket betyder <em>integer </em>och avser datatypen <strong>heltal</strong>. Slutligen måste valet &#8220;<strong>auto_increment</strong>&#8221; (automatisk ökning) göras under &#8220;Extra&#8221; och därefter kryssar ni i den radio button / runda knapp precis under &#8220;Extra&#8221; som avser &#8220;<strong>Primary</strong>&#8221; eller &#8220;Primär&#8221;. Detta har nu gjort att för varje ny kategori som läggs in i denna tabell, ökar ID-fältet upp sitt värde automatiskt, vilket gör att två kategorier aldrig kan få samma ID-nummer.</p>
<p>Vidare till nästa fält. Ge det namnet &#8220;intPID&#8221;. Vi kommer i denna guide använda oss av denna form av namngivning av tabellfälten för att lätt kunna avgöra vilken datatyp som lagras i fältet. I detta fall står &#8220;int&#8221; som innan för integer/heltal, men vad står då PID för? ID känner vi igen sedan innan, så vi kan gissa att det kan vara en återkoppling till föregående fält (&#8221;ID&#8221;). &#8220;P&#8221; i &#8220;PID&#8221; är tänkt att stå för &#8220;parent&#8221;, dvs. <em>förälder </em>eller <em>tidigare</em>. När man känner till vad en kategori har för <em>Parent ID</em> ges möjligheten att skapa en trädliknande menystruktur med underkategorier till huvudkategorierna. Vi minns att varje kategori automatiskt får ett ID-nummer och kan således i fältet PID ange detta nummer för att berätta att denna kategori är en underkategori till huvudkategorin med ID-numret <em>PID</em>. Det är mycket detta handlar om när man pratar om relationsdatabaser och vi har just naggat lite i kanten på detta vidsträckta område. Var dock lugn, vi kommer inte gå så mycket djupare på det. Vad är då anledningen till att första fältet döptes till ID och inte intID tänker ni då? Det är helt och hållet en smaksak. Prefixen på fältnamnen är till för att hjälpa dig och spelar inte in på funktionaliteten. I regel vet man att det löpnummer som ID utgör är alltid ett heltal och prefixet &#8220;int&#8221; blir lite overkill.</p>
<p><strong>Fortsätt med att </strong>välja datatyp för fältet PID. Även här väljer vi INT i rullisten, då det rör sig om samma datatyp som i ID-fältet innan. Inga fler val skall göras, eftersom detta fält inte ska räkna upp sig självt.</p>
<p>Sista fältet döper vi till &#8220;strKategori&#8221;, där &#8220;str&#8221; är kort för &#8220;string&#8221;. En string är motsatsen till &#8220;int&#8221; kan man säga, även om MySQL och andra databastyper bjuder på många fler datatyper än så här. Vi kommer dock inte komma i kontakt med andra typer än &#8220;int&#8221; och strängar i denna guide. Det finns dock ingen datatyp som heter &#8220;str&#8221;, utan det syftar bara på ett samlingsnamn som förkunnar att fältet innehåller vanlig text. Som datatyp väljer vi istället &#8220;VARCHAR&#8221;, som troligtvis är förvalt alternativ. I rutan för &#8220;Längd/Värden&#8221; skall vi ange maxlängd för innehållet i fältet. Ett kategorinamn i en webbshopsmeny är oftast inte så långt, men ta till lite i överkant ändå och välj 250.</p>
<p>Välj nu &#8220;Spara&#8221;, så skapas tabellen och första steget är klart. Just &#8220;Kategorier&#8221; är en angenäm tabell att skapa eftersom det inte finns så mycket information att spara ihop med kategorinamnet. Man kan alltid lägga till ett fält för kategoribeskrivning eller kanske ett fält med sökvägen till en kategoriikon, men när denna guide är till ända kommer ni troligtvis kunna lista ut hur ni kan utöka skriptet med fler funktioner på egen hand.</p>
<p>Nästa steg är att göra om proceduren. Klicka på &#8220;webXXXXX_webshop (1)&#8221; i vänsterkanten och scrolla ner till botten. Döp tabellen till &#8220;produkter&#8221; och välj att skapa fem (5) fält. Gör om proceduren från ovan genom att lägga till följande fält i tur och ordning med nämnda egenskaper:</p>
<ul>
<li>ID [typ: INT | extra: auto_increment | primär: kryssa i radioknappen ]</li>
<li>intKategoriID [typ: INT]</li>
<li>strProdukt [typ: VARCHAR | längd: 500 ]</li>
<li>strProduktBeskrivning [typ: VARCHAR | längd: 8000 ]</li>
<li>intPrice [typ: INT]</li>
</ul>
<p>Inmatningsförfarandet kommer troligtvis ske på bredden nu eftersom antalet fält överstiger tre, men fälten är de samma, så håll bara tungan rätt i mun och glöm inte bort att välja auto_increment och kryssa i primär (första radioknappen) på ID-fältet</p>
<p>Tabellerna är nu uppsatta och det har blivit dags att lägga till två kategorier och två produkter. Vi börjar med att lägga till kategorierna, eftersom vi behöver veta ID-nummer som automatiskt tilldelas kategorierna innan vi kan lägga in produkterna, så att produkterna blir kopplade till rätt kategori. Det låter logiskt va? <img src='http://www.iamkay.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Klicka till vänster på &#8220;kategorier&#8221; för att komma till tabellen vi skapade först. Till höger väljer ni nu femte menyknappen &#8220;Lägg till&#8221; och ni kommer till ett formulär för att lägga till rader i tabellen. Troligtvis finns här möjlighet att lägga till två rader direkt. Vi väljer att göra det enligt följande agerande:</p>
<ul>
<li>Lämna ID-fältet tomt. Det ges automatiskt det lägsta möjliga ID-numret.</li>
<li>Skriv 0 i intPID. Eftersom det är en huvudkategori har den inget ovanliggande menyalternativ.</li>
<li>I strKategori anger ni i klartext vad ni vill att kategorin skall heta. Det är detta som visas i butiken. Vi gör det enkelt för oss och kallar den för &#8220;Kategori 1&#8243;</li>
</ul>
<p>Gör nu samma sak i formuläret nedanför, men döp den till &#8220;Kategori 2&#8243;. Glöm inte att lämna ID-fältet tomt. Tryck sedan på någon av de två nedre &#8220;Kör&#8221;-knapparna. Vi har nu skapat &#8220;Kategori 1&#8243; och &#8220;Kategori 2&#8243;. Väljer vi &#8220;Visa&#8221; i menyn ser vi också att två rader har skapats och att ID-nummer för de två raderna har tilldelats; <strong>1 </strong>och <strong>2</strong>. Eftersom vi sköter inmatningen av data manuellt i databasen och ännu inte via vårt framtida egenutvecklade administrationssystem för webbshopen får vi hålla dessa siffror i minnet när vi nu väljer att gå över till tabellen &#8220;produkter&#8221; i vänsterkant. Tryck sedan på &#8220;Lägg till&#8221; och samma inmatningsprincip råder igen.</p>
<p>Nu ska vi mata in produkterna i databasen. Samtidigt vill vi göra kopplingar mellan de två tabeller som vi skapat och väljer således att lämna ID tomt, i intKategoriID skriva 1 (som avser &#8220;Kategori 1&#8243;), i strProdukt skriva det namn vi vill ha på produkten som visas för kunderna. Vi gör det enkelt även här och väljer det beskrivande namnet &#8220;Produkt 1&#8243;. i strProduktBeskrivning har vi nu spelrum att skriva en hel novell på 8000 tecken. Vi väljer dock att fatta oss kort och skriver &#8220;Produktbeskrivning 1&#8243;. I sista fältet, intPrice, kommer vi till det kittlande - vad ska vi ta i pengaväg för klenoden? Vi minns att datatypen sattes till att handska heltal, så ange 79. I framtiden kommer skriptet ha stöd för ören, men nu i början behöver vi inte krångla till det i onödan.</p>
<p>Fyll nu i nedanstående formulär med samma kategori-ID (1), produktnamn &#8220;Produkt 2&#8243; och produktbeskrivning &#8220;Produktbeskrivning 2&#8243;, sätt priset till &#8220;1000&#8243; och tryck på &#8220;Kör&#8221;-knappen. Två produkter har nu lagts till i kategorin &#8220;Kategori 1&#8243; och &#8220;Kategori 2&#8243; är fortfarande tom.</p>
<p><em>I nästa del lägger vi upp en enklare design för sidan och tar fram de menyalternativ vi just lagt in i databasen. Lägg gärna till denna blogg i din RSS-läsare. När ni följer <a href="http://www.iamkay.com/feed">feeden</a> riskerar ni inte att missa någon del av denna artikelserie. Har ni frågor eller funderingar är ni givetvis välkomna att lämna en kommentar till denna artikel!<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamkay.com/hur-man-gor-en-webbshop-i-asp-del-1/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
