Capture site search terms and Search Results

Discussion in 'C#' started by rumblepup, Feb 16, 2007.

  1. #1
    Hey guys. Trying to alter a pre-made e-commerce application slightly.

    I have a control that is used for a very "simple search"

    Here's the code for the simplesearch.ascx

    
    <%@ Control Language="vb" enableViewState="False" AutoEventWireup="false" Codebehind="SimpleSearch.ascx.vb" Inherits="StoreFront.StoreFront.SimpleSearch" TargetSchema="http://schemas.microsoft.com/intellisense/nav4-0" %>
    <asp:Panel Runat="server" CssClass="<%=CssCls%>" HorizontalAlign="Center" BorderWidth="0" id="Panel1">
    	<TABLE cellSpacing="0" cellPadding="0" width="100%" border="0">
    		<TR>
    			<TD class="<%=CssCls%>">&nbsp;</TD>
    			<TD class="<%=CssCls%>" noWrap width="100%">Search:</TD>
    		</TR>
    		<TR>
    			<TD class="<%=CssCls%>">&nbsp;</TD>
    			<TD class="<%=CssCls%>" noWrap>
    				<asp:TextBox id="txtSimpleSearch" CssClass="Content" Columns="12" runat="server" size="12"></asp:TextBox>
    				<asp:LinkButton id="btnSearch" Runat="server">
    					<asp:Image BorderWidth="0" ID="imgSearch" Runat="server" AlternateText="Search"></asp:Image>
    				</asp:LinkButton></TD>
    			<TD class="<%=CssCls%>">&nbsp;</TD>
    		</TR>
    	</TABLE>
    </asp:Panel>
    
    Code (markup):
    And here's the code for the ascx.vb

    
    Imports System.Xml
    
    Imports StoreFront.BusinessRule
    Imports StoreFront.SystemBase
    
    Public MustInherit Class SimpleSearch
        Inherits CWebControl
        Protected WithEvents Panel1 As System.Web.UI.WebControls.Panel
        Protected WithEvents btnSearch As System.Web.UI.WebControls.LinkButton
        Protected WithEvents imgSearch As System.Web.UI.WebControls.Image
        Protected WithEvents txtSimpleSearch As System.Web.UI.WebControls.TextBox
        Private mCss As String = "RightColumn"
        Event SimpleSearch_Click As EventHandler
    
    #Region " Web Form Designer Generated Code "
    
        'This call is required by the Web Form Designer.
        <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    
        End Sub
    
        Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
            'CODEGEN: This method call is required by the Web Form Designer
            'Do not modify it using the code editor.
            InitializeComponent()
        End Sub
    
    #End Region
    
        Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Put user code to initialize the page here
            imgSearch.ImageUrl = dom.Item("SiteProducts").Item("SiteImages").Item("Search").Attributes("Filepath").Value
    
            If Me.Parent.NamingContainer.ToString.ToLower.IndexOf("rightcolumnnav") >= 0 Then
                mCss = "RightColumnText"
            ElseIf Me.Parent.NamingContainer.ToString.ToLower.IndexOf("leftcolumnnav") >= 0 Then
                mCss = "LeftColumnText"
            Else
                mCss = "Content"
    
            End If
        End Sub
    
        Private Sub btnSearch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSearch.Click
            Dim i As Integer
            Dim oAdmin As New Admin.CStore(StoreFrontConfiguration.AdminStore)
            Dim sLink As String
            sLink = oAdmin.DomainName & "SearchResult.aspx?KeyWords=" & txtSimpleSearch.Text
            Response.Redirect(sLink)
        End Sub
    
        Public Property CssCls() As String
            Get
                Return mCss
            End Get
            Set(ByVal Value As String)
                mCss = Value
            End Set
        End Property
    End Class
    
    Code (markup):
    Ok, here are the two things I want to do.

    1. I want to capture whatever a user enters into this search field to a database. I want to see what people are searching on my site, as well as render a "search cloud" on a different page.


    2. I also want to alter the way my searchresults.aspx page writes it's url. Right now, is looks like this
    /SearchResult.aspx?KeyWords=this%20search%20term
    but it also works, and I'd like for it to render like
    /SearchResult.aspx?KeyWords=this+search+term

    Now, I think the answer lies in this line of code

    How can I get rid of the %20 (which is just and empty space) and render a "+" sign?
     
    rumblepup, Feb 16, 2007 IP
  2. MarkusJ_NZ

    MarkusJ_NZ Well-Known Member

    Messages:
    240
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    108
    #2
    Hi, you are probably better to use the URLEncode method when passing information around in the querystring rather than do a manual replace.

    However, this would work
    Cheers
    Markus
     
    MarkusJ_NZ, Feb 21, 2007 IP
  3. rumblepup

    rumblepup Peon

    Messages:
    100
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #3
    Thank you sir!
     
    rumblepup, Feb 22, 2007 IP
  4. MarkusJ_NZ

    MarkusJ_NZ Well-Known Member

    Messages:
    240
    Likes Received:
    4
    Best Answers:
    0
    Trophy Points:
    108
    #4
    Your'e more than welcome :)
     
    MarkusJ_NZ, Feb 22, 2007 IP
  5. rumblepup

    rumblepup Peon

    Messages:
    100
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #5
    You wouldn't happen to have a script sample, or an idea, on how I can capture the input search phrase to the database, would you?
     
    rumblepup, Feb 26, 2007 IP