2009-08-05 8 views
0

Je suis en train de développer un site Web pour les locataires pour trouver des propriétés. Quand ils s'inscrivent, ils peuvent choisir les types de propriété qui les intéressent, par exemple: Appartement ou Maison. Lorsqu'un locataire se connecte à son compte, il peut effectuer une recherche de propriétés. Le formulaire de recherche est pré-rempli avec les valeurs entrées lors de l'inscription, par exemple: Ville, Code postal et ainsi de suite.Sélection d'articles dans une rangée

Le formulaire doit également afficher des cases à cocher avec les cases correspondantes cochées pour les types de propriétés qu'ils ont sélectionnés à l'inscription. J'ai quelques problèmes pour que cela fonctionne et je me demande s'il y a quelqu'un qui pourrait corriger le code pour moi? Je crois que j'ai besoin d'utiliser une instruction 'IN' pour que les cases à cocher pertinentes soient cochées, si les ID de ces propriétés sont trouvées dans la colonne CustomerReqPropertyType. La colonne CustomerReqPropertyType est varchar (50) et à titre d'exemple, si un utilisateur a sélectionné Apartment et House, il est stocké dans la ligne 2, 4 (car il existe une table distincte avec les types de propriété)

Ceci est le code que j'ai sur la page;.

<% 
    While (NOT rspropertytype.EOF) 
%> 

    <li> 
     <input type="checkbox" name="txtPropertyType" id="txtPropertyType" value="<%=(rspropertytype.Fields.Item("PropertyTypeID").Value)%>"<% If Not rstenantrequirements.EOF Or Not rstenantrequirements.BOF Then %><%If (Not isNull((rstenantrequirements.Fields.Item("CustomerReqPropertyType").Value))) Then If (CStr(rspropertytype.Fields.Item("PropertyTypeID").Value) = CStr((rstenantrequirements.Fields.Item("CustomerReqPropertyType").Value))) Then Response.Write("")%><% End If ' end Not rstenantrequirements.EOF Or NOT rstenantrequirements.BOF %> /> 
     <label for="txtPropertyType"><%=(rspropertytype.Fields.Item("PropertyTypeTitle").Value)%></label> 
    </li> 

<% 
    rspropertytype.MoveNext() 
Wend 
If (rspropertytype.CursorType > 0) Then 
    rspropertytype.MoveFirst 
Else 
    rspropertytype.Requery 
End If 
%> 

Je serais très reconnaissant pour toute aide

+0

Non lié à la question mais quelle est votre intention avec la déclaration If après la boucle While? Je comprends ce qu'il fait, mais je suis confus quant à la raison pour laquelle vous voudriez le faire dans le contexte d'une page ASP ou pourquoi vous l'incluez dans votre exemple de code, car il n'est pas lié. – MyItchyChin

Répondre

1

pour une case à cocher à vérifier la propriété vérifiée doit être « vérifié »

par exemple.

<input type="checkbox" name="something" value="somethingElse" checked="checked" /> 

Je pense que dans votre code et les rspropertytype rstenantrequirements recordsets pourraient être regroupés en un seul produit recordset d'une instruction SQL.

par exemple.

SELECT pt.* 
    , CASE 
     WHEN ISNULL(tr.CustomerReqPropertyType,0) = 0 THEN 0 
     ELSE 1 END AS [checked] 
FROM propertytype AS [pt] 
LEFT JOIN tenantrequirements AS [tr] 
    ON pt.PropertyTypeID = tr.CustomerReqPropertyType 
WHERE ... 

Ensuite, votre code ASP pourrait également être simplifié.

par exemple.

<% 
While (NOT rs.EOF) 
    Dim pID : pID = rs("PropertyTypeID") 
    Dim pTitle : pTitle = rs("PropertyTypeTitle") 
    Dim checked : checked = "" : If (rs("checked") = 1) Then checked = "checked" 
%> 
    <li> 
     <input type="checkbox" name="txtPropertyType" id="txtPropertyType<%=pID%>" value="<%=pID%>" checked="<%=checked%>" /> 
     <label for="txtPropertyType<%=pID%>"><%=pTitle%></label> 
    </li> 
<% 
    rs.MoveNext() 
Wend 
%> 
0

Ceci est vraiment difficile à suivre. D'abord je casserais cette ligne là où votre temps est que vous pouvez juste placer une variable et l'imprimer à la page. Je suppose que vous essayez de cocher la case. Ce que je ferais est de s'assurer que la valeur retournée n'est pas nulle en supposant que c'est une requête qui retourne juste le type de propriété et que vous l'avez joint à la table qui contient les descriptions quand elles sont définies pour la propriété en question. Je ne vous vois jamais imprimé coché à la case à cocher donc il ne sera jamais vérifié de toute façon.

+0

Salut Jon, oui j'essaye de mettre les cases appropriées pour vérifier les types de propriété que les utilisateurs ont intéressés. À l'origine, l'utilisateur était seulement capable de faire un choix d'une liste déroulante quand ils se sont inscrits. Mais alors il était évident que les gens aimeraient choisir plus d'un type de propriété, alors cette page est devenue une liste de cases à cocher. – doubleplusgood

+0

Compris. Avez-vous besoin d'aide avec votre SQL ou la partie ASP si? – Jon

Questions connexes