2011年12月16日星期五

【转】jquery的checked以及disabled

下面只提到checked,其实disabled在jquery里的用法和checked是一模一样的

下边两种写法没有任何区别 只是少了些代码而已...

-----------------------------------------------------------
<input id="cb1" type="checkbox" checked />
<input id="cb2" type="checkbox" checked="checked" />

--------------------------------------------------------------

jquery判断checked的三种方法:

.attr('checked'):   //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
.prop('checked'): //16+:true/false
.is(':checked'):    //所有版本:true/false//别忘记冒号哦

jquery赋值checked的几种写法:

所有的jquery版本都可以这样赋值:

// $("#cb1").attr("checked","checked");
// $("#cb1").attr("checked",true);

jquery1.6+:prop的4种赋值:

// $("#cb1").prop("checked",true);//很简单就不说了哦
// $("#cb1").prop({checked:true}); //map键值对
// $("#cb1").prop("checked",function(){
return true;//函数返回true或false
});

//记得还有这种哦:$("#cb1").prop("checked","checked");

更多参考:http://api.jquery.com/prop/

上代码 大家可以随便测试:(你是懒人么-_-)

jquery1.6以后才支持prop的哦

新建一个text复制内容进去  后缀名改成html

<html>
<head>
<title>测试</title>
<style type="text/css">

</style>
<!--1.62可以修改1.42 1.52 1.7来测试-->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
$(
function(){
//判断checked
       // var a=$("#cb1").attr('checked'); //看版本1.6+返回:"checked"或"undefined" ;1.5-返回:true或false
       // var b=$("#cb1").prop('checked'); //1.6+:true/false
       var c=$("#cb1").is(':checked'); //所有版本:true/false
       // alert(a);
       // alert(b);
alert(c);

//赋值 前两个所有的jquery版本都支持 prop只有jquery1.6+支持
       // $("#cb1").attr("checked","checked");//1.5-
       // $("#cb1").attr("checked",true);//1.5-
       //   $("#cb1").prop("checked","checked");//1.6+(整理的时候把这个忘记啦)
       //    $("#cb1").prop("checked",true);//1.6+
       // $("#cb1").prop({checked:true});//1.6+
      // $("#cb1").prop("checked",function(){
       // return true;//1.6+
       // });
})();

</script>
</head>
<body>
<!--赋值的时候记得去掉checked-->
<input id="cb1" type="checkbox" checked />
<input id="cb2" type="checkbox" checked="checked"/>
</body>
</html>

摘自:http://www.cnblogs.com/0banana0/archive/2011/11/16/2251855.html

2011年12月15日星期四

【转】PHP导入导出Excel方法

PHP导入导出Excel方法  

原作者:冰山上的播客
看 到这篇文章的时候,很是惊讶原作者 的耐心,虽然我们在平时用的也有一些,但没有作者列出来的全,写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用 smarty等作的简单替换xml的也用过,csv的就更不用谈了。呵呵。(COM方式不讲了,这种可读的太多了,我也写过利用wps等进行word等的 生成之类的文章 )
但是在读的时候,只用过一种,具体是什么忘了,要回去翻代码了。因为采用的是拿来主义,记不住。
原文地址:http://xinsync.xju.edu.cn/index.php/archives/3858
原文内容:

最近因项目需要,需要开发一个模块,把系统中的一些数据导出成Excel,修改后再导回系统。就趁机对这个研究了一番,下面进行一些总结。
基本上导出的文件分为两种:
1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已。修改这种文件后再保存,通常会提示你是否要转换成Excel文件。
优点:简单。
缺点:难以生成格式,如果用来导入需要自己分别编写相应的程序。
2:Excel格式,与类Excel相对应,这种方法生成的文件更接近于真正的Excel格式。

如果导出中文时出现乱码,可以尝试将字符串转换成gb2312,例如下面就把$yourStr从utf-8转换成了gb2312:
$yourStr = mb_convert_encoding(”gb2312″, “UTF-8″, $yourStr);

下面详细列举几种方法。
一、PHP导出Excel

1:第一推荐无比风骚的PHPExcel,官方网站: http://www.codeplex.com/PHPExcel
导入导出都成,可以导出office2007格式,同时兼容2003。
下载下来的包中有文档和例子,大家可以自行研究。
抄段例子出来:


PHP代码
<?php  
/** 
* PHPExcel 

* Copyright (C) 2006 - 2007 PHPExcel 

* This library is free software; you can redistribute it and/or 
* modify it under the terms of the GNU Lesser General Public 
* License as published by the Free Software Foundation; either 
* version 2.1 of the License, or (at your option) any later version. 

* This library is distributed in the hope that it will be useful, 
* but WITHOUT ANY WARRANTY; without even the implied warranty of 
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
* Lesser General Public License for more details. 

* You should have received a copy of the GNU Lesser General Public 
* License along with this library; if not, write to the Free Software 
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA 

* @category   PHPExcel 
* @package    PHPExcel 
* @copyright  Copyright (c) 2006 - 2007 PHPExcel ( http://www.codeplex.com/PHPExcel
* @license    http://www.gnu.org/licenses/lgpl.txt    LGPL 
* @version    1.5.0, 2007-10-23 
*/  
  
/** Error reporting */  
error_reporting(E_ALL);  
  
/** Include path **/  
set_include_path(get_include_path() . PATH_SEPARATOR . ‘../Classes/’);  
  
/** PHPExcel */  
include ‘PHPExcel.php’;  
  
/** PHPExcel_Writer_Excel2007 */  
include ‘PHPExcel/Writer/Excel2007.php’;  
  
// Create new PHPExcel object  
echo date(’H:i:s’) . ” Create new PHPExcel object\n”;  
$objPHPExcel = new PHPExcel();  
  
