Avatar billede steen_hansen Forsker
30. april 2006 - 16:09 Der er 38 kommentarer og
1 løsning

Hvilket dataformat?

Jeg giver brugeren et textarea, som der kan indtastes i (max. 2000 karakterer).

- Vælger jeg TEXT, bliver der ikke trukket noget ud.
- Vælger jeg BLOB, som phpMyAdmin foreslår, bliver der ganske enkelt ikke trukket noget ud af databasen.

Hvad skal der vælges?
Avatar billede steen_hansen Forsker
30. april 2006 - 16:10 #1
"bliver der ganske enkelt ikke trukket noget ud af databasen" = står der ikke noget på skærmen. Til gengæld er der heller ingen fejlmeddelelser.
Avatar billede erikjacobsen Ekspert
30. april 2006 - 16:41 #2
TEXT er et fint valg, og det virker selvfølgelig. Til gengæld kan du have lavet fejl i din kode.
Avatar billede steen_hansen Forsker
30. april 2006 - 16:43 #3
Jeg tror også ved nærmere eftertanke, at det er dér hunden ligger begravet. Jeg finder lige den formattering, der anvendes på de udtrukne data.
Avatar billede steen_hansen Forsker
30. april 2006 - 17:06 #4
Der er gået noget galt et eller andet sted. Nogen gode idéer til hvordan jeg får det trukket rigtigt ud?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 17:14 #5
Svært at sige ud fra de givne oplysninger.
Avatar billede steen_hansen Forsker
30. april 2006 - 17:16 #6
Ok, men hvis du skulle lave det til dig selv, hvordan ville du gøre det?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 17:18 #7
Jeg vil gøre det på samme måde som med alle andre felter. Jeg tror vi snakker forbi hinanden: du får ingen hjælp (af mig) hvis du ikke viser den relevante kode.
Avatar billede steen_hansen Forsker
30. april 2006 - 17:28 #8
Function FormatText(strHTML)
    Dim str
    str = Server.HTMLEncode(strHTML)

    'Make the regular expr. object
    Set objRegExp = New RegExp
    objRegExp.IgnoreCase = True
    objRegExp.Global = True
    'objRegExp.Multiline = True

    'Replace trailing spaces with " "
    objRegExp.Pattern = "(\s) "
    str = objRegExp.Replace(str,"$1 ")

    'Link automatic converter:
    objRegExp.Pattern = "(\bhttp\:\/\/)?(\bw{3}\.\S+\.[a-z][a-z]+\b)(\/\S+\b)?(\?\S+\b)?"
    str = objRegExp.Replace(str, "<a target='_blank' href='http://$2$3$4'>$1$2$3$4</a>")

    'Mail automatic converter:
    objRegExp.Pattern = "(\S+@{1}\S+\.[a-z][a-z]+\b)"
    str = objRegExp.Replace(str, "<a target='_blank' href='mailto:$1'>$1</a>")

    Set objRegExp = Nothing

    FormatText = Replace(str,vbNewLine,"<br>")
End Function

Set RS = Conn.Execute("SELECT mailID, author, recipient, subject, message, sent FROM backendusersmail WHERE owner = '" & SQLEncode(Session("username")) & "' AND mailID = " & vID & " ORDER BY sent")

<% If RS("message") <> "" Then %>

<%=FormatText(RS("message"))%>
Avatar billede steen_hansen Forsker
30. april 2006 - 17:28 #9
Med <%=FormatText(RS("message"))%> får jeg virkelig noget ud, der ligner kinesisk.
Avatar billede steen_hansen Forsker
30. april 2006 - 18:11 #10
Prøv at smide dette ind i dokument og se hvad det bliver til:

&#25924;&#29812;&#8293;&#29285;&#25888;&#8302;&#25972;&#29811;

I databasen står det fint nok, så det er mig, der får trukket det ud på en forkert måde.
Avatar billede steen_hansen Forsker
30. april 2006 - 18:12 #11
Er det Server.HTMLEncode(RS("message")) el.lign. der skal bruges?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 19:58 #12
I din FormatText bør du nok slutte med Server.HTMLEncode i stedet for at starte med den.

Hvad står der i din database? Hvad udskriver den uden formattering?
Avatar billede steen_hansen Forsker
30. april 2006 - 20:01 #13
Det er en slags beskeder, man kan sende internt til hinanden, istedet for at bruge mail. Og det kan jo indeholde links og e-mailadresser.

Tror du det er nok at flytte det ned i bunden? Jeg prøver lige ...
Avatar billede erikjacobsen Ekspert
30. april 2006 - 20:06 #14
Nej, jeg kan se det ikke er en god idé at flytte den. Sorry.

Men hvilken konkret tekst står der i et felt i tabellen, og hvordan ser det ud hvis du skriver det ud direkte?
Avatar billede steen_hansen Forsker
30. april 2006 - 20:22 #15
Hvis jeg ikke benytter noget, kommer der en masse spørgsmålstegn ud nu:

Dette er en test.

bliver til

????????.


