I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hmm .. der er et spørgsmål om at opbygge din database korrekt.
du skal først og fremmest have disse felter:
- post_ID: Denne værdi bruges til identifikation af enhver post.
- post_parent: Denne værdi bruges til at specificere om den pågælende post er en besvarelse eller et spørgsmål - det er en reference til en anden post's ID (post_ID). Fx hvis en post har post_parent = 3 så er den en besvarelse til den post hvor post_ID = 3. Derimod hvis en post har post_parent = 0 og fx post_ID = 12 er den et spørgsmål, og andre posts kan referere til denne post med post_parent = 12. (indviklet ? :)
- post_subject: Emnet på en post (ligemeget om den er en besvarelse eller et spørgsmål - en feature som eksperten ikke har, men måske nok heller ikke har brug for :)
- post_author: Reference til brugeren, som har oprettet spørgsmålet - brugerne placerer du i en separat tabel.
- post_content: Beskedens indhold.
Senere kan du jo selv tilføje flere felter, men lige umiddelbart ville jeg mene, at disse er de vigtigste.
Jeg har selv lige haft brugt lange tider på at udvikle et ret indviklet forum med masser af spændende features, så det er måske ikke bare lige sådan at forklare hver detalje...
Hvis du har yderligere spørgsmål, så fyr løs! :) (hvor længe har du programmeret ASP?)
SQL = "SELECT nick, emne, kommentar FROM debat" Set RS = Conn.Execute( SQL )
while NOT RS.EOF text=RS("kommentar") text = replace(text,vbcrLF,"<br>") response.write "<tr><td><span class=""tekst11""><b>" & "Af: " & "</b></span>" & "<span class=""tekst11""><i>" & RS("nick") & "</i></span></td></tr>" response.write "<tr><td><span class=""tekst11""><p align=""justify"">" & text & "</p></span></td></tr>" response.write "<tr><td colpan=""2""><img src=""/images/bundlinie.gif"" border=""0""></td></tr>" RS.MoveNext text="" wend
RS.Close Set RS = nothing Conn.Close Set Conn = nothing %>
Det vil reelt sige, at man kan se en side, hvor der er nogle indlæg, og man kan føje sine egne til. Det virker perfekt, men man kan ikke andet. Jeg vil selvfølgelig gerne have, at man kan oprette et spørgsmål, og at folk kan besvare eller kommentere det (IKKE eksperten.dk om igen).
Jeg kan næsten regne ud, at det er en halvkompliveret sag?
hvordan virker det ikke? laver den fejl i koden? har du husket at lægge de nye felter post_ID og post_parent ind i databasen?
Desuden skal den side, hvor du henter indlæg laves om, da du nu ikke skal hente alle indlæg, men kun dem, som tilhører det debatemne du har klikket på!
Derfor skal du lave en lille reference til hvilken post du vil åbne ved at skrive i hvert link i oversigten over debatemner:
Nu kan du på post.asp (eller hvad du nu kalder siden, hvor du henter 1 debatemne, plus dets besvarelser) se hvilken post, der blev refereret til ved at skrive:
SQL = "SELECT post_ID, emne, nick, kommentar FROM debat WHERE post_ID = " & Request.QueryString("id")
ovenfor henter du debatemnet
nu skal du så hente besvarelserne:
SQL = "SELECT post_ID, nick, emne, kommentar FROM debat WHERE post_parent = " & Request.QueryString("id")
post_ID er Autonummerering post_parent er bare nummer
..
jeg kan anbefale at holde standarden i databasen ved også at kalde resten af dine felter for post_* (fx post_nick og post_emne) -- hvis altså du grider rette det på din side -- det er op til dig
Ok .. men det er generelt vigtigt at alle tabeller har et felt, som tildeler alle records et helt unikt kendetegn, som fx autonummerering .. men det ved du højst sandsynligt godt! :)
Jeg vender tilbage imorgen (måske først i overmorgen - 6. marts) med lidt videre hjælp, hvis der er brug for det...
Hej steen.. dette bliver mit sidste svar for idag .. min internetforbindelse kommer muligvis først op at køre imorgen :(
Here's how it goes:
Den side vi arbejder på lige nu, er siden med oversigt over debatemner. Når man klikker på det link de sidste par svar har handlet om, sendes man til siden post.asp, som er siden, hvor du viser debatemnet der blev klikket på.
mht. til fejlen er det endnu engang min fejl :) linien skal se sådan ud:
Så er jeg tilbage .. men kun indtil kl. 18:00 .. fik endelig besked idag: mit internet kommer først op at køre mandag aften :(
post.asp:
jeg skriver ikke hele koden, men nogle småstykker .. resten kan du vel selv bikse sammen (design/opstilling osv.). :)
Altså du skal starte med at hente debatemnet. det skal stå øverst på siden. dette gør du med koden:
SQL = "SELECT emne, kommentar, nick FROM debat WHERE post_ID = " & Request.QueryString("id") Set RS = Conn.Execute (SQL)
forklaring: Request.QueryString("id") henter xx i linket: post.asp?id=xx på den måde ved vi hvilket debatemne der er tale om, og benytter denne værdi i ovenstående SQL-streng.
Nu skal vi så hente alle besvarelserne (hvis der er nogen)! Kode:
SQL = "SELECT emne, kommentar, nick FROM debat WHERE post_parent = " & Request.QueryString("id") Set RS = Conn.Execute(SQL)
Lav et loop som i filen med med oversigt over debatemner og løb besvarelserne igennem og udskriv dem under debatemnet...
Ovenstående kan du jo arbejde lidt med. Håber det er til at overskue! :)
P.S. - mit internet er nede og vil være det i ubestemt tid endnu, så jeg kan kun svare fra kontoret. Jeg vender først tilbage torsdag (medmindre jeg er så heldig at få nettet op at køre idag eller imorgen! :), så du kan jo kigge lidt på det imens, hvis du ikke allerede har.
Jeg HAR fået kigget på det, og fået det til at virke delvist. Men jeg har problemer med at skelne mellem hvornår det er et nyt debatpåløg, og hvornår det er en besvarelse på et eksisterende. Jeg lægger koden herind senere i aften. Så kan du jo kigge på det, hvis du har tid/lyst :o)
Håber for dig, at du får dit Internet op at køre snart. Det er da en bitch? :o(
Når du skal skelne mellem disse to ting, skal du kigge på post_parent. Hvis post_parent = 0, så er det et debatoplæg. Hvis post_parent > 0, så er det en besvarelse til et eksisterende debatoplæg, hvilket har samme post_ID som post_parent i besvarelsen. til at forstå? :)
Eks.:
Jeg opretter et debatoplæg. Dette debatoplæg får post_ID = 33 i databasen. En person laver en besvarelse til dette debatoplæg, som får post_parent = 33 -- altså den referer til debatoplægget.
Fedt nok! Det er også længe at være uden Internet :o)
Jeg har forstået din pointe. Jeg har været på arbejde, og er først kommet hjem 23:15, så jeg har ikke haft tid til at lægge koden ud. Jeg vil gøre endnu et forsøg i morgen aften. Håber du har tålmodighed :o)
Du har rigeligt fortjent dine point. Når vi har fået orden på det her, opretter jeg et nyt spørgsmål, som jeg håber du har tid til at hjælpe med.
fint -- du bestemmer selvfølgelig selv om du vil bruge post_ID eller emneID .. du skal bare huske at tilpasse koden, til hvilken af dem du bruger.
Jeg skal lige høre én ting: Hvad er forskellen på kommentar og brodtekst?
Og hvis du ikke har noget imod det, kunne jeg godt tænke mig at gøre koden lidt mere overskuelig ved at ændre lidt på opstillingen... Ville du have noget imod det? - hvis ikke, kan jeg lige poste en "ændret" udgave (udfører samme handlinger).
/mikkel.
P.S. I hvilken fil mener du at du ikke kan hæfte emneID til post_parent? er det i FRM_DEBATSVAR.ASP?
"kommentar" er en dårlig betegnelse for selve teksten, debatemnet. Nu ville jeg bare prøve at lege med det i første omgang. Når jeg har set lyset, vil jeg strukturere hele sitet og starte fra scratch igen.
Brødtekst er en indledning til emnet, som bliver fremhævet med fed. Det er ikke sikkert, at det skal med; jeg tror ikke det er nødvendigt for at kunne debattere. Bare lidt leg, for at se hvordan det tager sig ud på sitet.
Har du forslag til at gøre koden mere overskuelig, skal du være mere end velkommen. Jo mere idiot/Steen-sikkert, desto bedre :o)
Jeg kan ikke vedhæfte emneID til noget som helst. Jeg har oprettet FRM_DEBAT.ASP til nye debatemner og FRM_DEBATSVAR.ASP til besvarelse af oprettede emner. Om det er den rigtige måde, ved jeg ikke. Men det er et forsøg.
Formålet med min side er, at nybegyndere kan komme sikkert igang. Derfor vil jeg hovedsageligt lægge hovedvægten på instruktioner (tutorials). Men også en mulighed for at debatere forskellige problemer, i stil med eksperten.dk. Dog uden noget ønske om at blive en konkurrent, den bliver svær at matche! Men tit og ofte bliver man af andre brugere på eksperten.dk "smidt ind i en sammenhæng", som man overhovedet ikke har mulighed for eller kompetence til at overskue. Det er meningen, at brugerne "skal tages i hånden" og blive guidet (delvist) igennem de emner, som han eller hun nu godt kunne tænke sig at lære noget om. Jeg ved der findes mange gode sites, også gode i pædagogisk forstand. Men efter min mening ikke gode NOK. Når jeg har fået struktureret sitet, kunne jeg godt tænke mig at efterlyse nogle skribenter, som på meget pædagogisk vis, og visuelt, kan "tage brugerne i hånden" og vise dem det helt fundamentale, og langsomt, men sikkert, hjælpe dem godt og grundigt på vej. Ville det være noget for dig, at gå i gang med f.eks. SQL og VB-scripting? Mange af de spørgsmål, som folk (inklusive mig selv) stiller igen og igen, kan man jo lave artikler over, så man på den måde kan få det bedst mulige overblik. Hvis du ikke kender en dyt til servere, er det lidt abstrakt at få noget at vide om f.eks. "domæne-controllere", hvis ikke man har den basale viden i orden. Kan du følge mig? Jeg kan ikke tilbyde dig honorarer. Men du skal få æren for evt. artikler, et skulderklap, et varmt håndtryk og en dybfølt tak. Tænk over det. Jeg synes du er i besidelse af store pædagogiske evner, du kan udtrykke dig på en usansynlig letforståelig måde. Tænk lidt over det, inden du siger nej :o) Allerede dette emne, du er ved at hjælpe mig med, kunne være en fed hjælp til andre newbies. Jeg ville ønske, at jeg kunne blive ført igennem det grundliggende med nogle konkrete eksempler på, hvordan det KAN laves. Har man et fundament at bygge på, vil det senere hen være nemmere at erhverve sig yderligere og mere dybdegående viden. NU skal du nok få fred. Du skal jo også i seng på et tidspunkt :o) Håber du vil overveje det.
Man kan så sige, at der findes MASSER af hjælp i form af andre sites, virkeigt gode bøger m.m.m. Hvad skal vi bruge endnu et site til? Men jeg kunne godt tænke mig at lave et OVERSKUELIGT site, som også kunne give nybegynderen et solidt indblik i, hvad der findes af muligheder. Og hvordan man reelt får taget de første skridt. Al begyndelse er (kan være) svær.
MEN .... nu er jeg ude i nogle fremtidsvisioner :o) I første omgang vil jeg blive meget glad for hjælp til min konkrete problemer, inden jeg begynder at tage hul på de tutorials.
Jeg vil da gerne deltage i dit projekt, som skribent/hjælpene hånd, men det kan selvfølgelig ikke være noget "fuldtids" :). Jeg har arbejde og skole, som skal passes og selvfølgelig også en fritid, som gerne involverer andet end computere! :)
Hvis du vil kontakte mig uden for Eksperten kan du finde mig på: E-mail: mikkel@drunkencow.dk ICQ: 66648452
Mht. til den kode jeg jo faktisk er ved at hjælpe dig med, holder vi os til Eksperten, da andre brugere måske senere kan få gavn af dette spørgsmål.
-----------
Bemærk! Når jeg skriver FRM_DEBATSVAR.ASP mener jeg selve siden med formen, hvormed man kan besvare et debatemne.
-----------
Når du linker til FRM_DEBATSVAR.ASP skal du huske at videreføre emneID fra debatemnet, som besvares.
Eks:
Du står på DEBATEMNE.ASP og læser debatemnet med emneID 22. Du klikker på "Besvar"
Linket "Besvar" skal se ud som følger:
<a href="FRM_DEBATSVAR.ASP?emneID=22">Besvar</a>
Tallet (emneID) 22 videreføres hermed til FRM_DEBATSVAR.ASP, så FRM_DEBATSVAR.ASP er klar over hvilket emne der besvares.
i ASP-koden kunne linien, som udskriver linket se således ud:
(husk at lægge dette hidden felt inden for dine <form> og </form> tags).
Når du submitter formen bliver emneID'et IGEN videreført i form af Request.Form("post_parent") og ikke længere Request.QueryString("emneID"). :) På siden hvor du indsætter i databasen vha. SQL vælger du nu blot at post_parent-værdien for den nye besvarelse skal være lig med post_parent-værdien, som du videresendte vha. hidden-feltet - nemlig: Request.Form("post_parent").
Puha.. det var en ordentlig smøre. Det virker lige måske lidt uoverskueligt/besværligt, men tag det skridt for skridt. :)
Stil endelig spørgsmål!
Mvh. Mikkel
P.S.: Det kan jo være jeg har været uheldig at lave nogle tastefejl i kodestumperne, så tjek dem evt. lige igennem selv inden du fortvivler over mystiske fejl! :)
Jeg gik i gang med dine svar i går, men fik ikke tid til at gennemgå det hele. Kigger på det senere i dag. Jeg lægger også en mail til dig senere. Min nye bedste ven :o)
Jeg har haft dårlig samvittighed; jeg har været ude at sætte pc'ere op og ikke været meget hjemme.
Jeg regner med at jeg i løbet af i morgen får fulgt dine anvisninger. Jeg har det også dårligt med, at jeg ikke har fået prøvet det af endnu, det er jo spændende :o)
Jeg regner som sagt med at få kigget seriøst på det i morgen formiddag. Bedste ven :o)
jeg var sådan set bare nysgerrig, og ville gerne høre om, hvad jeg havde skrevet kunne bruges til noget... det var ikke min mening at skynde på dig :) Tag dig god tid!
1) frm_debatsvar.asp bliver som du siger inkluderet i debatemne.asp, men bruger du også debatemne.asp til at oprette hoveddebatemner?
2) emneID skal være primary key og af typen autonummer i tabellen "debat".
3) post_parent skal være obligatorisk i tabellen "debat", hvis du ikke allerede har gjort det, og så skal du også sætte dens standard-værdi til at være 0.
4) Hvilket program benytter du til at kode ASP (og HTML for den sags skyld)?
1) Nej, jeg bruger (vil bruge) frm_debat.asp til nyt debatoplæg, og frm_debatsvar.asp til at besvare med. Jeg inkluderer frm_debatsvar.asp på debatemne.asp
2)emneID er også primary key og af typen autonummer i tabellen "debat".
3) post_parent er obligatorisk i tabellen "debat". Når jeg kigger i tabellen "debat", står der "0" (nul) ud for alle indlæg?
4) Jeg benytter mest NotePad. Kan godt ty til FrontPage 2000, hvis jeg skal oprette tabeller o.lign. Jeg er udemærket klar over, at eksempelvis FP kan finde på at generere noget uhensígtsmæssig kodning. Og meget på vagt over for det :o)
3) du kan se om feltet er obligatorisk og om feltets standardværdi er 0, ved at gå i design-mode i Access. Så kan du herefter klikke på feltet "post_parent" og kigge i bunden af vinduet, hvor der står div. egenskaber for feltet såsom "Required" ("Obligatorisk" på dansk, mener jeg). Denne egenskab skal stå til "True"/"Sandt", og egenskaben "Default value"/"Standardværdi" skal være 0. :)
hvad er det for nogle artikler du nævner? er ovenstående sider dine? og hvad skal jeg gøre med dem?
inden jeg går ud i en længere forklaring på dit spm. vedr post_parent/emneID, skal jeg lige høre om du ikke forstår hvordan det gøres kodemæssigt, eller om du bare generelt ikke forstår meningen i post_parent og feltets sammenhæng med emneID (eller begge dele? :).
1. Jeg har en idé om, hvordan det skal kodes. Men en idé er ikke altid nok, så nej, jeg ved ikke hvordan det skal kodes.
2. Jeg forstår godt, at evt. besvarelser på f.eks. emneID=100 skal knyttes til emneID=100. Men så er vi tilbage til ved 1 igen :o/ 2A. En bruger opretter et emne 2B. Brugerens emne er tilfældigvis nr. 100 i databasen, og får derfor tildelt emneID 100. 2C. Jeg vil gerne kommentere brugerens emne. For at databasen skal kunne vide hvilket emneID jeg ønsker at knytte min besvarelse til, skal jeg i koden angive hvilket emneID min besvarelse skal knyttes til (lidt søgt forklaring?).
PS: Ovenstående artikler er hentet forskellige steder fra nettet og lagt på som fyld.
Ja, de ovenstående sider er mine. Jeg håbede du kunne se hvor det går galt. Går galt gør det ikke, for der er ikke nogen forbindelse mellem emne/post_parent overhovedet :o)
Helt fint! Tillykke til hende! :) Du skriver bare når du får tid/lyst!
Vedr 2C .. du har vist fat på det! som du siger skal du i koden (og i databasen) angive hvilket emneID en besvarelse skal knyttes til, ved hjælp af post_parent. (bare lige for at skære det ud, men som sagt ser det ud til at du har fat i det).
Det er et spørgsmål om hele tiden at videreføre det emneID du arbejder med. (tag dig ikke af, jeg måske bruger de forkerte filnavne :) Når du vil besvare et emne henviser du jo til "frm_debatsvar.asp?emneID=100" (altså det videreføres fra lst_debat.asp). I frm_debatsvar.asp lægger du emneID'et fra QueryString'en ind i et hidden input-felt (som beskrevet i et af mine tidligere svar), og når formen submit'es, videresendes det på denne måde endnu en gang til siden, hvor du indsætter besvarelsen i databasen. I denne SQL-streng sætter du så bare den nye besvarelses post_parent til at være lig det længe videreførte emneID. :)
en lidt kringlet forklaring, og du skal endelig spørge, hvis det stadig forekommer lidt sløret for dig.
jeg vil kigge dine sider igennem når jeg får tid (måske ikke idag). det er jo et større arbejde! :) Men hvordan kan det være du også har extract.asp med? virker den heller ikke efter hensigten?
1) i frm_debatsvar.asp: fjern alle steder, hvor der står id="input". det kan bare skabe problemer senere hen.
2) hvorfor har du to sider (debat_besvar.asp) og del 1 af debatemne.asp (se i dine posteringer ovenfor) til at indsætte besvarelser? hvilken af dem bruger du?
Som sagt, så er der ikke noget af det der er færdigt, og der mangler måske et par ting hist og her. Der mangler ihvertfald noget relation emneID/post_parent imellem :o)
hvad jeg gerne vil vide er, hvorfor har du begge disse sider/koder til at indsætte en besvarelse i databasen ... hvilken af dem bruger du?
vedr id="input": egenskaben "id" er bare en måde at navngive et element på -- ligesom "name". jeg har aldrig rigtig fundet ud af hvad fordelen ved at bruge "id" istedet for "name" kunne være. men hvad jeg ved er, at det er aldrig klogt at give alle elementerne samme navn/id, da browseren/ASP så ikke kan kende det ene element fra det andet. jeg ved det virker fint, når du sidder og tester det, men det er altid godt at være på den sikre side, hvis der skulle komme software, som altså ikke kan finde ud af det. Hvis du meget gerne vil benytte "id"-egenskaben, skal du i det mindste ændre denne til det samme som navnet på elementet -- altså fx:
Jeg tager lige id=input først, det er fra mit stylesheet (textbokse, drop-dwns etc.):
#input { BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-RIGHT: black 1px solid; BORDER-TOP: black 1px solid; FONT-FAMILY: Verdana, Helvetica, Arial; FONT-SIZE: 10px }
Men det er ikke værre, end at jeg ændrer navnet "input" til noget andet, det er hurtigt gjort.
Kan du huske, at jeg fortalte dig, at jeg havde fået hjælp fra en ven? Det kan være, at jeg ikke har fået ryddet ordentligt op. Det vil jeg gå igennem og vende tilbage senere. Du har højst sandsynligt ret :o)
okay.. så det er stylesheet du arbejder med. Istedet for at skrive id="input" skriver du: class="input" og i dit stylesheet ændrer du #input til .input det burde hjælpe! :)
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.