// Set properties  
echo date(’H:i:s’) . ” Set properties\n”;  
$objPHPExcel->getProperties()->setCreator(”Maarten Balliauw”);  
$objPHPExcel->getProperties()->setLastModifiedBy(”Maarten Balliauw”);  
$objPHPExcel->getProperties()->setTitle(”Office 2007 XLSX Test Document”);  
$objPHPExcel->getProperties()->setSubject(”Office 2007 XLSX Test Document”);  
$objPHPExcel->getProperties()->setDescrīption(”Test document for Office 2007 XLSX, generated using PHP classes.”);  
$objPHPExcel->getProperties()->setKeywords(”office 2007 openxml php”);  
$objPHPExcel->getProperties()->setCategory(”Test result file”);  
  
// Add some data  
echo date(’H:i:s’) . ” Add some data\n”;  
$objPHPExcel->setActiveSheetIndex(0);  
$objPHPExcel->getActiveSheet()->setCellValue(’A1′, ‘Hello’);  
$objPHPExcel->getActiveSheet()->setCellValue(’B2′, ‘world!’);  
$objPHPExcel->getActiveSheet()->setCellValue(’C1′, ‘Hello’);  
$objPHPExcel->getActiveSheet()->setCellValue(’D2′, ‘world!’);  
  
// Rename sheet  
echo date(’H:i:s’) . ” Rename sheet\n”;  
$objPHPExcel->getActiveSheet()->setTitle(’Simple’);  
  
// Set active sheet index to the first sheet, so Excel opens this as the first sheet  
$objPHPExcel->setActiveSheetIndex(0);  
  
// Save Excel 2007 file  
echo date(’H:i:s’) . ” Write to Excel2007 format\n”;  
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);  
$objWriter->save(str_replace(’.php’, ‘.xlsx’, __FILE__));  
  
// Echo done  
echo date(’H:i:s’) . ” Done writing file.\r\n”;  

 

2、使用pear的Spreadsheet_Excel_Writer类
下载地址: http://pear.php.net/package/Spreadsheet_Excel_Writer
此类依赖于OLE,下载地址:http://pear.php.net/package/OLE
需要注意的是导出的Excel文件格式比较老,修改后保存会提示是否转换成更新的格式。
不过可以设定格式,很强大。


PHP代码
<?php  
require_once ‘Spreadsheet/Excel/Writer.php’;  
  
// Creating a workbook  
$workbook = new Spreadsheet_Excel_Writer();  
  
// sending HTTP headers  
$workbook->send(’test.xls’);  
  
// Creating a worksheet  
$worksheet =& $workbook->addWorksheet(’My first worksheet’);  
  
// The actual data  
$worksheet->write(0, 0, ‘Name’);  
$worksheet->write(0, 1, ‘Age’);  
$worksheet->write(1, 0, ‘John Smith’);  
$worksheet->write(1, 1, 30);  
$worksheet->write(2, 0, ‘Johann Schmidt’);  
$worksheet->write(2, 1, 31);  
$worksheet->write(3, 0, ‘Juan Herrera’);  
$worksheet->write(3, 1, 32);  
  
// Let’s send the file  
$workbook->close();  
?>  


3:利用smarty,生成符合Excel规范的XML或HTML文件
支持格式,非常完美的导出方案。不过导出来的的本质上还是XML文件,如果用来导入就需要另外处理了。
详细内容请见rardge大侠的帖子:http://bbs.chinaunix.net/viewthread.php?tid=745757

需要注意的是如果导出的表格行数不确定时,最好在模板中把”ss:ExpandedColumnCount=”5″ ss:ExpandedRowCount=”21″”之类的东西删掉。

4、利用pack函数打印出模拟Excel格式的断句符号,这种更接近于Excel标准格式,用office2003修改后保存,还不会弹出提示,推荐用这种方法。
缺点是无格式。


PHP代码
<?php  
// Send Header  
header(”Pragma: public”);  
header(”Expires: 0″);  
header(”Cache-Control: must-revalidate, post-check=0, pre-check=0″);  
header(”Content-Type: application/force-download”);  
header(”Content-Type: application/octet-stream”);  
header(”Content-Type: application/download”);;  
header(”Content-Disposition: attachment;filename=test.xls “);  
header(”Content-Transfer-Encoding: binary “);  
// XLS Data Cell  
  
xlsBOF();  
xlsWriteLabel(1,0,”My excel line one”);  
xlsWriteLabel(2,0,”My excel line two : “);  
xlsWriteLabel(2,1,”Hello everybody”);  
  
xlsEOF();  
  
function xlsBOF() {  
echo pack(”ssssss”, 0×809, 0×8, 0×0, 0×10, 0×0, 0×0);  
return;  
}  
function xlsEOF() {  
echo pack(”ss”, 0×0A, 0×00);  
return;  
}  
function xlsWriteNumber($Row, $Col, $Value) {  
echo pack(”sssss”, 0×203, 14, $Row, $Col, 0×0);  
echo pack(”d”, $Value);  
return;  
}  
function xlsWriteLabel($Row, $Col, $Value ) {  
$L = strlen($Value);  
echo pack(”ssssss”, 0×204, 8 + $L, $Row, $Col, 0×0, $L);  
echo $Value;  
return;  
}  
?>  
不过笔者在64位linux系统中使用时失败了,断句符号全部变成了乱码。  
  
5、使用制表符、换行符的方法  
制表符”\t”用户分割同一行中的列,换行符”\t\n”可以开启下一行。  
<?php  
header(”Content-Type: application/vnd.ms-execl”);  
header(”Content-Disposition: attachment; filename=myExcel.xls”);  
header(”Pragma: no-cache”);  
header(”Expires: 0″);  
/*first line*/  
echo “hello”.”\t”;  
echo “world”.”\t”;  
echo “\t\n”;  
  
/*start of second line*/  
echo “this is second line”.”\t”;  
echo “Hi,pretty girl”.”\t”;  
echo “\t\n”;  
?>  


6、使用com
如果你的PHP可以开启com模块,就可以用它来导出Excel文件


