webForumDet fria alternativet

request("status") <> "" (dålig rubrik....)

ASP

10 svar · 256 visningar · startad av devotion

Medlem sedan jan. 20013 582 inlägg
Frågan#1

Hej!
har följande kod för att visa uppdrag i en listmeny. Checkboxarna begränsar urvalet genom att ändra where-villkoret.

<%
Dim objRS, objConn, strSQL, strStatus

If request("status") <> "" then
	strStatus = request("status")
Else
	strStatus = "0,1,2,3,4,5"
End If

Response.write "<br>" & strStatus

Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=uppdragNu"
objConn.Open 

strSQL = "SELECT DISTINCT * " &_
		 "FROM tblTask " &_
		 "WHERE status in (" & strStatus & ") " &_
		 "ORDER BY taskNr"
		 
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn, 3, 1
%>
<form name="chooseStatus" method="post" action="chooseTask.asp">
	<table width="500" border="0" cellspacing="0" cellpadding="0">
	  <tr>
		<td width="67">Planerade</td>
		<td width="24"><input name="status" type="checkbox" id="planned" onClick="this.form.submit();" value="0" <%  If instr(request("status"), "0") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
		<td width="74">Utskickade</td>
		<td width="25"><input name="status" type="checkbox" onClick="this.form.submit();" value="1" <%  If instr(request("status"), "1") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
		<td width="64">Mottagna</td>
		<td width="25"><input name="status" type="checkbox" onClick="this.form.submit();" value="2" <%  If instr(request("status"), "2") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
		<td width="64">P&aring;g&aring;ende</td>
		<td width="18"><input name="status" type="checkbox" onClick="this.form.submit();" value="3" <%  If instr(request("status"), "3") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
		<td width="42">Klara</td>
		<td width="15"><input name="status" type="checkbox" onClick="this.form.submit();" value="4" <%  If instr(request("status"), "4") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
		<td width="33">Fakt</td>
		<td width="49"><input name="status" type="checkbox" onClick="this.form.submit();" value="5" <%  If instr(request("status"), "5") <> "0" or request.form = "" then response.Write "checked" End if%>></td>
	  </tr>
	</table>
</Form>
<form name="chooseTaskForm" method="post" action=""><p><select name="taskList" size="10" id="TaskList">
      <% Do until ObjRS.EOF %>
      <option value="<% =objRS("TaskNr")%>">
      <% =objRS("TaskNr") & " " & objRS("customerName") & " "%>
      <%If Len(objRS("task")) > 30 then
	Response.Write left(objRS("task"),27) & "..."
Else
	Response.write objRS("task")
End If%> 
      </option>
      <% objRS.Movenext %>
      <% Loop %>
    </select>
    
<%
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
%>
  </p>
  <p>
    <input name="choose" type="button" id="choose" onclick="makeChoice( this );" value="Välj!">
</p>
</form>
</body>
</html>

För att alla checkboxar ska vara ifyllda och att alla poster ska visas när fönstret öppnas har jag följande kod (ingår i koden ovanför)

If request("status") <> "" then
	strStatus = request("status")
Else
	strStatus = "0,1,2,3,4,5"
End If

sen är tanken att man ska kunna begränsa urvalet genom att klicka bort checkboxarna. Det funferar ju fint till dess att man avmarkerat samtliga checkboxar. Då blir ju request("status") "" och alla poster visas i stället för inga. Jag fattar varför det blir så, men kan man göra på nått annat sätt???

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#2

Med lite betänketid så kan man nog göra på något annat sätt, men en snabb lösning vore att lägga med ett hidden-fält som heter "status", innehållande något. Därmed blir aldrig request("status") tom när du submittar.

Medlem sedan jan. 20013 582 inlägg
#3

hmmm går verkligen det? Checkboxarna heter ju "status"

och

"><input name="status" type="checkbox" id="planned" onClick="this.form.submit();" value="0" <%  If instr(request("status"), "0") <> "0" or request.form = "" then response.Write "checked" End if%>>

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#4

devotion skrev:

hmmm går verkligen det? Checkboxarna heter ju "status"

Det är just därför som det går så bra.

Det enda du ska tänka på är att hoppa över hidden-värdet när du sparar informationen i databasen.

Medlem sedan jan. 20013 582 inlägg
#5

hmmmm, troligen fattar jag helt fel men jag gjorde som du sa, och la till ett hidden-fält som heter status och har värdet "1" problemet blir ju att den ettan hänger med i sql-satsen...

strSQL = "SELECT DISTINCT * " &_
		 "FROM tblTask " &_
		 "WHERE status in (" & strStatus & ") " &_
		 "ORDER BY taskNr"

då visas ju alltid uppdragen som har status "1"

help!!!!!

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#6

Nejje. Inte "1"! Det är ju upptaget. Något annat, t.ex "0" :)

Medlem sedan jan. 20013 582 inlägg
#7

som sagt troligen är jag ju helt fel ute men om jag sätter hiddenfältet till "bäver så hamnar ju bäver i sql-satsen och då blir det ju helt fel....

Mvh
Henrik

Medlem sedan dec. 19996 721 inlägg
#8

Vad sägs om att sätta värdet till..............."0"? ;)

Medlem sedan jan. 20013 582 inlägg
#9

jo, men har testat det.... men en av statusarna är just "0"....

Det bli galet!

Mvh
Henrik

Medlem sedan juni 200032 967 inlägg
#10

Men ta någon annan som inte används då... =)

Medlem sedan jan. 20013 582 inlägg
#11

hmmm ibland kan man vara bra trög.... Tack @nders för sparken i röven! och tack emission för ditt enkla men effektiva svar... (när jag tillslut fattat.....)

Jag satte hiddenfältet till "6" och vipps så funkar det...

Mvh
Henrik

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)