webForumDet fria alternativet

Har jag blevit glömsk?

ASP

16 svar · 518 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1
  warhammer = request("warhammer")
  computer = request("computer")

  if computer = false and warhammer = false then
    response.write "<tr class=""mess3""><td>Du måste göra något på lan:et</td></tr>"
    response.end
  end if

  SQL = "Select username,id from users where username = '" & vnamn &"'"
  set recset = databas.execute(SQL)
  id = recset("id")
  recset.close
  set recset = nothing

  SQL = "SELECT * FROM lan"
  set recset = databas.execute(SQL)
    do until recset.eof
    usern =recset("username")
    vilket_lan = recset("vilket_lan")
      if (usern = id) AND datediff("d",vilket_lan,nextlan2) = 0 then
        response.write "Du är ju redan med!"
        response.end
      end if
    recset.movenext
    loop

if warhammer = "" then
warhammer = "false"
end if

if computer = "" then
computer = "false"
end if

  SQL = "INSERT INTO lan "
  SQL = SQL & "(username, betalt, warhammer,dator, vilket_lan) "
  SQL = SQL & "VALUES('" & id & "', false, " & warhammer & ", " &computer& ", #" &nextlan2& "#)"
  response.write SQL
  databas.Execute SQL
  response.redirect "list.asp"

Höll på med denna kod ett bra tag.. det är SQL satsen som jag är lite fundersam på.. om jag har en checkbox som jag inte kryssa i så "bör" den väll bli False.. men som ni ser måste jag ge warhammer och Computer false längst ner för att SQL:en vill köra.. detta tror jag inte jag har behövt innan.. vad har jag gjort för fel?

jag tycket denna kod är otroligt klumpig(har prov imorgon så min förklaring är att jag inte har haft all tid) :D

Medlem sedan dec. 200012 464 inlägg
#2

Allt i collections i request är strängar.

Om du vill testa om en checkbox inte är ikryssad.

if len(request.form("warhammer")) = 0 then
SQL = "SELECT * FROM lan"
  set recset = databas.execute(SQL)
    do until recset.eof
    usern =recset("username")
    vilket_lan = recset("vilket_lan")
      if (usern = id) AND datediff("d",vilket_lan,nextlan2) = 0 then
        response.write "Du är ju redan med!"
        response.end
      end if
    recset.movenext
    loop

lägg villkoren i select-satsen och ta bort loopen.

Medlem sedan jan. 20032 285 inlägg
#3
If warhammer = "" Then
  warhammer = False
End If

If computer = "" Then
  computer = False
End If

Eftersom du hade gjort booleerna till stängar innan kan SQL-tolken inte tolka frågan eftersom du inte lagt variablerna warhammer och computer innanför ' '. (Kanske lite flummigt förklarat?)

Medlem sedan juni 20019 519 inlägg
#4
if request.querystring("function") = "signup" then

  if request("warhammer") = false and request("computer") = false then
    response.write "<tr class=""mess3""><td>Du måste göra något på lan:et</td></tr>"
    response.end
  end if

  SQL = "Select username,id from users where username = '" & vnamn &"'"
  set recset = databas.execute(SQL)
  id = recset("id")
  recset.close
  set recset = nothing

  SQL = "SELECT * FROM lan where username = " &id& " and vilket_lan = #" &nextlan2& "#"
  set recset = databas.execute(SQL)
  if recset.eof then
  SQL = "INSERT INTO lan "
  SQL = SQL & "(username, betalt, warhammer,dator, vilket_lan) "
  SQL = SQL & "VALUES('" & id & "', false, " & request("warhammer") & ", " &request("computer")& ", #" &nextlan2& "#)"
  response.write SQL
  'databas.Execute SQL
  'response.redirect "list.asp"

  else
  response.write "Du är ju redan med på LAN:et!"
  response.end
  end if

end if

Lite kortare nu.. men fortfarande '' på warhammer och computer.. SQL satsen om jag skriver ut med warhammer "true":

INSERT INTO lan (username, betalt, warhammer,dator, vilket_lan) VALUES('1', false, on, , #2003-04-21#)
Medlem sedan nov. 20017 144 inlägg
#5

Skall id vara en sträng?

Medlem sedan juni 20019 519 inlägg
#6

nej... men detta hjälper inte mitt problem :e

Medlem sedan nov. 20017 144 inlägg
#7

Vad är problemet då?

Medlem sedan juni 20019 519 inlägg
#8

True/false saken i <input type="checkbox"> tror jag:

  <tr>
    <td>Warhammer:</td>
    <td><input type="checkbox" name="warhammer"></td>
  </tr>
  <tr>
    <td>Datorn:</td>
    <td><input type="checkbox" name="computer"></td>
  </tr>

den vill inte göra om dessa till "true/false" antingen blir den "on" eller "" :(

Medlem sedan jan. 20032 285 inlägg
#9

Funkar det inte bara med en Case-sats?

computer = CStr(Request.Form("computer"))
warhammer = CStr(Request.Form("warhammer"))

Select Case computer
  Case "on"
    computer = True
  Case ""
    computer = False
End Select

Select Case warhammer
  Case "on"
    warhammer = True
  Case ""
    warhammer = False
End Select
Medlem sedan nov. 20017 144 inlägg
#10

Typkonvertera kanske:

if cBool(request("warhammer")) = false and cBool(request("computer")) = false then

Case, varför...värkar jobbigt?

Medlem sedan jan. 20032 285 inlägg
#11

Jesper T skrev:

Typkonvertera kanske:

if cBool(request("warhammer")) = false and cBool(request("computer")) = false then

Eftersom värderna från formulären blir antingen "on" eller "" är det väl tveksamt om det funkar? Eller?

Medlem sedan nov. 20017 144 inlägg
#12

Etta eller nolla borde också gå:

if cBool(request("warhammer")) = 0 and cBool(request("computer")) = 0 then
Medlem sedan juni 20019 519 inlägg
#13

Jesper: allt stämmer förutom SQL satsen...

  if request("warhammer") = false and request("computer") = false then

Även denna stämmer... fast det är på SQL satsen den inte vill ha något värde :(

Medlem sedan nov. 20017 144 inlägg
#14

Och det funkar inte att skriva in där då?

SQL = "INSERT INTO lan "
  SQL = SQL & "(username, betalt, warhammer,dator, vilket_lan) "
  SQL = SQL & "VALUES('" & id & "', false, " & cBool(request("warhammer")) & ", " & cBool(request("computer")) & ", #" &nextlan2& "#)"
Medlem sedan juni 20019 519 inlägg
#15

Feltyp:
Körningsfel i Microsoft VBScript (0x800A000D)
Inkompatibla typer: 'cBool'

:(

Medlem sedan juni 200032 967 inlägg
#16

Ett litet trick man kan ta sig för är att sätta value på sina checkboxar till 1, och sedan använda len() i sin SQL-fråga:

SQL = "INSERT INTO lan "
  SQL = SQL & "(username, betalt, warhammer,dator, vilket_lan) "
  SQL = SQL & "VALUES('" & id & "', false, " & Len(request("warhammer")) & ", " & Len(request("computer")) & ", #" &nextlan2& "#)"

Då har du 0 när det inte är ikryssat, och 1 när det är det, och det borde väl vara helt okej istället för true / false?

mvh

Medlem sedan juni 20019 519 inlägg
#17

tackar snabel :e visste att du hade koll :e

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)