PHP代码
<?PHP  
$filename = “c:/spreadhseet/test.xls”;  
$sheet1 = 1;  
$sheet2 = “sheet2″;  
$excel_app = new COM(”Excel.application”) or Die (”Did not connect”);  
print “Application name: {$excel_app->Application->value}\n” ;  
print “Loaded version: {$excel_app->Application->version}\n”;  
$Workbook = $excel_app->Workbooks->Open(”$filename”) or Die(”Did not open $filename $Workbook”);  
$Worksheet = $Workbook->Worksheets($sheet1);  
$Worksheet->activate;  
$excel_cell = $Worksheet->Range(”C4″);  
$excel_cell->activate;  
$excel_result = $excel_cell->value;  
print “$excel_result\n”;  
$Worksheet = $Workbook->Worksheets($sheet2);  
$Worksheet->activate;  
$excel_cell = $Worksheet->Range(”C4″);  
$excel_cell->activate;  
$excel_result = $excel_cell->value;  
print “$excel_result\n”;  
#To close all instances of excel:  
$Workbook->Close;  
unset($Worksheet);  
unset($Workbook);  
$excel_app->Workbooks->Close();  
$excel_app->Quit();  
unset($excel_app);  
?>  

一个更好的例子: http://blog.chinaunix.net/u/16928/showart_387171.html

一、PHP导入Excel

1:还是用PHPExcel,官方网站: http://www.codeplex.com/PHPExcel

2:使用PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader
举例:


PHP代码
<?php  
require_once ‘Excel/reader.php’;  
  
// ExcelFile($filename, $encoding);  
$data = new Spreadsheet_Excel_Reader();  
  
// Set output Encoding.  
$data->setOutputEncoding(’utf8′);  
  
$data->read(’ jxlrwtest.xls’);  
  
error_reporting(E_ALL ^ E_NOTICE);  
  
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {  
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {  
echo “\”".$data->sheets[0]['cells'][$i][$j].”\”,”;  
}  
echo “\n”;  
}  
  
?>  

摘自:http://pcwanli.blog.163.com/blog/static/45315611201011894811404/

【转】php导出导入execl(使用PHPExcel类)

php导出导入execl(使用PHPExcel类)

php导入execl

下载phpexcelreader类

http://sourceforge.net/projects/phpexcelreader/ 

demo 的execl有问题,自己创建一个。

下载下来以后按照readme上面的说法,访问example.php后缺发现如下错误:

Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Reader/OLERead.php' (include_path='.;\xampp\php\PEAR') in XXXX

意 思是缺少Spreadsheet/Excel/Reader/OLERead.php这个文件。但是确实是没有这个文件呀!找了找,在excel目录下发 现了oleread.inc文件,于是将Spreadsheet/Excel/Reader/OLERead.php换成oleread.inc就OK 了!

也就是将

require_once 'Spreadsheet/Excel/Reader/OLERead.php';

修改为

require_once 'oleread.inc';

即可。

另外,在example.php 中,需要修改

$data->setOutputEncoding('CP1251');

$data->setOutputEncoding('CP936');

不然的话中文将会有问题。

如果是使用繁体的话可以修改为CP950、日文是CP932,具体可参考codepage说明。

还有,其自带的 jxlrwtest.xls 可能有问题,需要修改example.php中的:

$data->read('jxlrwtest.xls');

为自己的 excel 文件名,用了一下,感觉还是不错的!

如果导入到数据库

在使用过程中还出现乱码:

本人页面和数据库都是utf-8,在取出的execl元素中都使用

   $textip = iconv("GB2312","UTF-8",$textip);

进行编码转换

这样才能正确导入mysql

php导出execl

下载php-excel类,网上一搜

里面有dome

一看便知,一般没有什么错误。

摘自:http://l2007024110.blog.163.com/blog/static/781151422010918111137399/

2011年12月13日星期二

PHP去除数组里的空值

方法一:

由于没有去空值的数组函数,我们可以利用

array_diff()函数

array_diff ― 计算数组的差集

说明

array

array_diff

( array $array1, array $array2 [, array $ ...] )

array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。

去空值的例子:

$array = array("a","b","",null,"c");

$array = array_diff($array, array(null));

即可去除.

------------------------------------

来源:http://web-studio.blog.sohu.com/142258062.html

====================

方法二:

例 $a =array("1","2","","4"); 怎么样去除 ""
<?php  function filter($var) {         if($var == '')         {                 return false;         }          return true; }  $a = array("1", "2", "", "4");  print_r(array_filter($a, "filter"));  ?>

2011年11月27日星期日

【转】 strlen和mb_strlen区别(php获得中英文混合字符长度)

摘自:http://hi.baidu.com/anylzer/blog/item/f30559388884e8e8b311c75f.html

<?php
//测试时文件的编码方式要是UTF8
$str='中文a字1符';
echo strlen($str).'<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
/*
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以"中文a字1符"长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以"中文a字1符"长度是6
*/
//利用这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
//例如 "中文a字1符" 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出"中文a字1符"的占位是10.
echo mb_internal_encoding();

PHP内置的字符串长度函数strlen无法正确处理中文字符串,它得 到的只是字符串所占的字节数。对于GB2312的中文编码,strlen得到的值是汉字个数的2倍,而对于UTF-8编码的中文,就是3倍的差异了(在 UTF-8编码下,一个汉字占3个字节)。

采用mb_strlen函数可以较好地解决这个问题。mb_strlen的用法和 strlen类似,只不过它有第二个可选参数用于指定字符编码。例如得到UTF-8的字符串$str长度,可以用 mb_strlen($str,'UTF-8')。如果省略第二个参数,则会使用PHP的内部编码。内部编码可以通过 mb_internal_encoding()函数得到。需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载 了php_mbstring.dll,即确保"extension=php_mbstring.dll"这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。

2011年11月24日星期四

【转】MySql中Blob与Text的区别

BLOB是一个二进制大对象,可以容纳可变数量的数据。有4种BLOB类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。

在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。

当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告。

 在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR:

・         当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同)。

