Avatar billede 44fire44 Nybegynder
06. december 2013 - 07:43 Der er 14 kommentarer og
1 løsning

Forkert data postes i DB ved update

Hej eksperter

Jeg har en række checkbokse som jeg opdaterer på følgende måde:

<%
if rst("LanguageFI") = 1 then

response.write("<input id=""FIoff"" type=""hidden"" name=""LanguageFI"" value=""0""><input id=""FI"" type=""checkbox"" name=""LanguageFI"" value=""1"" checked>")
    else
response.write("<input id=""FIoff"" type=""hidden"" name=""LanguageFI"" value=""0""><input id=""FI"" type=""checkbox"" name=""LanguageFI"" value=""1"">")
    end if               
%>

derefter har jeg lagt et script ind som skulle forhindre at der i databasen bliver skrevet "0, 1" såfremt at en checkboks ændres:

<script>
if(document.getElementById("FI").checked){
document.getElementById('FIoff').disabled = true; }
</script>

- men databasen bliver stadig tilskrevet med "0, 1" istedet for enten "1" eller "0" - Hvor har jeg lavet en fejl?
Avatar billede 44fire44 Nybegynder
06. december 2013 - 08:00 #1
- eller er der en anden måde at automatisk kan få tilskrevet 0 i databasen hvis der ikke vælges noget?
Avatar billede keysersoze Guru
06. december 2013 - 08:02 #2
Hvorfor i det hele taget have et hidden felt?
Avatar billede 44fire44 Nybegynder
06. december 2013 - 08:06 #3
- hvis jeg ikke har et hiddenfelt, så bliver inputtet i databasen tomt fremfor at tilskrive 0
Avatar billede keysersoze Guru
06. december 2013 - 08:06 #4
Under normale omstændigheder er der vel ikke behov for at gemme at noget ikke er valg - så hvorfor gemme 0?
Avatar billede 44fire44 Nybegynder
06. december 2013 - 08:10 #5
Resultatet skal være 1/0 = Ja/Nej
Avatar billede 44fire44 Nybegynder
06. december 2013 - 08:20 #6
- det er en gammel access database. Kan jeg lave et workaround der sætter value til at være 0 såfremt at der er unchecked?
Avatar billede lordnelson Seniormester
06. december 2013 - 08:33 #7
Kan du ikke bare sætte default værdi til nul , og hvis der kommer noget er den 1
men bortset fra det så giver du samme felt 2 værdier hver gang i dit script.
response.write("<input id=""FIoff"" type=""hidden"" name=""LanguageFI"" value=""0""><input id=""FI"" type=""checkbox"" name=""LanguageFI"" value=""1"" checked>")

Kan være dit Id er forskelligt men dit navner ikke !!
Begge stdet hedder feltet name=""LanguageFI""

Så skal du jo få 0, 1
Avatar billede 44fire44 Nybegynder
06. december 2013 - 08:45 #8
men hvad så hvis jeg ændrer værdien efterfølgende? - fra 1 til 0 fx? - hvis jeg gemmer den unchecked uden at lave hidden felt foran så bliver værdien tom igen
Avatar billede 44fire44 Nybegynder
06. december 2013 - 09:04 #9
Jeg forsøger mig nu med en True/False løsning istedet

<%
if rst("LanguageDK") = True then
response.write("<input type=""checkbox"" name=""LanguageDK"" value=""True"" checked>")
else
response.write("<input type=""checkbox"" name=""LanguageDK"" value=""True"">")
end if
%>

- men når jeg Submitter formen får jeg fejl med datatype mismatch

Microsoft JET Database Engine error '80040e07'
Data type mismatch in criteria expression.
/ExecuteSaveUpdate.asp, line 18


- linje 18 er min DB statement:
SET tabel=DbObj.Execute("INSERT INTO databasenavn (LanguageDK, LanguageSE, LanguageEN, LanguageDE, LanguageNL, LanguageFI) VALUES ('" & request.form("LanguageDK") & "','" & request.form("LanguageSE") & "','" & request.form("LanguageEN") & "','" & request.form("LanguageDE") & "','" & request.form("LanguageNL") & "','" & request.form("LanguageFI") & "')")

i Access databasen har jeg lavet feltet om til Yes/No - True/False
Avatar billede keysersoze Guru
06. december 2013 - 09:28 #10
Men hvorfor i det hele taget gemme data unødigt? Hvis du ikke har valgt noget gemmes ingen række overhovedet - og har du endelig behov for at ja/nej valg så benyt en datatype designet til formålet, nemlig en bool.
Avatar billede 44fire44 Nybegynder
06. december 2013 - 09:35 #11
Jeg fandt et alternativ. Lukker spm igen
Avatar billede keysersoze Guru
06. december 2013 - 09:37 #12
Og det blev?
Avatar billede keysersoze Guru
06. december 2013 - 11:16 #13
$(document).ready(function() {
  console.log('når vi hertil?')
  if ( !("placeholder" in document.createElement("input")) ) {
    console.log('min vi når hertil?')
    ..
  }
}
Avatar billede keysersoze Guru
06. december 2013 - 11:17 #14
Forkert tråd - men derfor er det stadig interessant hvordan du løste det.
Avatar billede 44fire44 Nybegynder
07. december 2013 - 14:00 #15
Jeg nøjedes med at kalde alle checkbokse det samme så den istedet for value 0, 1 tilskrev den med "Dansk, Engelsk" osv - det skulle være en hurtig løsning og det blev så denne.
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

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