2010年8月31日
admin 84 views
因为接触了php,想要学php框架,因为想学框架就想找个合适的,因为想找个合适的就接触了cakephp,因为cakephp又接触了codeigniter,因为codeigniter我就找了视频看,因为看了codeigniter视频,了解到了textmate,喜欢上了textmate,但是textmate是苹果机的,又早些时候遇到了比editplus更让我中意的notepad++,但是看上去没textmate好,就了解到了notepad可以更换主题,可以安装插件,幸福啊。先来个截图:

太高兴了,主题是自带的Ruby Blue,在菜单设置->语言格式设置内,选择主题,那个文件浏览是个插件,在插件菜单->Plugin Manager->Show Plugin Manager,available内的 Explorer了。现在很多东西都可扩性很高,只要发现了,生活可以更美的。
2010年8月20日
admin 138 views
不多说,自己使用的,才开始做php没多久,看上了pdo,不过相同的操作很多就觉得应该封装一下,没考虑太多,自己用当然会比较方便了。
<?php
class chae_db{
public $conn;
//public $dbname;
/* function __construct(){
}*/
function __destruct(){
}
function __set($name,$value){
$this->$name=$value;
}
function __get($name){
return $this->$name;
}
//构造函数
function chae_db($dbhost,$dbname,$dbuser,$dbpwd){
try{
$this->conn=new PDO("mysql:host=".$dbhost.";dbname=" . $dbname . "",$dbuser,$dbpwd);
}catch(PDOException $e){
echo $e->message;
}
}
//得到连接
function getConn(){
return $this->conn;
}
/*
根据sql语句得到数组
用法:
$dbh=new chae_db('localhost','dbname','root','');
$arr=$dbh->getRecordArrBySql("select * from tblname where id=?",array($id));
print_r($arr);
*/
function getRecordArrBySql($sql,$arr){
$stmt=$this->conn->prepare($sql);
if(is_array($arr)){
$stmt->execute($arr);
}else{
$stmt->execute();
}
for($i=0;$row=$stmt->fetch(PDO::FETCH_ASSOC);$i++){
$tarr[$i]=$row;
}
return $tarr;
}
/*
获得表指定字段的值
参数:$sql 查询sql语句
$arr 查询条件数组,没有外部条件时用""代替
示例:
$dbh=new chae_db('localhost','dbname','root','');
$fieldval=$dbh->getFieldValue("select fild from tblname where id=?",array($id));
echo $fieldval;
*/
function getFieldValue($sql,$arr){
$stmt=$this->conn->prepare($sql);
if(is_array($arr)){
$stmt->execute($arr);
}else{
$stmt->execute();
}
return $stmt->fetchColumn(0);
}
//执行sql语句,prepare
function execsql($sql,$arr){
$stmt=$this->conn->prepare($sql);
if(is_array($arr)){
$stmt->execute($arr);
}else{
$stmt->execute();
}
return $stmt;
}
}
?>
2010年8月20日
admin 22 views
首先我要说的是notepad++比editplus好用多了,起码不会生成一个.bak,就这点就让我很满意了,然后打开速度快,在这里面处理utf-8乱码问题非常好,比记事本另存为utf-8好用,回到正题。
建库和建表都保存成utf-8格式,配置app/config/core.php Configure::write(‘App.encoding’, ‘UTF-8′);这个1.3版默认了,只是提下,配置app/config/database.php
‘encoding’=>’utf8′,注意官网原话If you wish to use UTF-8 encoding with mysql/mysqli connections you must use ‘utf8′ without the hyphen,如果你希望mysql/mysqli连接数据库时使用utf-8你必须使用utf8没有中杆。然后model、controller和view用natepad++打开,菜单栏 格式 然后选择 以utf-8 无DOM格式编码,然后把原中文乱码的地方重新输入中文,我这样就可以了。
这个方法比我早些时候无意间发现的zend studio5.5打开去掉代码开头的一个小点好用多了,参看使用smarty出现页面变形的原因
分类: CakePHP, mysql, php, web, 个人日志, 小技巧, 生活, 问题集 标签: CakePHP, mysql, notepad, php
2010年8月12日
admin 162 views
开始使用smarty就遇上页面变形了,就三个引入文件,没有多余的输出,在firebug下看,head部分完全走位,在body前有空行存在,怎一个无奈,后来把一个没多大的文件剔除后,在本地正常了,以为万事大吉,其实不然,我上传到测试空间,再次出现该 该死的情况,所以赶紧求助搜索引擎,上次可能搜索关键词不合理,没找到答案,走马观花了,其实是unicode bom造成的,在dw内看<?php 前是没有东西的,不过用zend的工具一看,<?php前多出了一个点,去掉后,传上去就好了。word内好像也有这个情况,空格其实是一个点,没设置是看不到的,都是该死的编码
使用了smarty要使前台显示不受局限,有时要用到自定义函数,当然也有其他办法,比如做下载功能时,显示列表或者详细时我们可能需要显示他的大小,当然你也可以事先存入数据库,或者列表时动态处理进循环数组,还可以用自定义函数在模板页上使用,但是到底怎么用呢,可以到网上找到smarty手册,看例子:
$smarty->register_function("date_now", "print_current_date");
function print_current_date ($params) {
extract($params);
if(empty($format))
$format="%b %e, %Y";
return strftime($format,time());
}
// now you can use this in Smarty to print the current date: {date_now}
// or, {date_now format="%Y/%m/%d"} to format it.
// 现在你可以在模板中这样显示日期:{date_now}
// 或者用{date_now format="%Y/%m/%d"}的格式进行格式化
很好理解吧,看我的,我这边要做一个产品属性,有产品表,属性表,可以关联查询,好吧,我们现在用自定义函数实现
服务器端代码
$smarty->register_function("show_attrvalue","getAttrVal");
function getAttrVal($params){
extract($params);
$conn=new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME."",DB_USER,DB_PASSWORD);;
//产品会很多,productid是动态的,我们可以这样,在模板页面上给productid赋值,试了没成功
if(empty($productid)){
global $nid;
$productid=$nid;
}
$stmt=$conn->prepare("select attributevalue from ".DB_FIX."productattribute where productid=? and attributeid=?");
$stmt->execute(array($productid,$attributeid));
return $stmt->fetchColumn();
}
客户端代码
{show_attrvalue productid=47 attributeid=1}
现在掌握了。