请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHAR和VARCHAR。

・         对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的。

・         BLOB和TEXT列不能有 默认值。

LONG和LONG VARCHAR对应MEDIUMTEXT数据类型。这是为了保证兼容性。如果TEXT列类型使用BINARY属性,将为列分配列字符集的二元 校对规则。

MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY,将TEXT值定义为LONGVARCHAR。

由于BLOB和TEXT值可能会非常长,使用它们时可能遇到一些约束:

・         当排序时只使用该列的前max_sort_length个字节。max_sort_length的 默认值是1024;该值可以在启动mysqld服务器时使用--max_sort_length选项进行更改。

运行时增加max_sort_length的值可以在排序或组合时使更多的字节有意义。任何客户端可以更改其会话max_sort_length变量的值:

mysql> SET max_sort_length = 2000;

mysql> SELECT id, comment FROM tbl_name

    -> ORDER BY comment;

当你想要使超过max_sort_length的字节有意义,对含长值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一种方式是将列值转换为固定长度的对象。标准方法是使用SUBSTRING函数。例如,下面的语句对comment列的2000个字节进行排序:

mysql> SELECT id, SUBSTRING(comment,1,2000) FROM tbl_name

    -> ORDER BY SUBSTRING(comment,1,2000);

・         BLOB或TEXT对象的最大大小由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改 max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。例如,可以使用mysql和mysqldump 来更改客户端的max_allowed_packet值。

每个BLOB或TEXT值分别由内部分配的对象表示。这与其它列类型形成对比,后者是当打开表时为每1列分配存储引擎。

摘自:http://www.2cto.com/database/201108/100262.html

2011年11月23日星期三

【转】MySQL:日期函数、时间函数总结(MySQL 5.X)

摘自:http://hi.baidu.com/zkheartboy/blog/item/59d2a809a2ad30226a60fbc7.html

一、MySQL 获得当前日期时间 函数

1.1 获得当前日期+时间(date + time)函数:now()

mysql> select now();

+---------------------+
| now() |
+---------------------+
| 2008-08-08 22:20:46 |
+---------------------+

除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:

current_timestamp()
,current_timestamp
,localtime()
,localtime
,localtimestamp -- (v4.0.6)
,localtimestamp() -- (v4.0.6)

这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是 使用 now() 来替代上面列出的函数。

1.2 获得当前日期+时间(date + time)函数:sysdate()

sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:

mysql> select now(), sleep(3), now();

+---------------------+----------+---------------------+
| now() | sleep(3) | now() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 |
+---------------------+----------+---------------------+
mysql> select sysdate(), sleep(3), sysdate();

+---------------------+----------+---------------------+
| sysdate() | sleep(3) | sysdate() |
+---------------------+----------+---------------------+
| 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 |
+---------------------+----------+---------------------+

可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样 描述 sysdate() 的:Return the time at which the function executes。

sysdate() 日期时间函数,一般情况下很少用到。

2. 获得当前日期(date)函数:curdate()

mysql> select curdate();

+------------+
| curdate() |
+------------+
| 2008-08-08 |
+------------+

其中,下面的两个日期函数等同于 curdate():

current_date()
,current_date

3. 获得当前时间(time)函数:curtime()

mysql> select curtime();

+-----------+
| curtime() |
+-----------+
| 22:41:30 |
+-----------+

其中,下面的两个时间函数等同于 curtime():

current_time()
,current_time

4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()

mysql> select utc_timestamp(), utc_date(), utc_time(), now()

+---------------------+------------+------------+---------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
+---------------------+------------+------------+---------------------+
| 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11 | 2008-08-08 22:47:11 |
+---------------------+------------+------------+---------------------+

因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及 多个国家和地区的时候,非常有用。

二、MySQL 日期时间 Extract(选取) 函数。

1. 选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒

set @dt = '2008-09-10 07:15:30.123456';

select date(@dt); -- 2008-09-10
select time(@dt); -- 07:15:30.123456
select year(@dt); -- 2008
select quarter(@dt); -- 3
select month(@dt); -- 9
select week(@dt); -- 36
select day(@dt); -- 10
select hour(@dt); -- 7
select minute(@dt); -- 15
select second(@dt); -- 30
select microsecond(@dt); -- 123456

2. MySQL Extract() 函数,可以上面实现类似的功能:

set @dt = '2008-09-10 07:15:30.123456';

select extract(year from @dt); -- 2008
select extract(quarter from @dt); -- 3
select extract(month from @dt); -- 9
select extract(week from @dt); -- 36
select extract(day from @dt); -- 10
select extract(hour from @dt); -- 7
select extract(minute from @dt); -- 15
select extract(second from @dt); -- 30
select extract(microsecond from @dt); -- 123456
select extract(year_month          from @dt); -- 200809
select extract(day_hour from @dt); -- 1007
select extract(day_minute from @dt); -- 100715
select extract(day_second from @dt); -- 10071530
select extract(day_microsecond from @dt); -- 10071530123456
select extract(hour_minute from @dt); -- 715
select extract(hour_second from @dt); -- 71530
select extract(hour_microsecond from @dt); -- 71530123456
select extract(minute_second from @dt); -- 1530
select extract(minute_microsecond from @dt); -- 1530123456
select extract(second_microsecond from @dt); -- 30123456

MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。 并且还具有选取'day_microsecond' 等功能。注意这里不是只选取 day 和 microsecond, 而是从日期的 day 部分一直选取到 microsecond 部分。够强悍的吧!

MySQL Extract() 函数唯一不好的地方在于:你需要多敲几次键盘。

3. MySQL dayof... 函数:dayofweek(), dayofmonth(), dayofyear()

分别返回日期参数,在一周、一月、一年中的位置。

set @dt = '2008-08-08';

select dayofweek(@dt); -- 6
select dayofmonth(@dt); -- 8
select dayofyear(@dt); -- 221

日期 '2008-08-08' 是一周中的第 6 天(1 = Sunday, 2 = Monday, ..., 7 = Saturday); 一月中的第 8 天;一年中的第 221 天。

4. MySQL week... 函数:week(), weekofyear(), dayofweek(), weekday(), yearweek()

set @dt = '2008-08-08';

select week(@dt); -- 31
select week(@dt,3); -- 32
select weekofyear(@dt); -- 32

select dayofweek(@dt); -- 6
select weekday(@dt); -- 4

select yearweek(@dt); -- 200831

MySQL week() 函数,可以有两个参数,具体可看手册。 weekofyear() 和 week() 一样,都是计算"某天"是位于一年中的第几周。 weekofyear(@dt) 等价于 week(@dt,3)。

MySQL weekday() 函数和 dayofweek() 类似,都是返回"某天"在一周中的位置。 不同点在于参考的标准, weekday:(0 = Monday, 1 = Tuesday, ..., 6 = Sunday); dayofweek:(1 = Sunday, 2 = Monday, ..., 7 = Saturday)

MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。

5. MySQL 返回星期和月份名称函数:dayname(), monthname()

set @dt = '2008-08-08';

select dayname(@dt); -- Friday
select monthname(@dt); -- August

思考,如何返回中文的名称呢?

6. MySQL last_day() 函数:返回月份中的最后一天。

select last_day('2008-02-01');  -- 2008-02-29
select last_day('2008-08-08'); -- 2008-08-31

MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天, 可以这样来计算:

mysql> select now(), day(last_day(now())) as days;

+---------------------+------+
| now() | days |
+---------------------+------+
| 2008-08-09 11:45:45 | 31 |
+---------------------+------+

三、MySQL 日期时间计算函数

1. MySQL 为日期增加一个时间间隔:date_add()

set @dt = now();

select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- ...
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week);
select date_add(@dt, interval 1 month);
select date_add(@dt, interval 1 quarter);
select date_add(@dt, interval 1 year);
select date_add(@dt, interval -1 day);       -- sub 1 day

MySQL adddate(), addtime()函数,可以用 date_add() 来替代。 下面是 date_add() 实现 addtime() 功能示例:

mysql> set @dt = '2008-08-09 12:12:33';

mysql>
mysql> select date_add(@dt, interval '01:15:30' hour_second);

+------------------------------------------------+
| date_add(@dt, interval '01:15:30' hour_second) |
+------------------------------------------------+
| 2008-08-09 13:28:03 |
+------------------------------------------------+
mysql> select date_add(@dt, interval '1 01:15:30' day_second);

+-------------------------------------------------+
| date_add(@dt, interval '1 01:15:30' day_second) |
+-------------------------------------------------+
| 2008-08-10 13:28:03 |
+-------------------------------------------------+

date_add() 函数,分别为 @dt 增加了"1小时 15分 30秒" 和 "1天 1小时 15分 30秒"。 建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。

2. MySQL 为日期减去一个时间间隔:date_sub()

mysql> select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);

+----------------------------------------------------------------+
| date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second) |
+----------------------------------------------------------------+
| 1997-12-30 22:58:59 |
+----------------------------------------------------------------+

MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。 另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。

3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)

函数参数"P" 的格式为"YYYYMM" 或者 "YYMM",第二个参数"N" 表示增加或减去 N month(月)。

MySQL period_add(P,N):日期加/减去N月。

mysql> select period_add(200808,2), period_add(20080808,-2)

+----------------------+-------------------------+
| period_add(200808,2) | period_add(20080808,-2) |
+----------------------+-------------------------+
| 200810 | 20080806 |
+----------------------+-------------------------+

MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。

mysql> select period_diff(200808, 200801);

+-----------------------------+
| period_diff(200808, 200801) |
+-----------------------------+
| 7 |
+-----------------------------+

在 MySQL 中,这两个日期函数,一般情况下很少用到。

4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)

MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

select datediff('2008-08-08', '2008-08-01');  -- 7
select datediff('2008-08-01', '2008-08-08'); -- -7

MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08
select timediff('08:08:08', '00:00:00'); -- 08:08:08

注意:timediff(time1,time2) 函数的两个参数类型必须相同。

四、MySQL 日期转换函数、时间转换函数

1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05');  -- 3605
select sec_to_time(3605); -- '01:00:05'

2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

select to_days('0000-00-00');  -- 0
select to_days('2008-08-08'); -- 733627
select from_days(0);           -- '0000-00-00'
select from_days(733627); -- '2008-08-08'

3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

select str_to_date('08/09/2008', '%m/%d/%Y');                   -- 2008-08-09
select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09
select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09
select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30
select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30

可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。 另外,它也可以转换为时间。"format" 可以参看 MySQL 手册。

4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

mysql> select date_format('2008-08-08 22:23:00', '%W %M %Y');

+------------------------------------------------+
| date_format('2008-08-08 22:23:00', '%W %M %Y') |
+------------------------------------------------+
| Friday August 2008 |
+------------------------------------------------+
mysql> select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s');

+----------------------------------------------------+
| date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s') |
+----------------------------------------------------+
| 20080808222301 |
+----------------------------------------------------+
mysql> select time_format('22:23:01', '%H.%i.%s');

+-------------------------------------+
| time_format('22:23:01', '%H.%i.%s') |
+-------------------------------------+
| 22.23.01 |
+-------------------------------------+

MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

5. MySQL 获得国家地区时间格式函数:get_format()

MySQL get_format() 语法:

get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'

MySQL get_format() 用法的全部示例:

select get_format(date,'usa')          ;   -- '%m.%d.%Y'
select get_format(date,'jis') ; -- '%Y-%m-%d'
select get_format(date,'iso') ; -- '%Y-%m-%d'
select get_format(date,'eur') ; -- '%d.%m.%Y'
select get_format(date,'internal') ; -- '%Y%m%d'
select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'
select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'
select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'
select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'
select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'
select get_format(time,'usa') ; -- '%h:%i:%s %p'
select get_format(time,'jis') ; -- '%H:%i:%s'
select get_format(time,'iso') ; -- '%H:%i:%s'
select get_format(time,'eur') ; -- '%H.%i.%s'
select get_format(time,'internal') ; -- '%H%i%s'

MySQL get_format() 函数在实际中用到机会的比较少。

6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31);   -- '2001-01-31'
select makedate(2001,32); -- '2001-02-01'
select maketime(12,15,30);  -- '12:15:30'

五、MySQL 时间戳(Timestamp)函数

1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

mysql> select current_timestamp, current_timestamp();

+---------------------+---------------------+
| current_timestamp | current_timestamp() |
+---------------------+---------------------+
| 2008-08-09 23:22:24 | 2008-08-09 23:22:24 |
+---------------------+---------------------+

2. MySQL (Unix 时间戳、日期)转换函数:

unix_timestamp(),
unix_timestamp(date),
from_unixtime(unix_timestamp),
from_unixtime(unix_timestamp,format)

下面是示例:

select unix_timestamp();                       -- 1218290027
select unix_timestamp('2008-08-08'); -- 1218124800
select unix_timestamp('2008-08-08 12:30:00'); -- 1218169800
select from_unixtime(1218290027);              -- '2008-08-09 21:53:47'
select from_unixtime(1218124800); -- '2008-08-08 00:00:00'
select from_unixtime(1218169800); -- '2008-08-08 12:30:00'
select from_unixtime(1218169800, '%Y %D %M %h:%i:%s %x'); -- '2008 8th August 12:30:00 2008'

3. MySQL 时间戳(timestamp)转换、增、减函数:

timestamp(date)                                     -- date to timestamp
timestamp(dt,time) -- dt + time
timestampadd(unit,interval,datetime_expr) --
timestampdiff(unit,datetime_expr1,datetime_expr2) --

请看示例部分:

select timestamp('2008-08-08');                         -- 2008-08-08 00:00:00
select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01
select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01
select timestampadd(day, 1, '2008-08-08 08:00:00');     -- 2008-08-09 08:00:00
select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00

MySQL timestampadd() 函数类似于 date_add()。

select timestampdiff(year,'2002-05-01','2001-01-01');                    -- -1
select timestampdiff(day ,'2002-05-01','2001-01-01'); -- -485
select timestampdiff(hour,'2008-08-08 12:00:00','2008-08-08 00:00:00'); -- -12

select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7

MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个 日期(date)之间相差的天数。

六、MySQL 时区(timezone)转换函数

convert_tz(dt,from_tz,to_tz)
select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00

时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

select date_add('2008-08-08 12:00:00', interval -8 hour);  -- 2008-08-08 04:00:00
select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00
select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00

2011年5月31日星期二

为什么我.htacess和apache都设置了 可结果还是不能重写url呢

RT,我apache都已经设置了 AllowOverride All和LoadModule rewrite_module modules/mod_rewrite.so的#号都去掉了 为什么还是不能重写url?
-------------------------------------------------------------
最佳答案
第一 AllowOverride All 这个配置和rewrite无关。 第二 你说的另外一个配置修改是加载rewrite module,但不能完全保证加载成功。  建议你按照以下步骤排查: 1、bin/httpd -l 检查一下httpd程序中是否已经默认编译进了rewrite module。如果输出中有mod_rewrite.c,那么注释掉LoadModule rewrite_module modules/mod_rewrite.so这一行,rewrite module已经加载成功。如果没有,进行步骤2. 2、在httpd.conf中增加你的LoadModule行,检查modules/下是否有mod_rewrite.so这个文件(必须是这个文件名),确保文件存在就可以了。 3、上面两步检查之后,就可以确保mod_rewrite真的已经可用了。 4、rewrite生效还需要保证httpd.conf中相关的配置(比如RewriteRule)配置正确。

2011年1月9日星期日

SEM如何推动传统产业营销(转)

