01. marts 2007 - 13:29Der er
29 kommentarer og 1 løsning
Tjekke flere værdier i en database
Hej.
Jeg sidder med et lidt uoverskueligt problem. Jeg er igang med et forum og nu skal jeg tjekke flere ting inden indlæggende bliver udskrevet:
Et indlæg lavet af en administrator skal have en anden farve end et oprettet af en normal bruger. Når min bruger logger ind, gemmes hans rettigheder (0 og 1) i en Session("Userstatus"). Den tildeles så (row.Item("fldStatus")) som er enten 0 eller 1. Når så en bruger eller en administrator laver et indlæg, så er det eneste der skal gemmes med indlægget, hans ID.
Så selve problemet er at jeg skal læse hvad en brugers Session("Userstatus") svarer til udfra at kende hans ID i en anden tabel.
Hvis i ikke forstår spørgsmålet, så sig endelig til.
I en tabel, så hvert indlæg bliver skrevet ud en tabel direkte i code behinden og baggrundsfarven bliver bestemt af en variabel ved navn bgColor, som så bliver sat til enten eller:
Og adminStatus skal så ændres til navnet, men føler ikke jeg kan komme videre lige nu inden det der problem bliver løst ordenligt, så jeg ved om det er muligt eller om jeg bare må begive mig videre...
Argh, er virkelig glad for du skriver så hurtigt tilbage! :)
Men hvis du vil, så får du mine tabelnavne, så hvis du kunne sætte de rigtige navne ind, for mit hoved er gået i stykker efter det her.
tblHotline: ID fldHeadline fldText fldStatus fldPostID fldTextType fldDate fldUser --------------------------------------------------------------------------------- ID = n på indlægget fldHeadline = Overskrift på indlægget fldText = Teksten i indlægget fldStatus = ID n på brugeren der har oprettet indlægget fldPostID = Trådens unikke ID n fldTextType = 0 = nyt indlæg OG 1 = svar på eksisterende indlæg fldDate = Datoen og tid på indlægget fldUser = (Skal nok bruges istedte for fldStatus)
tblUsers: ID fldUsername fldPassword fldStatus --------------------------------------------------------------------------------- ID = n på brugeren. fldUsername = Brugernavnet fldPassword = Adgangskoden fldStatus = 0 = admin OG 1 = bruger
Du skal evt hente feltet ud samtidig med at du hente dine indlæg fra databasen. Hvordan ser den sql ud ? og hvordan gennemløber du resultaterne af denne sql sætning altså hvordan generer du output til brugeren.?
Men altså jeg har forstået det rigtigt, hvis jeg siger JOIN fungerer sådan at SQL genererer en tabel med samtlige feltnavne fra begge tabeller og fylder data i tabellen alt efter hvilke data der svarede overens med JOIN i SQL-forespørgelsen.
ja men her handler det om udskrivningen af det poster som er genereret. Hvis jeg ikke har misforstået noget skal et indlæg skrevet af en admin have en anden farve ?
Hvordan ser koden ud som generer output til brugeren ?
du kan også nøjes med at hente bestemte felter ud f.eks: SELECT tblUser.ID,tblHotline.fldStatus FROM tblUsers INNER JOIN tblHotline ON tblUser.ID = tblHotline.fldStatus
Ahhhh. Oki, smart nok, hvis det nu er en stor database med mange indlæg eller brugere.
Lige nu vælger jeg dog at hive det hele med ud, da jeg ikke er helt klar over hvor meget jeg skal bruge. Nu prøver jeg at sætte det ind på siden og se om det virker.
Tænkte på om der var en måde man kan tjekke indholdet af ens Dataset som ligger i hukommelsen? Det er deri ens data som er trukket ud gennem SQL-sætningen ligger i vel?
Så jeg kunne godt tænke mig at tjekke om det er rigtigt det som jeg har hevet ud.
Btw. den ser sådan ud nu:
SELECT * FROM tblHotline INNER JOIN tblUsers ON tblHotline.fldUser = tblUsers.ID WHERE fldPostID=" & PostID & " ORDER BY tblHotline.ID ASC
ja enten med et break point og så holde musen over det når den når til breakpointet Eller f.eks. gemme indholdet som xml.
WriteXmlToFile (ditdataset); private void WriteXmlToFile ( DataSet thisDataSet ) { if ( thisDataSet == null ) { return; } // create a file name to write to. string filename = "c:\myXmlDoc.xml"; // create the FileStream to write with. System.IO.FileStream myFileStream = new System.IO.FileStream ( filename, System.IO.FileMode.Create ); // create an XmlTextWriter with the fileStream. System.Xml.XmlTextWriter myXmlWriter = new System.Xml.XmlTextWriter ( myFileStream, System.Text.Encoding.Unicode ); // Write to the file with the WriteXml method. thisDataSet.WriteXml ( myXmlWriter ); myXmlWriter.Close ( ); }
Private Sub WriteXmlToFile(thisDataSet As DataSet) If thisDataSet Is Nothing Then Return End If ' Create a file name to write to. Dim filename As String = "myXmlDoc.xml" ' Create the FileStream to write with. Dim myFileStream As New System.IO.FileStream _ (filename, System.IO.FileMode.Create) ' Create an XmlTextWriter with the fileStream. Dim myXmlWriter As New System.Xml.XmlTextWriter _ (myFileStream, System.Text.Encoding.Unicode) ' Write to the file with the WriteXml method. thisDataSet.WriteXml(myXmlWriter) myXmlWriter.Close() End Sub
adminStatus = row.Item("fldUsername") Det beviser ligesom at de to tabeller er lagt fint nok sammen når den både kan udskrive navnet nu, samt teksten da de to mængder data befinder sig i to forskellige tabeller.
Det er simpelthen alt for fedt! Jeg ved ikke om der dukker flere spørgsmål op lidt længere henne i forløbet, men jeg håber da du vil svare på dem senere, hvis det er. :)
Men for nu, ligger du bare et svar, så får du pointene! :)
Jeg sidder lige nu her og kigger de forskellige variabler igennem med breakpoints. Det er faktisk en MEGET nyttig funktion i Visual Web Developer må man sige.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.