Avatar billede hehlers Nybegynder
25. september 2003 - 09:13 Der er 13 kommentarer og
1 løsning

' i database

Heysa

Jeg har et system som opdaterer en masse felter i en database. Jeg har så det klassiske problem med (') i en sql database.

Jeg vil gerne have at der hvor man updater tjekker den alle felter for '. Og det skal så istedet for laves om til ''. Dvs. hvis folk skriver ' i et felt, så blivr det lavet om til '' i databasen.
Avatar billede Slater Ekspert
25. september 2003 - 09:15 #1
Replace(expression, find, replacewith[, start[, count[, compare]]])

Kør den idet du sætter teksten ind i databasen.

Og er det ikke smartere at oversætte ' med ´ i stedet for " ?
Avatar billede keysersoze Ekspert
25. september 2003 - 09:16 #2
lav en erstatning;

VAR = replace(request.form("dinform"),"'","'')

den erstatter ' med to '' og så virker det hele som det skal
Avatar billede snowball Novice
25. september 2003 - 09:17 #3
Avatar billede hehlers Nybegynder
25. september 2003 - 09:26 #4
Ok, jeg kan godt se princippet i det, men jeg har jo en lang række forms, hvor det skal gælde for dem alle. - Kan man ikke lave noget generelt istedet for at skulle indsætte funktion for hver form? ;)
Avatar billede squashguy Nybegynder
25. september 2003 - 10:40 #5
du kan lave en funktion..

function safesql(str)
  safesql = Replace(str, "'", "''")
end function

envar = safesql(request.form("formvar"))
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 17:37 #6
hvis du i fremtiden skal tilføje og/eller fjerne felter, kan du muligvis bruge javascript til at loope igennem felterne og lave et array som asp opfanger.. derefter har du en loop (i asp) der automatisk fixer '-problemet ved at løbe igennem array'et..

det er måske lidt for svært.. :)
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 18:17 #7
..laver lige et eksempel..
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 18:56 #8
<%
dim i, tmp
if request.form("arrayen") <> "" then

    arrForms = split(request.form("arrayen"), ",")
    for i = LBound(arrForms) to UBound(arrForms)
        response.write replace(arrForms(i), "'", "''") & "<br>" & vbcrlf
        arrF_ = replace(arrForms(i), "'", "''")' & "<br>" & vbcrlf
    next



response.write "<a href='index.asp'>prøv igen</a>"
else%>

    <form name="formTest" method="post" action="index.asp" onSubmit="check(); //return false;">
    <input type="text" name="felt1" value="1'2'">
    <input type="text" name="hugo" value="mu'">
    <input type="text" name="hest" value="ha'">
    <input type="text" name="mus" value="'ha">
    <input type="text" name="bil" value="h'a">
    <input type="hidden" name="arrayen" value="">
    <input type="submit" name="submit" value="Send">
    </form>

    <script language="JavaScript">
    function check()
    {
    {
    var el; el = document.forms['formTest'].elements;
    var arrFelter; arrFelter = '';
    for(i=0;i<el.length;i++){
      if(el[i].type=="text"){
        //udfør tjeck
        arrFelter = arrFelter + el[i].value + ",";
        }
      }
  alert(arrFelter);
    document.forms['formTest'].arrayen.value=arrFelter;
    }
    }
    </script>
<% end if %>
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 18:56 #9
jeg prøver lige at se om jeg kan lave et eksempel som automatisk tildeler de forskellige værdier en variabel..
Avatar billede thesurfer Nybegynder
05. oktober 2003 - 19:38 #10
ok.. det er vist lidt svært det her..
et spm til de kloge: kan man tage værdien af en variable, og bruge værdien SOM en variable?
eksempel: x = "felt1", kan man så få fat på "felt1" så man kan bruge felt1 = "noget tekst" ?
Avatar billede thesurfer Nybegynder
15. oktober 2003 - 12:57 #11
du kan bruge en array, og en loop.. det gøres sådan her:

dim var
var = ""
for each item in request.form
var = var & replace(request.form(item), "'", "''") & ";"
next

det skulle gerne vist gerne lave en array hvor den erstattet "'" med "''"

når du så skal opdatere database, splitter du arrayen ved ";":
arrForms = split(var, ";")

se url: http://html.dk/tutorials/asp/lektion8.asp (arrays)

hvis felterne IKKE må være tomme kan du bruge:

dim var
dim OK
var = ""
OK = true

for each item in request.form
var = var & replace(request.form(item), "'", "''") & ";"
if request.form(item) = "" then OK = false
next

if OK = false then
response.write "Du SKAL udfylde alle felter"
' hvis alle felterne så brugeren kan udfylde dem igen
else
' opdater databasen med sql strengen osv..
end if
Avatar billede thesurfer Nybegynder
15. december 2003 - 17:04 #12
feedback..
Avatar billede hehlers Nybegynder
17. december 2003 - 08:27 #13
aha, har fundet ud af det, men synes godt nok at du fortjener point, for det sidste kunne jeg også bruge.

Tusind tak surfer. ;)
Avatar billede thesurfer Nybegynder
17. december 2003 - 16:23 #14
Takker for points.
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
Kurser inden for grundlæggende programmering

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