电子商务毫无疑问已成为当前一个新的创业和创造财富的机会。而当我们讨论搜索引擎营销时,这个营销工具和它所创造的影响力是跨越了电子商务企业和传统企业的。接下来我将探讨的话题就是,跨越到传统行业的搜索引擎营销应该怎么做。

    美国人刘易斯曾在1898年提出营销影响消费者的AIDMA模式:引起注意(Attention)—感兴趣(Interest)—产生欲望 (Desire)—形成记忆(Memory)—产生行动(Action)。这是营销专业人士长久以来遵循的营销模式。而后日本最大的4A公司电通在 2005年提出了新的模型AISAS:注意(Attention)—兴趣(Interest)—搜索(Search)—行动(Action)—分享 (Share)。这个改进后的模型反映出今天的消费者在获取信息、消费行为以及购买后的行为的客观现状和变化——特别是消费者“主动搜索”的环节重要性的 凸显。当人开始对一件事物感兴趣的时候,首先要做的就是搜索相关的信息,而互联网这种手段是百分之九十五的消费者都会使用的,它已经成为受众获取信息的一 个重要渠道。

    目前限制中国SEO和SEM领域发 展的最大瓶颈,基本还是基于电子商务型企业不够多这个事实。但是很多原本非电子商务型的企业已经开始尝试这个服务,以国航为例,自从携程给机票代理服务商 带来了良好的发展势头,国航便开始感觉到了压力。于是国航网站开始尝试做自己的在线订票业务,并整合到其电子商务网站平台上来。这是传统企业向SEM扩展 的一个非常典型的例子。类似的例子还有国美和海尔,其电子商务网站的扩建和提升速度近期都很快。

    通常只有少数的创业者和新兴行业会一开始就建设自己的电子商务网站,而对于传统行业,SEO和SEM服务商的工作就不仅仅是优化了,而是更多的涉及互联网 营销的咨询顾问工作。在我们做过的一个案例中,BMW公司针对其搜索引擎营销做出了一些整改。在2008年7月整改以前,使用百度搜索“宝马”出来的结果 非常乱,有修车厂,有个人销售,有4S店,也有官方的网站,还有一些路标店。整个页面呈现的效果与一个高端奢侈品品牌应有的形象传播不太契合。而在 adSage北京的一次SEM学院讨论提出这个案例以后,宝马的服务商很快根据我们的建议,开始对投放进行改进。于是在2009年4月,同样百度搜索“宝 马”,会发现出现的页面已经变得相当有条理,而且有了新的品牌专区,显示性图片等。这个案例充分的利用了搜索引擎进行营销,不仅有文字链接和图片,不仅是 购买品牌关键词,而且有效的利用了百度这个平台和工具,使广告资源得到了优化和整合。我们再来看一下奔驰,发现搜索出来的结果页面跟08年7月的宝马页是 一样的,虽然是很顶尖很高端的品牌,但在利用新的互联网营销工具上,目前还非常稚嫩。

    以新东方的为例。虽然新东方的品牌在所有的英语培训机构里面品牌形象最高,但是其关键词购买数量非常少,与竞争对手在搜索引擎营销上形成了很大差异。这是 传统行业里一个常见的现象,即强势品牌效应可以延伸到搜索引擎的领域,但是具体的营销操作和实施方法却相对比较滞后,因为他们没有掌握这个新兴的营销工 具。考虑到网站既有吸引新学员的作用,又可以使无法进入课堂学习的人通过网络来接受课程,因此我们建议对其在线网站koolearn的推广进行细分,把适合线上推广的课程单独区分出来,这样便可以增加一部分新的收入,即带来相应的增加值。

    具体的执行大体分为四步。第一步是观察研究和区分使用搜索的人,即将进教室的人和在网上接受授课的人进行区分,这是很关键的一步;第二部是根据不同的情况 进行选词、文案的竞价,利用新东方的品牌优势达到最佳效果;第三部是广告的精准引导;第四步是一个完善的跟踪,利用呼叫中心对已经转换的客户进行采样调 查,以验证这些转换是否跟我们网络营销的猜测和假想相似。

    在选词时我们也有一些技巧,如用户的购买意愿和关键词数量等。按照相关性、单词量等因素将关键词分为三个层次级别;不是把词混在一起,而是把词按这样的方 式进行分类,充分利用百度这个平台,包括右侧的可利用资源等。因此说SEM并不仅仅是竞价相关、海量词的优化和分析,更多时候你需要深入到客户的业务中。 尤其是对传统行业而言,了解其业务是帮助转向online平台的捷径,包括产品更新、促销信息等。

    在执行的组织上,我们利用专业的adSageforSearch的系统工具,为执行过程中的关键字管理,效果优化提供了有力保障。在过去六个月中,新东方 SEM的投资汇报率增长了1800%,投放金额增长了600%。在后续的计划当中,我们在跟新东方工作当中,也为他制定了进一步的SEM计划,帮助其更好 的利用好搜索引擎这个平台。现在,搜索引擎已经成为新东方在线的重要的营销渠道;这些案例也进一步帮助我们修正对SEM的理解:SEM并不是SEO短暂的 竞价排名,而是一个综合性的营销工具;今天的互联网尤其是搜索引擎营销,已不仅仅是新兴行业和电子商务的一个课题,同时也是很多传统企业需要研究的一个方 向。

摘自:http://bbs.hqew.com/viewthread.php?tid=56491&extra=page%3D1

教您拜访客户(转)