Mærkeligt nok sker der ikke noget med emneteksten, og til den benytter jeg <%=FormatText(RS("subject"))%>
Avatar billede steen_hansen Forsker
30. april 2006 - 20:30 #16
- og forøvrigt, så står der "Dette er en test." i DB. Så det bliver gemt fint nok. Det bliver jo så også hevet fint ud, men vist forkert på siden.
Avatar billede steen_hansen Forsker
30. april 2006 - 20:31 #17
Jeg har en mistanke om, at det er kombinationen af datatype og formatteringen af teksten, når den bliver skrevet ud på siden. Er det helt hen i vejret?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 20:41 #18
Hvad er "collation" i din tabel, og felt? Bør jo være noget i retning af latin1_danish_ci
Avatar billede steen_hansen Forsker
30. april 2006 - 21:39 #19
Hm? Hvor ser jeg det? Der er ikke problemer med det andet, jeg har lavet. Men dette her giver pludselig problemer, og det forstår jeg ikke. Jeg har lavet et subdomæne i en anden anledning, og der fungerer det hele fint.
Avatar billede erikjacobsen Ekspert
30. april 2006 - 21:48 #20
Du siger du bruger phpmyadmin - der kan du se det. Det er jo bestemt ikke sikkert, at det er derfor.
Avatar billede steen_hansen Forsker
30. april 2006 - 21:51 #21
Jeg kan ikke lige finde hvor det står, men den håndterer det danske tegnsæt ganske fint og uden problemer. Så jeg tror ikke det er problemet.

Hvis du skulle lave noget tilsvarende (ASP), hvordan ville du lave det? Det skal v.hj.a. Regular Expressions kunne håndtere det samme som det ovenstående script.
Avatar billede erikjacobsen Ekspert
30. april 2006 - 21:51 #22
Og skal vi ikke også lige høre hvor du afvikler det?
Avatar billede steen_hansen Forsker
30. april 2006 - 21:52 #23
30/04-2006 17:28:08
Avatar billede steen_hansen Forsker
30. april 2006 - 21:53 #24
Hvad mener du, hvor jeg afvikler det? Hvis det er et link, så er det beskyttet v.hj.a. sessions :o/ Kan jeg kontakte dig via din e-mail?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 21:56 #25
Det var mere hvilket webhotel, eller egen server, eller ....
Hvis du sender noget til min email, så læser jeg det nok en gang i ugens løb ;) Lad os nu bare fortsætte her.
Avatar billede steen_hansen Forsker
30. april 2006 - 21:59 #26
Ok :)

Det ligger hos concor.dk
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:04 #27
Ok, det går nok så.  Lad os lave et par små test. Først

Set RS = Conn.Execute("SELECT message FROM backendusersmail WHERE owner = '" & SQLEncode(Session("username")) & "' AND mailID = " & vID & " ORDER BY sent")

<%= RS("message")%>

Indsæt et kendt brugernavn etc, så der er en message. Og vis os hvad der står på siden i "vis kilde"
Avatar billede steen_hansen Forsker
30. april 2006 - 22:10 #28
Det gav en fejl:

[MySQL][ODBC 3.51 Driver][mysqld-4.0.18-nt]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY sent DESC' at line 1
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:11 #29
Der skal nok lige være en værdi for vID.
Avatar billede steen_hansen Forsker
30. april 2006 - 22:11 #30
Sorry, jeg klumrede i det, forkert dokument. Øjeblik ...
Avatar billede steen_hansen Forsker
30. april 2006 - 22:18 #31
Ok, det kan jeg ikke umiddelbart, fordi det vil få indflydelse på andre scripts. Men jeg bibeholder den oprindelige linie, hvis det er ok? Du har kun taget message ud af DB istedet for mailID, author, recipient, subject og sent?

I så fald får jeg de sædvanlige ?-tegn.
Avatar billede steen_hansen Forsker
30. april 2006 - 22:20 #32
subject gemmes som VARCHAR, hvor message gemmes som BLOB. Det er ikke her det går galt?
Avatar billede steen_hansen Forsker
30. april 2006 - 22:23 #33
Erik, nu er den der sq! Ser lige hvad der har forårsaget det.
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:23 #34
TEXT er det naturlige valg. Det er med vilje jeg kun siger SELECT message FROM ...
Du skal bare lave en ny .asp fil til eksperimentet, det vil ikke få indflydelse på noget andet.

Så skal vi to videre skal du lave feltet om til TEXT.
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:24 #35
"Så skal vi to videre skal du lave feltet om til TEXT."  ... med mindre du har fået det til at virke som BLOB.
Avatar billede steen_hansen Forsker
30. april 2006 - 22:30 #36
Det var netop fordi det blev lavet om til TEXT. Men det havde jeg ellers prøvet, hvor der ikke kom noget ud på siden. Anvendte jeg BLOB, fik jeg de kinesiske tegn ....?

Uanset hvad der har forårsaget det, så virker det nu. Jeg er godt klar over, at det er mig, der fejler, og ikke scripts eller DB. Men det virkede ikke før, og det gør det så nu.

Jeg har før oplevet, at CSS ikke har virket den ene dag. Når jeg begyndte at kigge på det næste morgen, og ville til at fejlsøge, var det så gået i orden. Jeg har af en anden bruger herinde fra fået at vide, at det sagtens kan skyldes, at de bruger serveren som filserver også. Og hvis der er noget, der hænger på en Windows-server, kan det vel også på indflydelse på web'en? Og det er måske også det samme i dette tilfælde?
Avatar billede steen_hansen Forsker
30. april 2006 - 22:33 #37
Og det virker forøvrigt med <%=FormatText(RS("message")) nu.

Du samler stadig ikke på point?
Avatar billede erikjacobsen Ekspert
30. april 2006 - 22:35 #38
Det lyder godt. Jeg var på vej mod en helt anden ting, der kunne tænkes at være galt, men ligemeget med det. Ja, filsystem og webserver på Windows kan sommetider virke som viklet for meget ind i hinanden - træls man ikke bare kan genstarte når man har lyst.
(PS Og ingen point til mig, tak)
Avatar billede steen_hansen Forsker
30. april 2006 - 22:39 #39
Ok. Erik, du er en kammerat. Hvor kunne det være lækkert, hvis det pointsystem blev afskaffet. Jeg har sjældent set et system, der har været anledning til så meget ævl og kævl som det. Du skal have mange tak ... igen :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester