Hejsan Kan du förklara lite mer konkret vad du vill göra? Hej Andreas... JAg rekkomenderar dig starkt att överväga din datastruktur. Jo, det var en grej som råkade dyka upp som jag inte tänkt på. Det är så att jag administrerar och bygger min klubbs hemsida (www.ifkhalmstad.se) på fritiden. Och i databasen kan man lägga till alla som har någon funktion i klubben samt vilka som är tränare (checkbox). Vidare har jag gjort så att tränarna har en egen sida (sätter en gruppid i samma databas). Alla som har ett uppdrag kan logga och ändra vissa grejor som statistik, ladda upp dokument mm. Jag utgår, för tränarnas räkning, till vilket gruppid man har (detta lägger jag i ett session så att rätta rader i mina andra tabeller uppdateras korrekt). Som jag tolkar det har din sida <i>medlemmar</i>, det finns grupper i vilket medlemar kan vara medlemmar samt att medlemmar kan ha roller. Japp, helt korrrekt tolkat. Jag har hållt på med hemsidan i 1 1/2 år så den har vuxit en bit och jag har lagt på mer funktionalitet, nya ideér har tillkommit. Allt är skrivit i .net 1.1 men nu tänker jag uppgradera hela sidan till v2.0 samt byta databas till MySQL (har haft access och inte helt problemfritt emellertid). Så nu i kväll har jag laddad hem visual express och en massa video lektioner som jag ska ögna igenom den närmaste tiden. Vad gäller databaskonstruktionen hade jag tänkt göra så att registrering ska kunna ske på ansvariga (tränare, styrelse etc i tre olika behörighetsnivåer till login), medlemmar (för framtida bruk) samt göra en webbkomponent till en online e-anmälan för våra tävlingar. Jag tycker engelska namn på datastrukturen är att föredra. Gärna unika fältnamn. Unika fältnamn åstakoms lätt med något prefix framför fältnamnet. Ok...eftersom jag ändå tänkt lägga över till .ned2 så ändrar jag namnen i databasen och ser över strukturen. Jag tackar ödmjukast för ditt tips. Varför inte presentera det som en lista? Ja det löser sig nog, nu ska jag ögna igenom lite toturials och läsa på. Tack för hjälpen!Databasproblem
Sitter med en liten filuring här och undrar om man kan lösa detta på något sätt. Jag skulle vilja att samtidigt som jag läser rad för rad i en databas ha möjlighet att ändra/uppdatera posten i fråga. Är det möjligt?
//MickeSv: Databasproblem
Om du vill uppdatera en räknare:
UPDATE CounterColumn = CounterColumn + 1
FROM TableName
WHERE CounterId = ?
Sv:Databasproblem
Jo jag tänkte så här att jag har konstruerat en textsträng med avgränsare, ex namn1,namn2,namn3 osv.. Dessa loopar jag igenom då jag gjort strängen till en vektor (ToCharArray()). Alla namnen finns i ett register i en databas som jag går igenom post för post och gör en jämförselse med den aktuella textsträngen. Om nu exempelvis namn2 skulle vara bortaget i databasen men inte i textsträngen finns det då möjlighet att skriva till databasen och uppdatera värdet medan pekaren finns på rätt rad i databasen?
MVH
MichaelSv: Databasproblem
Det är ALDRIG bra att lagra flera värden i en kolumn på det sätt som du beskriver.
Vad händer om kolumnen blir full, sökningar, uppdateringa är långsama/ineffektiva?
Varför inte dela upp det i fler tabeller?
Om du förklara mer av din datastruktur så kan vi hjälpa dig med en vettigare datastruktur.Sv:Databasproblem
Vad jag inte tänkte på är att en person kan vara tränare för flera grupper, utan jag antog att man endast är tränare i en grupp. En lösning som jag nu gjorde var att lägga en texsträng som separerade gruppid med ett kolon tecken. Jag läser av värdet genom en for loop och använder mig utav ToCharArray().
Mitt största problem är att när man som administratör ska ta bort eller uppdatera medlemmarna. Föst måste jag öppna databasen och läsa post för post. Om posten är tränare kontrollera då om han/hon är tränare i fler grupper. Man kanske lätt kan lösa detta med en undertabell?
//MichaelSv: Databasproblem
Tabell: Members
Fields: MemberId in PK
Fields: MemberName varchar(20)
Fields: MemberPassword varchar(20)
Fields: MemberEMail varchar(50)
Tabell: Groups
Fields: GroupId int PK
Fields: GroupName varchar(50)
Fields: GroupRequierLogin boolean
Tabell: GroupMembers
Fields: MemberId int FK -> Members.MemberId
Fields: GroupId int FK ->Groups.GroupId
Fields: Trainer boolean
Med denna datastruktur kan du ha cascade deletes på dina FK. På så sätt kommer poster i GroupMembers tas bor om en medlem eller grupp tas bort.
Om du istället vill göra ett generell administration kan du:
Tabell: GroupMembers
Fields: MemberId int FK -> Members.MemberId
Fields: GroupId int FK ->Groups.GroupId
Fields: AllowRead boolean
Fields: AllowWrite boolean
Fields: AllowDelete boolean
osv...
På så sätt kontrollera om medlemmen får redigera den gruppen.Sv:Databasproblem
Så här ser nuvarande tabell ut...
Tabell: Members
Fält: Name
Fält: Level[1=admin,2=premium,3=basic ->Styr om till vilka menyer som ska visas)
Fält: Coach[Ja/Nej]
Fält: GroupID[Text] Grupp separeras med kolon
osv...
Tabell:GruppID
Fält: Count PK
Fält: GroupID int
Fält: Coaches varchar(50) Textsträng där tränare separeras av kolon
Jag har läst ditt förslag och det är precis det problem jag gått och funderad på vad gäller databaskonstruktionen. Vad jag är okunnig om är hur en
loginkontroll ska göras när det gäller roller och användare i .net2. Men jag får väl läsa på, hitintills så gör jag en direkt jämförelse med databasen och skickar till korrekt sida. Lösenord och anv sparar jag krypterat i databasen. Måste säga att utan pellesoft hade jag nog inte lärt mig så mycket, fått en hel del bra tips här...
//MickeSv: Databasproblem
I min konvention döper jag tabelerna till plural av de de innehåller: Tabellen med medlemmar blir Members, tabellen med grupper blir Groups.
Prefidxet jag väljer för fälten är sigular av vad tabellen innehåller så fältet för namnet på en medlem blir MemberID.
Jag rekomenderar oxå att du använder räknare, autoinkrimiterande integers fält som primärnyckel.
Då dessa är effektivare än strängar i joins.
Mitt förslag på struktur är:
En medlemstabell vilket påminner om din:
Tabell: Members
Fält: MemberId int autoincre.
Fält: MemberName varchar(50)
Fält: MemberLevel int [1=admin,2=premium,3=basic ->Styr om till vilka menyer som ska visas)
Fält: MemberCoach boolean [Ja/Nej]
osv...
Har lagt till en räknar, MemberId, för att identifierar en främmande nyckel i andra tabeller.
Jag vet inte vad count hade för syfte, så jag tog bort den.
Tabell:Groups
Fält: GroupID int
Fält: GroupName
osv...
För att relatera medlemmar till grupper behöver du sedan en "länk"/"kopplingstabell", då det rör sig om en många till måna relation.
I denna tabbellen skulle man kuna låta de främmande nycklarna utgöra primärnyckeln. MEn det underlättar att ha ett fält som nyckel.
Tabell: GroupMembers
Fält: GroupMemberId
Fält: GroupMemberMember int FK -> Members.MemberId
Fält: GroupMemberGroup int FK -> Members.MemberId
Exempel data:
Members
MemberId, MemberName, MemberLevel, MemberCoach
100, "Adam Andersson", 1, true
101, "Berit Bengtsson", 2, true
102, "Carl Ceder", 3, false
103, "Diana Davidsson", 3, false
104, "Erik Eklund", 2, true
105, "Frida Fredriksson", 3, false
106, "Gustav Gran", 3, false
Groups
GroupID, GroupName
10, "Juniorer"
11, "Seniorer"
GroupMembers
GroupMemberId, GroupMemberMember, GroupMemberGroup
1, 100, 10
2, 100, 11
3, 101, 10
4, 102, 10
5, 103, 10
6, 104, 11
7, 105, 11
8, 106, 11
Detta är en förening med 7 medlemmar. Ordförande och administratör i föreningen är Adam Andersson som oxå hoppar in som tränare ibland.
Föreningen består av två grupper:
*Juniorer och
* Seniorer.
Till Juniorerna hör:
* Berit Bengtsson vilket är tränaren
* Carl Ceder,
* Diana Davidsson
Till Senioreran hör:
* Erik Eklund vilket är tränaren
* Frida Fredriksson
* Gustav GranSv:Databasproblem
Jag funderar även på en annan sak, nämligen hur datan med tränarna ska presenteras. På www.ifkhalmstad.se under träning/gruppindelning ser man hur mitt upplägg ser ut just nu och så vill jag ha det. Jag änvänder mig utan nästlad datagrid där och under rubriken tränare är alla tränare listade i en post i databasen från Tabell:GruppID. Om man nu stoppar alla tränarna från members till en undertabell hur gör man för att i .net lägga alla namnen i en textsträng, de finns ju i flera poster?
//MichaelSv: Databasproblem
T.ex. För att lägga till ta bort grupper för en tränare borde du kunna använda CheckboxList eller nåt liknande.Sv:Databasproblem
MVH
Michael