Just nu i M3-nätverket
Jump to content

kan man få flera värden i samma kolumn in i databasen?


dareknowak

Recommended Posts

Hej! jag ska göra en intresse anmälan på min sida och tänkte på hur jag lättast ska få till detta, så jag tänkte lägga upp det såhär:

 

första kolumnen i databasen skulle vara ID som ska vara en räknare, ämne, beskrivning och sedan namn, frågan är nu om vi säger att Anton, Jesper, gustav och mikael gör en intresseanmälan, kan man då få in dessa värden under namn? Alltså liknande Anton, Jesper, Gustav, Mikael att det kommer under namn. Och sen att man kan presentera dessa så dom visas radvis som vanligt när man använder RS.EOF med loop.

 

Eller har ni något förslag på något enklare sätt som man kan få ihop detta på?

jag försöker få ihop det på detta viss eftersom jag sedan vill fixa så att när man går in på användaren att där syns vilka intresseanmälningar personen har gjort och då ska den söka igenom om namnet finns under namn och på vilka intresseanmälningar. alltså en liknande historik.

 

Helst i Asp.

 

Mvh //Dashi

 

Link to comment
Share on other sites

DanielForPresident

Är det inte enklare att ha en egen tabell för namnen som du sen kopplar till intresseanmälningen?

 

Link to comment
Share on other sites

Man kan göra precis som du säger(1), men det är bäst är göra det enl nr 2.

Du måste ha öppnad databasen först, samt ändrat i SQLen till de fälten du använder i databasen.

 

1.

Jag antar att de anmäler sig själva var för en.

Varje gång någon anmäler sig gör du en update.

 

A:

conn.execute("UPDATE anmalantabell SET anmalare=anmalare & "request.form("namn")&", WHERE Id="&request.form("anmalanId") &"" )

 

Erh, vet inte omdet fungerar att göra enl A. Annars gör du:

Set RS = Conn.Execute("SELECT anmalare FROM anmalantabell WHERE ID="&request.form("anmalanId") &"")
anmaldapersoner = RS(0)
RS.Close
conn.execute("UPDATE anmalantabell SET anmalare='"& anmaldapersoner & request.form("namn")&", ' WHERE Id="&request.form("anmalanId") &"" )

 

2.

Hellre gör de en separat tabell för de som anmäler sig

Tabell "kurser" (eller det som de skall anmäla sig till )

-Id

-Rubrik (eller namn)

-Beskrivning

-Datum.

... osv

 

Tabell "anmalan"

-Id

-kursId

-Namn

-epost

-telefon

...

 

 

Du Länkar från den sidan du beskriver kursen, festen eller vad man skall anmäla sig till till sida2 "anmalan.asp?id=123"

123 motsvarar Idt som kursen/festen har

 

Lagra querystringen (id) i en hiddenfield i formuläret och döp det till t ex "kursId"

 

ANvänd de fält du vill lagra i databasen

Namn

epost

telefon mm

 

formen skall ha action="anmalan2.asp" (eller vad du önskar)

i anmalan2.asp när du lagrar använder du INSERT

 

SQL="INSERT into anmalan (kursId, namn, epost, telefon) VALUES ('"&request.form("kursId")"','"&request.form("namn")&"','"&request.form("epost")&"','"&request.form("telefon")&"')"
Conn.execute(SQL)

 

 

Tänk på att du får skuydda dig mot SQL-injections. Jag har inte tagit hänsyn till detta i koden.

Hoppas du fattar vad jag skrivit!

 

 

 

 

 

 

Link to comment
Share on other sites

nej eftersom då blir det så mycke i den tabellen, eftersom då får man använda id och grejer för alla namn, ville hellre få in det optimerat, så det inte är för överdrivet, blir så mycke jobb efteråt annars om man skulle ändra detta då får man spara alla 20.000 rader på något sätt :)

 

Link to comment
Share on other sites

det ÄR optimerat med separat tabell...

 

Kommer verkligen 20000 anmäla sig?

Då är det verkligen läge att använda separat tabell,

 

om man lägger in enl 1B (mitt exempel) kan man antingen göra "split" av fältet eller hellre replace(RS("fältnamn"),",","<br>") .

då byter den ut varje komma-tecken till ett radbryt

 

Link to comment
Share on other sites

tack, jo jag förstog tyckte att exempel 1 verkar va bra :)