在一些营销理论文章中,我们经常可以读到许多精辟的论点,专家们经常提到就是一位优秀的SALES(销售人员)应该具有学者的头脑、艺术家的心、技术者的 手、劳动者的脚,原本这句话可以给我们带来许多积极意义,但事实上,我发现许多像我一样的营销人员在拜访目标客户时,往往则是另外一种情形。 小周是一家LED显示屏公 司负责开拓集团消费业务的一名业务人员,他就经常跟我说起他拜访客户时的苦恼,他说他最担心拜访新客户,特别是初访,新客户往往就是避而不见或者就是在面 谈二、三分钟后表露出不耐烦的情形,听他说了这些,于是我就向他问下面一问题: 你明确地知道初次拜访客户的主要目的吗? 在见你的客户时你做了哪些细致的准备工作? 在见你的客户前,你通过别人了解过他的一些情况吗? 在初次见到你的客户时,你跟他说的前三句话是什么? 在与客户面谈的时间里,你发现是你说的话多,还是客户说的话多? 结果小周告诉我,他说他明确地知道他初次拜访客户的主要目的就是了解客户是不是有购买他们公司产品的需求,当然他也做了一些简单的准备工作,如准备产品资 料、名片等,不过,在见客户时他没有通过别人去了解过客户的情况,见到客户时的前三句话自然就是开门见山,报公司名称和自己的名字、介绍产品、然后问他是 否有购买产品的兴趣;在与客户交谈时,小周说应该是自己说的话多,因为机不可失,时不再来嘛; 当他说完这些,我笑了,因为我突然从小周身上发现了自己以前做业务时的影子,记得那时自己做业务时,也是一样喜欢单刀直入,见到客户时,往往迫不及待地向 客户灌输产品情况,直到后来参加几次销售培训后,才知道像我们这样初次拜访客户无异是撬开客户的大嘴,向他猛灌"信息垃圾"。 我们都知道,其实做销售有五大步骤:事前的准备、接近、需求探寻、产品的介绍与展示、缔结业务关系,而所有这些工作无一不是建立在拜访客户的基础之上。因 此,做为一名职业营销人,如何建立自己职业化的拜访之道,然后再成功地运用它,将成为突破客户关系、提升销售业绩的重要砝码!以小周的情况为例,我们不妨 设陌生拜访和二次拜访两个模块, 来探讨一下营销人的客户拜访技巧。 陌生拜访:让客户说说说 营销人自己的角色:只是一名学生和听众; 让客户出任的角色:一名导师和讲演者; 前期的准备工作:有关本公司及业界的知识、本公司及其他公司的产品知识、有关本次客户的相关信息、本公司的销售方针、广泛的知识、丰富的话题、名片、电话 号码簿;
  拜访流程设计:
  
   一、 打招呼:在客户(他)未开口之前,以亲切的音调向客户(他)打招呼问候,如:"王经理,早上好!"
  
   二、 自我介绍:秉明公司名称及自己姓名并将名片双手递上,在与(他)交换名片后,对客户拨空见自己表达谢意;如:"这是我的名片,谢谢您能抽出时间让我见到您!"
  
   三、 破冰:营造一个好的气氛,以拉近彼此之间的距离,缓和客户对陌生人来访的紧张情绪;如:"王经理,我是您部门的张工介绍来的,听他说,你是一个很随和的领导"。
  
   四、 开场白的结构:
  
   1、 提出议程;2、陈述议程对客户的价值;3、时间约定;4、询问是否接受;
  
   如:"王经理,今天我是专门来向您了解你们公司对**产品的一些需求情况,通过知道你们明确的计划和需求后,我可以为你们提供更方便的服务,我们谈的时间大约只需要五分钟,您看可以吗"?
  
   五、 巧妙运用询问术,让客户说说说;
  
   1、 设计好问题漏斗;
  
   通过询问客户来达到探寻客户需求的真正目的,这是营销人员最基本的销售技巧,在询问客户时,问题面要采用由宽到窄的方式逐渐进行深度探寻。
  
   如:"王经理,您能不能介绍一下贵公司今年总体的商品销售趋势和情况?"、"贵公司在哪些方面有重点需求?"、"贵公司对**产品的需求情况,您能介绍一下吗?"
  
   2、 结合运用扩大询问法和限定询问法;
  
   采用扩大询问法,可以让客户自由地发挥,让他多说,让我们知道更多的东西,而采用限定询问法,则让客户始终不远离会谈的主题,限定客户回答问题的方向,在询问客户时,营销人员经常会犯的毛病就是"封闭话题"。
  
   如:"王经理,贵公司的产品需求计划是如何报审的呢?"这就是一个扩大式的询问法;如:"王经理,像我们提交的一些供货计划,是需要通过您的审批后才能在 下面的部门去落实吗?"这是一个典型的限定询问法;而营销人员千万不要采用封闭话题式的询问法,来代替客户作答,以造成对话的中止,如:"王经理,你们每 个月销售**产品大概是六万元,对吧?"
  
   3、 对客户谈到的要点进行总结并确认;
  
   根据会谈过程中,你所记下的重点,对客户所谈到的内容进行简单总结,确保清楚、完整,并得到客户一致同意;
  
   如:"王经理,今天我跟你约定的时间已经到了,今天很高兴从您这里听到了这么多宝贵的信息,真的很感谢您!您今天所谈到的内容一是关于……二是关于……三是关于……,是这些,对吗?"
  
   六、 结束拜访时,约定下次拜访内容和时间;
  
   在结束初次拜访时,营销人员应该再次确认一下本次来访的主要目的是否达到,然后向客户叙述下次拜访的目的、约定下次拜访的时间。
  
   如:"王经理,今天很感谢您用这么长的时间给我提供了这么多宝贵的信息,根据你今天所谈到的内容,我将回去好好的做一个供货计划方案,然后再来向您汇报,您看我是下周二上午将方案带过来让您审阅,您看可以吗?"
  
摘自:http://bbs.hqew.com/viewthread.php?tid=56379&extra=page%3D2

让采购远离忙碌(转)

1、从整理你的办公桌面开始;

大家都知道采购员的文件资料是很多的,有发票、入库单、传真、技术图纸、需求计划、合同、报价等等。可以这样说,大多采购的桌面是混乱的。而这些混乱是影 响你工作情绪、增加你工作量的一个重要因素。现在开始整理你的桌面,让文档管理更加规范,养成及时处理的习惯,给自己一个整洁、清新的办公环境。

方法有:A、尽量用邮件交流,减少传真,B、公司用电脑传真,C、将重要的书面资料通过扫描的办法存入电脑,D、在电脑中进行分类管理,E、定期对文件进行清理等等。

2、合理应用邮件、贸易通、QQ(MSN)和电话

电话多是采购部门的特点,但是电话最好用来解决简单的沟通问题,为了不让过多的电话影响你一天的计划,可以要求有关人员将需要沟通解决的问题通过邮件的形 式来沟通。这样,你可以选择合适的时间去处理这些邮件。而需要自己去沟通重要的问题,也可以设置不同的格式模板来处理,可以既规范又节省时间,如:质量反 馈单、工作联系单等。

3、学会处理邮件

现在的采购工作中,邮件的阅读量会越来越大,在邮件上所花费的时间也越来越多。处理邮件要迅速,要能立即判断该邮件处理的先后顺序,将邮件及时分类成紧急 处理、优先处理和待处理几类。要要求发送方在邮件的标题上著名清楚邮件的核心内容和处理的紧急程度。所有邮件的处理尽量当日阅读完毕,对于未能处理的邮件 内容要列入工作日记。及时删除垃圾邮件。

4、学会做工作日记

每天晚上或第二天上班前要提炼当日(或次日)工作计划的要点,检查各项工作完成的情况,事不过夜,日清日毕!在日常工作中,把重点问题记录在工作日记上,防止遗漏!

5、学会思考与总结,不做"井底之蛙",而要"登高望远"

这是一个优秀采购必须具备的素质,是防止采购问题重复发生的主要解决办法,也是提高自我的手段,是一个业务型采购走向管理型采购的开始。要能够发现问题, 解决问题,总结问题,规避同类问题发生。不能仅仅"做事",而更多的还是要"管事"!一个不能脱身于采购事务之外来认真思考自己工作的采购,一个不能站在 更高的层次去思考、总结自己工作的采购,其进步的速度是缓慢的,其忙碌的一生也是可以想象的!

摘自:http://bbs.hqew.com/viewthread.php?tid=56750&extra=page%3D1