数据库有个URL字段,字段里储存的信息是两个域名中间一个,号,分别是"111.com,222.com"

我要建个页面,如果是用数据库里的域名访问的,那么就显示我指定的内容,如果不是数据库里的域名访问的,那就显示其他内容
我是用这个方式来读取的:
<%
www=Request.ServerVariables("SERVER_NAME")

set Rs=Server.CreateObject("ADODB.Recordset")
Rsstr="select * from [admin] where url='"&www&"'"
Rs.open Rsstr,Conn,1,1
if not (Rs.bof and Rs.eof) then%>
域名存在,谢谢访问

<%else%>

域名不存在,请离开!

<%end if%>

但是这样会把数据库里的111.com,222.com看成是一个域名,怎么样才能绑定多个域名,而且能正常读取的!?
悬赏100分,给出的结果正确再另外给分!!!

用数据库实现是一种办法:

Rsstr = "select * from [admin] where url like '%"&www&"%'"

但这种办法是明智的,比如你存的是111.com的话,可能取得的11.com也是通行的!所以得到结果时必须再进行对比,将取得的结果进行split,然后和split后的每一个元素进行对比,当然,取出的结果也可能是多个的!所以这种方法不太明智.

因为这种情况下完全是浪费服务器资源的.虽然出现的机率不是那么大.

所以,我这里还是建议你重新分析一下数据库,一般使用一个字符串表示两重意义时,表示你可能将一个简单的一对多表进行了合并!所以将这部分的信息重复设计,然后就不会出现这种情况了!比如你在URL列中指定了两个值,111.com,222.com或者说是不定值,其实就是一个一对多的表,你完全可以再建立一个如
adminid,url
此表的两个列为主键,而adminid来源于admin表,做为该表的外键使用.这种情况下就不会出现你说的那种情况了!

当然,如果URL域中的值是确定的话,也可能是一个一对多的表,但重新生成表中的URL是主键.这要看你具体的现实任务了!说白点就是如果域中的111.com像这样的值不会出现第二欠时,则新建的表url可以作为主键.

所以这种原因是因为你对数据库的设计不清楚而导致的.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-04-13
数组做个对比就可以了,嗯,这是我手写动写的,我已经注得很仔细了,你自己再看看了
XX=“www.baidu.com”'这里是访问者来源域名,看你怎么定义了,手动或者获取也行
dim MyArray,strArray

Rsstr="select * from [admin] "
Rs.open Rsstr,Conn,1,1
if not (Rs.bof and Rs.eof) then
'while not rs.eof'这个加上可以做整个数据库所有数据的对比

MyArray =replace(rs("url")," ","")'定义数组赋值,值为数据库存里的域名
strArray= Split(MyArray,",")‘SPLIT拆分

For n = LBound(strArray) to UBound(strArray) ’列出拆分值
'response.Write(MyArray&i&"</br>") ‘输入值
if int(strArray(n))=int(xx) then
域名存在。和要执行的程序
else
域名不存在所执行的程序
end if
next

'rs.movenext'这个加上可以做整个数据库所有数据的对比
'wend'这个加上可以做整个数据库所有数据的对比
end if
rs.close
set rs=nothing追问

你回答的和我问的完全不符合啊

追答

你希望什么回答,这答案是我亲手写的,我已经把思路给你了,你想得到什么样的答案????要全帮你写出来?你的要求也不明显。。。

追问

我的意思是这样的,输出的结果
域名1:111.com
域名2:222.com
我想提取其中一个域名用某个函数来表达,然后在从数据库中删除或者修改他
大概意思就是从数据库里读取"111.com,222.com"并列出为
域名1:111.com
域名2:222.com
那么怎么把其中任意一个再提取出来单独删除或者修改,比如a=域名1:111.com
那么我就可以用A这个函数来从数据库中删除或者修改了

第2个回答  2011-04-12
一般用这个就行 Rsstr="select * from [admin] where url like '%"&www&"%'"
这样就可以验证当前域名是不是符合其中一个域名,

建议使用
Rsstr="select * from [admin] where ','+url+',' like '%,"&www&",%'"
使用','+url+','是为了严格符合域名,防止 例如:www.qq.com 冒充 www.qq.com.cn 这样的域名通过验证。追问

谢谢,你的答案很好,我再问下
如果要读取url字段里的域名,而且显示格式成
域名一:111.com
域名二:222.com
而不是直接显示成"111.com,222.com"
该如何用代码操作

追答


域名

追问


域名

你好urls = Trim(Rs!url)这个地方编译错误

追答

改成urls = rs("url")

很久没写过asp网页了,虽说是VBScript语法,和VB还是有区别的。

追问

汗,这样也不行的,什么都输出不了,只有个空白

追答

urls = rs("url")
url = Split(urls , ",")

追问

朋友,非常感谢你的热心回答
如果你方便的话请在帮助我解决个问题
我想单独列出数据库字段里指定的域名,比如我要单独输出222.com时
应该怎么写代码,谢谢

追答

指定的域名?是什么条件?
urls = Trim(Rs!url)
url = Split(TextLine, ",")

For i = 0 To UBound(url)
if 条件 then
%>

追问

字段里的内容为"111.com,222.com"

域名

比如这段代码输出的结果是
域名1:111.com
域名2:222.com

我的想法是只要改动下某个字符就可以单独输出指定的域名
比如我想单独输出111.com
代码应该怎么写

追答

没明白什么是 改动下某个字符?

关键在if后面的条件,根据需要

if i=0 then 这样列出第一个
if InStr(url,"111")>0 then 这样列出包含111的

urls = Trim(Rs!url)
url = Split(TextLine, ",")

For i = 0 To UBound(url)
if i=0 then
%>

追问

我的意思是这样的,输出的结果
域名1:111.com
域名2:222.com
我想提取其中一个域名用某个函数来表达,然后在从数据库中删除或者修改他
大概意思就是从数据库里读取"111.com,222.com"并列出为
域名1:111.com
域名2:222.com
那么怎么把其中任意一个再提取出来单独删除或者修改,比如a=域名1:111.com
那么我就可以用A这个函数来从数据库中删除或者修改了

第3个回答  2011-04-12
以域名为主键。再建立一个新表, 只有域或一列.真接查询域名是否存在
大家正在搜