men en sak jag tänkte på, det är ju enkelt att sätta in det, hur får man ut alla namn sedan radvis då? eftersom jag jag skriver ut RSnamn så kommer dom presenteras Anton, Gustav, Mikael o.s.v men dom ska presenteras.

Anton

Gustav

Mikael

o.s.v om du förstår? :)

 

Link to comment
Share on other sites

oki, men jag mena mer såhär har jag seperat tabell, så har jag en intresse anmälan som har id 1, 50 pers anmäler sig på den då blir det 50 rader med id 1 men olika namn, har vi ca 4 intessen / vecka är det 200 rader, efter en månad kan det va uppe i 1000, efter 1 år e vi uppe i 12.000 ska man då spara info och ändra på sättet blir det ett väldigt långt jobb :)

 

Link to comment
Share on other sites

DanielForPresident

Det är optimerat/normaliserat att ha en extra tabell för detta ju fler namn det är.

[inlägget ändrat 2006-04-26 11:10:40 av DanielForPresident]

Link to comment
Share on other sites

sen samtidigt kommer jag använda samma sätt i ett par st funktioner på hemsidan i framtiden så blir det svårt att ha nya tabeller för varje sak. då börjar databasen blir onödigt stor med mycke information, många rader och mycke klumpig :) Så därför jag försöker få ner radantalet och tabellantalet. just för tillfället är det 3 funktioner på hemsidan som kan använda sig av detta, och det kommer komma fler.

och det exemplet 1b och det med komma ersätts med br tyckte jag verka en väldigt bra ide :)

 

Link to comment
Share on other sites

om du skall ta bort en snubbe som anmält sig, och det är ca 50 som anmält sig. DÅ blir det klumpigt...

 

Link to comment
Share on other sites

DanielForPresident

Det borde väl inte bli mer jobb än om du ska ha det i samma tabell? Om du jobbar med SQL och inte för hand rakt ner i databasen spelar det ingen roll om det är 10 rader du ska ändra eller 1000.

 

Om du har möjlighet(en databas som stödjer det) kan du jobba med vyer, joins och liknande som gör det lite enklare att filtrera informationen.

 

Link to comment
Share on other sites

men jag kommer ändra på det i framtiden sen när jag hittat en ännu bättre funktion därför anpassar jag det hela efter det inför framtiden.

Och enskild databas visste jag innan osså, hade jag velat använda mig av det hade jag inte frågat i forumet, ellerhur? så va snälla sluta tjata för jag tänker inte använda det sättet med enskild databas, har gjort det tidigare och det är ett väldigt jobbigt efterjobb när man ska ändra och det tar tid att scanna igenom 12.000 rader med information, och den tiden vill jag begränsa.. det är väldigt många anledningar som jag inte vill använda det sättet, jag vet att det finns ett sätt som jag sett innan men lyckas inte sätta tummen på det.

 

Link to comment
Share on other sites

Micke_skane

Kan bara hålla med Daniel och Jonas om att du ska använda olika tabeller :)

Och det är av samma anledningar som dem redan nämnt.

Databas-desgnen är väldigt viktig!

 

Skissa på papper först hur det ska se ut i databasen.

Bygg sen!

 

Link to comment
Share on other sites

DanielForPresident

Visst- du gör såklart som du vill. Försöker bara hjälpa till här och ge råd utifrån mina egna erfarenheter :) Det var som sagt inte det du frågade om men jag ser inget fel med att ge råd om andra saker/förslag som kommer upp i samband med diskussionen. Om någon annan här kommer med andra vinklar eller förslag på något jag frågar om blir jag bara glad. Det är lätt att bli snöblind när man sitter och jobbar själv och då kan det vara bra med andra förslag och vinklar, oavsätt om de är bra eller dåliga.

 

Men som sagt- du gör som du vill :)

 

Link to comment
Share on other sites

[b]Response[/b].write [color="#0000ff"]Replace[/color](RS([GRÅ]"fältnamn"[/GRÅ]),[GRÅ]","[/GRÅ],[GRÅ]"<br>"[/GRÅ])

 

Hur vill du komma menar du?

 

Smidigaste sättet att redigera på "ditt" sätt är då att skriva ut fältet med alla namn i en TEXTAREA, då ser du mer namn där.

 

Du kan inte redigera ett enskilt namn i separata fält i "adminfunktionen".

 

 

 

 

Tjat:

Då är det bättre med separat tabell (som du inte vill ha)

Du frågade efter "enklare sätt som man kan få ihop detta på?" Kanske inte enklare men bättre i längden.

Alla 20000 namn kommer du aldrig att se samtidigt, så det är oväsentligt.

 

Vi föreslår den, över lag, BÄSTA lösningen för framtiden. Så bli inte arg för "tjatar".

 

Jag gjorde på ditt sätt i början av mina programmeringsdagar, och när jag sen gjorde det på det sätt som vi föreslår, blev livet mycket lättare och databasen blev helt plötsligt mer överskådlig.

 

[inlägget ändrat 2006-04-26 12:06:07 av Jonas_Bo]

[inlägget ändrat 2006-04-26 17:05:09 av Jonas_Bo]

Link to comment
Share on other sites

hehe jo jag vet, men dom andra förslagen jag brukar få vet jag redan om, och försöker hitta lite svårare svar men det brukar inte ge nåt bra resultat, men jag tror nog jag får använda enskild tabell eftersom det är enklast men får ifs inte just det resultat jag ville ha ut.

 

Link to comment
Share on other sites

Sållar mig till tjatet :)

 

Hade däremot använt mig av 3 tabeller:

 

Intresseenkäten

-id (PK)

-namn

(ev innehålls kolumner)

 

Personer

-id (PK)

-namn

-adress

(övriga kontaktuppgifter)

 

Intressanmälningar

- enkätid (FK)

- personid (FK)

 

I framtiden ger detta att en person bara behöver anmäla sig en gång med alla uppgifter, därefter kan han lätt logga in och bara bocka för nya anmälningar.

 

Definitivt bättre med flera tabeller och sen koppla ihop dessa.

 

Link to comment
Share on other sites

tack för tipset, har lyckats lösa det hela på ett bra sätt, jag har redan en tebell med medlemmar, och i den ska jag istället spara vilket intresseid varje medlem gör, så har bara lagt till en kolumn i databasen som heter anmalan och i den sparas id, där efter kan jag se vilka som lämnar intresse, gör detta för att underlätta, eftersom detta här med en till tabell elr flera tabeller blir så krånglit och får ändå inte fram den funktionen jag önskar och det blir dessutom mycke mer kod då jag får öppna ett antal recset komplingar samtidigt, och då blir hemsidan samtidigt seg o.s.v

 

Jag vet är det finns ett annat sätt men glömt vad funktionen inom asp heter, och jag avstår tills jag hittat detta, för det är de jag vill använda mig av, trodde jag skulle få de svaret elr till någon annan liknande funktion men så var inte fallet :)

 

Men tack ändå.

 

Mvh //Dashi

 

Link to comment
Share on other sites

och det blir dessutom mycke mer kod då jag får öppna ett antal recset komplingar samtidigt, och då blir hemsidan samtidigt seg o.s.v

 

Öppnar man en recset korrekt med JOIN så skall prestandan inte ändras märkbart.

 

Hoppas din funktion blir bra iaf!!

 

Link to comment
Share on other sites

Vad menar du med att du måste öppna "ett antal" recset kopplingar samtidigt? Du behöver ju inte öppna fler än ett? Nu vet vi ju inte exakt hur dina sql-frågor ska se ut, men om man joinar ihop tabellerna så får du ju fram den mesta informationen på ett smidigt sätt. Men, vill du ha mer förslag på hur du löser det så säger du till :)

 

Bra att du känner att det löste sig ändå :)

 

Edit: hade inte laddat om sidan och sett att Jonas_Bo svarat :)

[inlägget ändrat 2006-04-28 22:50:09 av Jenny R]

Link to comment
Share on other sites

jag ska prova en ny funktion som jag suttit och jobbat lite med, därför måste jag få fram det som jag letar efter annars blir det fel, visst har folk fler förslag som inte har med att ändra tabell struckturen att göra så är dom välkommna att presentera dessa.

 

Edit: den koden Jonas_Bo kom med den va bra med det går inte då ändra eller tabort ett specefikt värde.

 

Edit: Det jag sökte efter var array lyckades hitta det nu, tror ni det skulle kunna gå få ihop detta med array?

 

Mvh //Dashi

 

[inlägget ändrat 2006-04-29 11:01:21 av Dashi]

[inlägget ändrat 2006-04-29 12:04:30 av Dashi]

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...