十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
Drupal是主流的CMS系统之一。因此具备Drupal技能的开发人员有很多。
创新互联公司是专业的八公山网站建设公司,八公山接单;提供网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行八公山网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
考虑这样的情况,如果你有一个现有的非Drupal系统,然后有一个Drupal开发团队,你希望这个Drupal团队帮你扩展应用。
那么这个时候,Drupal应用就应该设计成是支持多数据库的。
在Drupal中使用多数据,也很简单。
1、首先在配置文件(Settings.php)中把默认的数据库配置项改成数组形式:
?php
$db_url['default'] = 'mysql://drupal:drupal@localhost/drupal';
$db_url['jigo'] = 'mysql://user:pwd@localhost/jigo';
?
注意这里的数据库格式必须是一样的。即不能一个是mysql,另外一个是pgsql。
而且默认的必须是drupal自己的数据库。
2、然后在程序中动态切换:
?php
global $db_url; // 数据库链接的内部变量
if (!is_array($db_url)) {
$default_db = $db_url;
$db_url = array('default' = $default_db);
}
//也可以动态设置新的数据库,这里注释掉,因为我们已经写在配置项中
//$db_url['jigo'] = 'mysql://user:pwd@localhost/jigo';
db_set_active('jigo'); // activation execution same as explained above
$results = db_query($sql); //sql represents the query to be executed
db_set_active('default'); // set back to original
?
regards,
iefreer
8.4.4 Model类
getModelName() 获取当前Model的名称
getTableName() 获取当前Model的数据表名称
switchModel(type,vars=array()) 动态切换模型
table() 设置当前操作的数据表
field() 设置要查询的数据字段
where() 设置查询或者操作条件
data(data) 设置数据对象
order(order) 设置排序
limit(limit) 查询限制
page(page) 查询分页
join(join) 进行JOIN查询
having(having) 进行having查询
group(group) 进行group查询
lock(lock) 查询锁定
distinct(distinct) 唯一性查询
count(field) 记录统计
sum(field) 总数查询
min(field) 最小值查询
max(field) 最大值查询
avg(field) 平均值查询
_initialize() 模型初始化方法
_facade(data) 对保存到数据库的数据进行处理
_before_write(data) 写入数据前的回调方法 包括新增和更新
add(data='',options=array()) 新增数据
_before_insert(data,options) 写入数据前的回调方法
_after_insert(data,options) 写入数据后的回调方法
selectAdd(fields='',table='',options=array()) 通过Select方式添加记录
save(data='',options=array()) 更新数据到数据库
_before_update(data,options) 更新数据前的回调方法
_after_update(data,options) 更新成功后的回调方法
delete(options=array()) 删除数据
_after_delete(data,options) 删除成功后的回调方法
select(options=array()) 查询数据集
_after_select(resultSet,options) 查询成功后的回调方法
findAll(options=array()) select方法的别名
_options_filter(options) 表达式过滤回调方法
find(options=array()) 查询数据
_after_find(result,options) 查询成功的回调方法
setField(field,value,condition='') 设置记录的某个字段值
setInc(field,condition='',step=1) 字段值增长
setDec(field,condition='',step=1) 字段值减少
getField(field,condition='',sepa=' ') 获取某个字段值
create(data='',type='') 创建数据对象
autoCheckToken(data) 表单令牌验证
query(sql) 执行原生SQL查询
execute(sql='') 执行原生SQL操作
startTrans() 启动事务
commit() 提交事务
rollback() 事务回滚
getError() 获取模型的错误信息
getDbError() 获取数据库的错误信息
getLastInsID() 获取最后执行的SQL语句
getPk() 获取主键名称
getDbFields() 获取数据表的字段信息
regex(value,rule) 使用正则验证数据
setProperty(name,value) 设置模型的属性值
2.1版新增方法:
db(linkNum,config='') 切换当前数据库连接
高级模型类AdvModel
topN(count,options=array()) 查询满足条件的前N个记录
getN(position=0,options=array()) 查询符合条件的第N条记录
0 表示第一条记录 -1 表示最后一条记录
first(options=array()) 获取满足条件的第一条记录
last(options=array()) 获取满足条件的最后一条记录
returnResult(data,type='') 返回指定的数据类型
setLazyInc(field,condition='',step=1,lazyTime=0) 字段值延迟增长
setLazyDec(field,condition='',step=1,lazyTime=0) 字段值延迟减少
addConnect(config,linkNum=NULL) 增加数据库连接
delConnect(linkNum) 删除数据库连接
closeConnect(linkNum) 关闭数据库连接
switchConnect(linkNum,name='') 切换数据库连接
patchQuery(sql=array()) 批处理执行SQL语句
getPartitionTableName(data=array()) 得到分表的的数据表名
你用动态获取I值啊!
然后你的FORM GET过去的时候自动把I加一先不就行了。
$i = $_GET['i'];
在form表单里:
input type=hidden name='i' value='?php echo $i+1;?'
是用回调函数 处理替换
function zmd5($matches){
return md5($matches[0]);
}
$content = 'a,12
b,22
c,34';
$a=preg_replace_callback('/\d+/i','zmd5',$content);
echo $a;
1、apache 2.4.7下载地址:
64位: httpd-2.4.7-win64-VC11.zip
32位: httpd-2.4.7-win32-VC11.zip
PHP5.5.6+Apache2.4.7配置。
解压Apache24到c:/Apache24(这是配置里的服务器根目录,即ServerRoot的定义)。你的项目根目录为c:/Apache24/htdocs即DocumentRoot的定义。如果解压到其他目录下,需要对httpd.conf做出一些改动,包括ServerRoot、DocumentRoot、Directories,ScriptAlias。需要改为你的Apache目录的地址。
开启一个dos窗口:
到你的Apache 的bin目录下:执行httpd.exe。好吧!我遇到问题了,报了一个错,这个下面再说。如果成功后,会出现Install as a service。然后继续再执行httpd.exe -k install 安装到服务。
当然,启动|停止|重启的话,都需要用到-k这个参数,也就是httpd.exe -k start|stop|restart。
好了,你可以去你的apache目录 下的bin里double click(双击)ApacheMonitor.exe。
在浏览器中执行:localhost 会打印出It's Work!
问题1:在我刚开始执行时,出现一个报错,httpd.exe:无法启动此程序因为计算机中丢失msvcr100 dll。这个原因是因为Apache2.4版本是vc11的。如果在官网apache是在官网上下载的话,他会提示你:Be sure that you have installed Visual C++ Redistributable for Visual Studio 2012 : VC11 vcredist_x64/86.exe。请确保您已为Visual Studio2012安装的Visual C ++可再发行。可先行下载 VC11 vcredist_x64/86.exe。安装后,再去执行httpd.exe,就不会再报这样的错误了。
问题1解决了,但紧接着,问题2又出来了。
问题2:这个问题可能你不会遇到,但既然遇到了,也一并YY出来。这个是在执行httpd.exe时出现的。
问题提示:AH00558: httpd.exe: Could not reliably determine the server's fully qualified domain name, using fe80::1d6d:f22d:da2c:4739. Set the 'ServerName' directive globally to suppress this message。(OS 10048)通常每个套接字地址(协议/网络地址/端口)只允许使用一次。
这个需要你把ServerName设置成有效的,并且端口号被占了。先把httpd.conf中的ServerName前的#注释去掉,改在localhost:80或者其他有效均可。当然端口号需要和listen的保持一致。
可在dos命令下执行查看端口号:netstat -aon|findstr "80"
TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 1439
可以看出进程号为1439
再执行 tasklist|findstr "1439"
httpd.exe 2016 Console 0 14,064 K
这个是httpd.exe占了端口,可能是由于先前点击时出现的,这时需要把他给kill掉,可以打开任务管理器,然后在进程中找到,结束就可以了。再次执行httpd.exe -k start,就可以了。
下载下来的apache24,解压后,可看里面的ReadMe.txt,里面很清晰的介绍了安装步骤,不过是英文的。
访问你的localhost:8080。注意端口号,我这配置的是8080,一般默认为80.
在windows下配置Apache+PHP,在配置PHP时,需要下载相应的版本,下载时要注意non-thread-safe和thread-safe这两个版本。
non-thread-safe是 非安全线程 主要与IIS搭配环境。
thread-safe 安全线程 与Apache搭配环境。
注意thread-safe版本中会有php5apache2_4.dll的动态链接库,与apache搭配。
PHP.ini修改:
extension_dir改为你的php下/ext目录,如改为extension_dir = "D:/Environment/php-5.5.6-x64/ext。并把前面的注释分号去掉。
其次:打开相应的extension扩展。
修改时区date.timezone = PRC,基本配置完成。
在Apache的httpd.conf修改:
配置PHP:
在之间加入AddType application/x-httpd-php .php
在尾部加上php
LoadModule php5_module "D:/Environment/php-5.5.6-x64/php5apache2_4.dll"
PHPIniDir "D:/Environment/php-5.5.6-x64"
访问一下php程序, 新建index.php,打印phpinfo();
Ok!配置成功!
添加配置php_memcache扩展。php_memcache.dll与php版本相对应的。
各版本memcache dll下载地址
下载后,加入ext目录下。在php.ini加 extension=php_memcache.dll。ok!完成。
配置php_mongo扩展。同memcache一样。
各版本mongo dll下载地址
注意下载时,看你的mongo version,然后再选相应的php版本的dll,同样放入ext目录下。php.ini添加extension=php_mongo.dll
#windows下 PHP5.5.6 + Imagick扩展
1、先安装 ImageMagick-6.8.7-7-Q16-x64-dll.exe 。 下载地址: 可以选择其他版本。
2、解压 php_imagick-3.1.2-5.5-ts-vc11-x64.zip,将php_imagick.dll放入php的ext目录下。
可根据Imagick的版本自行下载,下载地址: 点击DLL,可以进入选择相应的php版本。
下载时,请注意non-thread-safe和thread-safe,前者适用于IIs,后者适用于Apache。
3、打开php.ini,添加 extension=php_imagick.dll,重启Apache。
没有配置Mysql,大家可以自己找Mysql安装。
这个是需要用JS来实现的,就类似tap选项卡的效果。下面是找的一个例子,和你想要的效果一样
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
""
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
titleRadio切换效果/title
style
*{margin:0;padding:0;}
body{margin:50px;font-size:12px;color:#666;}
li{list-style:none;}
div{width:210px;}#tab1,#tab2{width:398px;height:34px;border:1px#cfedff solid;border-bottom:0;background:url(images/title.gif)repeat-x;}#tab1 ul,#tab2 ul{margin:0;padding:0;}#tab1 li,#tab2 li{float:left;padding:0 30px;height:34px;line-height:34px;text-align:center;border-right:1px#ebf7ff solid;cursor:pointer;}#tab1 li.now,#tab2 li.now{color:#5299c4;background:#fff;font-weight:bold;}.tablist{width:378px;height:100px;padding:10px;font-size:14px;line-height:24px;border:1px#cfedff solid;border-top:0;display:none;}.block{display:block;}
fieldset{width:378px;border:1px#B0C0D1 solid;padding:10px;}
legend{background:#B0C0D1;padding:4px 10px;color:#fff;}#c{margin-top:10px;}.c1,.c2{width:378px;line-height:20px;}.c1{color:#014CC9;}.c2{color:#7E6095;}
h3{font-size:16px;padding:5px 0;}.red{color:#BD0A01;}
/style
/head
body
h1Radio切换/h1
script type="text/javascript"
function radioShow() {
var myradio = document.getElementsByName("myradio");
var div = document.getElementById("c").getElementsByTagName("div");
for (i = 0; i div.length; i++) {
if (myradio[i].checked) {
div[i].style.display = "block";
} else {
div[i].style.display = "none";
}
}
}
/script
form name="ck"
fieldset
legendI'm Radio/legend
h3请选择:/h3
label for="r1" class="red"
input name="myradio" id="r1" type="radio" value="" checked="checked" onclick="radioShow();" /XML教程/label
label for="r2" class="red"
input name="myradio" id="r2" type="radio" value="" onclick="radioShow();" /浏览器脚本/label
div id="c"
div class="c1"
label for="xml"
input name="c2" type="checkbox" id="xml" value="" /XML/label
label for="dtd"
input name="c2" id="dtd" type="checkbox" value="" /DTD/label
label for="xmldom"
input name="c2" id="xmldom" type="checkbox" value="" /XML DOM/label
label for="xsl"
input name="c2" id="xsl" type="checkbox" value="" /XSL/label
label for="xslt"
input name="c2" id="xslt" type="checkbox" value="" /XSLT/label
label for="xslfo"
input name="c2" id="xslfo" type="checkbox" value="" /XSL-FO/label
label for="xpath"
input name="c2" id="xpath" type="checkbox" value="" /XPath/label
label for="xquery"
input name="c2" id="xquery" type="checkbox" value="" /XQuery/label
label for="xlink"
input name="c2" id="xlink" type="checkbox" value="" /XLink /label
label for="xpointer"
input name="c2" id="xpointer" type="checkbox" value="" /XPointer/label
label for="schema"
input name="c2" id="schema" type="checkbox" value="" /Schema/label
label for="xforms"
input name="c2" id="xforms" type="checkbox" value="" /XForms/label
/div
div class="c2" style="display:none;"
label for="js"
input name="c3" id="js" type="checkbox" value="" /JavaScript/label
label for="hd"
input name="c3" id="hd" type="checkbox" value="" /HTML DOM/label
label for="dhtml"
input name="c3" id="dhtml" type="checkbox" value="" /DHTML/label
label for="vbs"
input name="c3" id="vbs" type="checkbox" value="" /VBScript/label
label for="ajax"
input name="c3" id="ajax" type="checkbox" value="" /AJAX/label
label for="e4x"
input name="c3" id="e4x" type="checkbox" value="" /E4X/label
label for="wml"
input name="c3" id="wml" type="checkbox" value="" /WMLScript/label
/div
/div
/fieldset
/form
/body
/html