ÈÕÀú
| |||||||||
| ÈÕ | Ò» | ¶þ | Èý | ËÄ | Îå | Áù | |||
| 1 | 2 | ||||||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
| 10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
| 17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
| 24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
| 31 | |||||||||
ËÑË÷±êÌâ
ͳ¼ÆÐÅÏ¢
- ·ÃÎÊÁ¿: 988
- ÈÕÖ¾Êý: 14
- ͼƬÊý: 1
- ½¨Á¢Ê±¼ä: 2008-01-07
- ¸üÐÂʱ¼ä: 2008-04-17
ÎÒµÄ×îÐÂÈÕÖ¾
-
ÈçºÎʵÏÖÁ½Ì¨MySQLÊý¾Ý¿âÊý¾ÝµÄͬ²½
2008-4-17
×ö¿ª·¢µÄʱºòÒª×öMysqlµÄÊý¾Ý¿âͬ²½£¬Á½Ì¨°²×°Ò»ÑùµÄϵͳ£¬¶¼ÊÇFreeBSD5.4£¬°²×°ÁËApache 2.0.55ºÍPHP 4.4.0£¬MysqlµÄ°æ±¾ÊÇ4.1.15£¬¶¼ÊÇĿǰ×îеİ汾¡£
1. °²×°ÅäÖÃ
Á½Ì¨·þÎñÆ÷£¬·Ö±ð°²×°ºÃMysql£¬¶¼°²×°ÔÚ /usr/local/mysql Ŀ¼Ï£¨°²×°²½ÖèÊ¡ÂÔ£¬Çë²Î¿¼Ïà¹ØÎĵµ£©£¬Á½Ì¨·þÎñÆ÷µÄIP·Ö±ðÊÇ192.168.0.1ºÍ192.168.0.2£¬ÎÒÃǰÑ192.168.0.1×÷ΪmasterÊý¾Ý¿â£¬°Ñ192.168.0.2×÷Ϊslave·þÎñÆ÷£¬ÎÒÃDzÉÓõ¥Ïòͬ²½µÄ·½Ê½£¬¾ÍÊÇmasterµÄÊý¾ÝÊÇÖ÷µÄÊý¾Ý£¬È»ºóslaveÖ÷¶¯È¥masterÄĶùͬ²½Êý¾Ý»ØÀ´¡£
Á½Ì¨·þÎñÆ÷µÄÅäÖÃÒ»Ñù£¬ÎÒÃǰѹؼüµÄÅäÖÃÎļþ¿½±´Ò»Ï£¬Ä¬ÈϵÄÅäÖÃÎļþÊÇÔÚ /usr/local/mysql/share/mysqlĿ¼Ï£¬·Ö±ðÓÐ my-large.cnf, my-medium.cnf, my-small.cnfµÈ¼¸¸öÎļң¬ÎÒÃÇÖ»ÊDzâÊÔ£¬Ê¹ÓÃmy-medium.cnf¾ÍÐÐÁË¡£mysql°²×°Íêºó£¬Ä¬ÈϵÄÅäÖÃÎļþÊÇÖ¸¶¨ÔÚÊý¾Ý¿â´æ·ÅĿ¼Ïµģ¬ÎÒÃÇÓõÄÊÇ4.1.XµÄ£¬ËùÒÔÅäÖÃÎļþ¾ÍÓ¦¸ÃÔÚ /usr/local/mysql/var Ŀ¼Ï£¬ÓÚÊǰÑÅäÖÃÎļþ¿½±´¹ýÈ¥£º
cp /usr/local/mysql/share/mysql/my-medium.cnf /usr/local/mysql/var/my.cnf
Á½Ì¨·þÎñÆ÷×öÏàͬµÄ¿½±´ÅäÖÃÎļþ²Ù×÷¡£
2. ÅäÖÃMaster·þÎñÆ÷
ÎÒÃÇÒª°Ñ192.168.0.1ÅäÖÃΪÖ÷mysql·þÎñÆ÷£¨master£©£¬ÄÇôÎÒÃǾÍÒª¿¼ÂÇÎÒÃÇÐèҪͬ²½ÄǸöÊý¾Ý¿â£¬Ê¹ÓÃÄǸöÓû§Í¬²½£¬ÎÒÃÇÕâÀïΪÁ˼òµ¥Æð¼û£¬¾ÍʹÓÃrootÓû§½øÐÐͬ²½£¬²¢ÇÒÖ»ÐèҪͬ²½Êý¾Ý¿âabc¡£
´ò¿ªÅäÖÃÎļþ£º
vi /usr/local/mysql/var/my.cnf
ÕÒµ½Ò»ÏÂÐÅÏ¢£º
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1 //1Ϊmaster£¬2ΪsalveÌí¼ÓÁ½ÐУº
sql-bin-update-same //ͬ²½ÐÎʽ
binlog-do-db = abc //Ҫͬ²½µÄÊý¾Ý¿âÖØÆô192.168.0.1µÄmysql·þÎñÆ÷£º
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &3. ÅäÖÃSlave·þÎñÆ÷
ÎÒÃǵÄslave·þÎñÆ÷Ö÷ÒªÊÇÖ÷¶¯È¥master·þÎñÆ÷ͬ²½Êý¾Ý»ØÀ´£¬ÎÒÃDZà¼ÅäÖÃÎļþ£º
vi /usr/local/mysql/var/my.cnf
ÕÒµ½ÏÂÃæÀàËÆµÄÐÅÏ¢£º
# required unique id between 1 and 2^32 - 1
# defaults to 1 if master-host is not set
# but will not function as a master if omitted
server-id = 1°ÑÉÏÃæµÄserver-idÐÞ¸ÄΪ2£¬Í¬Ê±Ìí¼ÓһЩÐÅÏ¢£º
server-id = 2 //±¾MysqlÊÇslave·þÎñÆ÷
master-host = 192.168.0.1 //master·þÎñÆ÷µÄIP
master-user = root //Á¬½Ómaster·þÎñÆ÷µÄÓû§
master-password = '' //Á¬½Ómaster·þÎñÆ÷µÄÃÜÂë
master-port = 3306 //Á¬½Ó¶Ë¿Ú
master-connect-retry = 10 //ÖØÊÔ´ÎÊý
replicate-do-db = abc //Ҫͬ²½µÄÊý¾Ý¿â
log-slave-updates //ͬ²½µÄÐÎÊ½ÖØÆô192.168.0.2µÄmysql·þÎñÆ÷£º
/usr/local/mysql/bin/mysqladmin shutdown
/usr/local/mysql/bin/mysqld_safe --user=mysql &4. ²âÊÔ°²×°
Ê×ÏȲ鿴һÏÂslaveµÄÖ÷»úÈÕÖ¾£º
cat /usr/local/mysql/var/xxxxx_err £¨xxxÊÇÖ÷»úÃû£©
¼ì²éÊÇ·ñÁ¬½ÓÕý³£, ¿´µ½ÀàËÆÕâÑùµÄÐÅÏ¢¾Í³É¹¦ÁË
051031 11:42:40 mysqld started
051031 11:42:41 InnoDB: Started; log sequence number 0 43634
/usr/local/mysql/libexec/mysqld: ready for connections.
Version: '4.1.15-log' socket: '/tmp/mysql.sock' port: 3306 Source distribution
051031 11:42:41 [Note] Slave SQL thread initialized, starting replication in log 'FIRST'
at position 0, relay log './new4-relay-bin.000001' position: 4
051031 11:43:21 [Note] Slave I/O thread: connected to master 'root@192.168.0.1:3306',
replication started in log 'FIRST' at position 4ÔÚMaster²é¿´ÐÅÏ¢
/usr/local/mysql/bin/mysql -u root
²é¿´master״̬£º
mysql> show master status;
²é¿´MasterÏÂmysql½ø³ÌÐÅÏ¢£º
mysql> show processlist;
ÔÚslaveÉϲ鿴ÐÅÏ¢£º
/usr/local/mysql/bin/mysql -u root
²é¿´slave״̬£º
mysql> show slave status;
²é¿´slaveÏÂmysql½ø³ÌÐÅÏ¢£º
mysql> show processlist;
ÄãÔÙÔÚmasterµÄabc¿âÀィÁ¢±í½á¹¹²¢ÇÒ²åÈëÊý¾Ý£¬È»ºó¼ì²éslaveÓÐûÓÐͬ²½ÕâЩÊý¾Ý£¬¾ÍÄܹ»¼ì²é³öÊÇ·ñÉèÖóɹ¦¡£
×îºó£¬Èç¹ûÓÐÐËȤµÄ»°£¬¿ÉÒÔÑо¿Ò»ÏÂË«»÷Èȱ¸·Ý£¬»òÕßһ̨master£¬¶ą̀slaveµÄͬ²½ÊµÏÖ¡£
-
¼ÓËÙPHP¶¯Ì¬ÍøÕ¾ MySQLË÷Òý·ÖÎöºÍÓÅ»¯
2008-4-14
Ò»¡¢Ê²Ã´ÊÇË÷Òý£¿
Ë÷ÒýÓÃÀ´¿ìËÙµØÑ°ÕÒÄÇЩ¾ßÓÐÌØ¶¨ÖµµÄ¼Ç¼£¬ËùÓÐMySQLË÷Òý¶¼ÒÔB-Ê÷µÄÐÎʽ±£´æ¡£Èç¹ûûÓÐË÷Òý£¬Ö´ÐвéѯʱMySQL±ØÐë´ÓµÚÒ»¸ö¼Ç¼¿ªÊ¼É¨ÃèÕû¸ö±íµÄËùÓмǼ£¬Ö±ÖÁÕÒµ½·ûºÏÒªÇóµÄ¼Ç¼¡£±íÀïÃæµÄ¼Ç¼ÊýÁ¿Ô½¶à£¬Õâ¸ö²Ù×÷µÄ´ú¼Û¾ÍÔ½¸ß¡£Èç¹û×÷ΪËÑË÷Ìõ¼þµÄÁÐÉÏÒѾ´´½¨ÁËË÷Òý£¬MySQLÎÞÐèɨÃèÈκμǼ¼´¿ÉѸËٵõ½Ä¿±ê¼Ç¼ËùÔÚµÄλÖá£Èç¹û±íÓÐ50000¸ö¼Ç¼£¬Í¨¹ýË÷Òý²éÕҼǼÖÁÉÙÒª±È˳ÐòɨÃè¼Ç¼¿ì500±¶¡£ Www@Chinaz@com
¼ÙÉèÎÒÃÇ´´½¨ÁËÒ»¸öÃûΪvtigerµÄ±í£º
CREATE TABLE vtiger( vtigerid SMALLINT NOT NULL,
name CHAR(50) NOT NULL );È»ºó£¬ÎÒÃÇÍêÈ«Ëæ»ú°Ñ1000¸ö²»Í¬nameÖµ²åÈëµ½vtiger±í¡£ÔÚÊý¾ÝÎļþÖÐnameÁÐûÓÐÈκÎÃ÷È·µÄ´ÎÐò¡£Èç¹ûÎÒÃÇ´´½¨ÁËnameÁеÄË÷Òý£¬MySQL½«ÔÚË÷ÒýÖÐÅÅÐònameÁÐ,¶ÔÓÚË÷ÒýÖеÄÿһÏMySQLÔÚÄÚ²¿ÎªËü±£´æÒ»¸öÊý¾ÝÎļþÖÐʵ¼Ê¼Ç¼ËùÔÚλÖõġ°Ö¸Õ롱¡£Òò´Ë£¬Èç¹ûÎÒÃÇÒª²éÕÒnameµÈÓÚ¡°Mike¡±¼Ç¼µÄvtigerid£¨SQLÃüÁîΪ¡°SELECT vtigerid FROM vtiger WHERE name='Mike';¡±£©£¬MySQLÄܹ»ÔÚnameµÄË÷ÒýÖвéÕÒ¡°Mike¡±Öµ£¬È»ºóÖ±½Óתµ½Êý¾ÝÎļþÖÐÏàÓ¦µÄÐУ¬×¼È·µØ·µ»Ø¸ÃÐеÄvtigerid£¨999£©¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬MySQLÖ»Ðè´¦ÀíÒ»¸öÐоͿÉÒÔ·µ»Ø½á¹û¡£Èç¹ûûÓС°name¡±ÁеÄË÷Òý£¬MySQLҪɨÃèÊý¾ÝÎļþÖеÄËùÓмǼ£¬¼´1000¸ö¼Ç¼£¡ÏÔÈ»£¬ÐèÒªMySQL´¦ÀíµÄ¼Ç¼ÊýÁ¿Ô½ÉÙ£¬ÔòËüÍê³ÉÈÎÎñµÄËٶȾÍÔ½¿ì¡£
¶þ¡¢Ë÷ÒýµÄÀàÐÍ
MySQLÌṩ¶àÖÖË÷ÒýÀàÐ͹©Ñ¡Ôñ£º
ÆÕͨË÷Òý£º
ÕâÊÇ×î»ù±¾µÄË÷ÒýÀàÐÍ£¬¶øÇÒËüûÓÐΨһÐÔÖ®ÀàµÄÏÞÖÆ¡£ÆÕͨË÷Òý¿ÉÒÔͨ¹ýÒÔϼ¸ÖÖ·½Ê½´´½¨£º
´´½¨Ë÷Òý£¬ÀýÈçCREATE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí)£»
ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí)£»
´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], INDEX [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) )£»
ΨһÐÔË÷Òý£º
ÕâÖÖË÷ÒýºÍÇ°ÃæµÄ¡°ÆÕͨË÷Òý¡±»ù±¾Ïàͬ£¬µ«ÓÐÒ»¸öÇø±ð£ºË÷ÒýÁеÄËùÓÐÖµ¶¼Ö»ÄܳöÏÖÒ»´Î£¬¼´±ØÐëΨһ¡£Î¨Ò»ÐÔË÷Òý¿ÉÒÔÓÃÒÔϼ¸ÖÖ·½Ê½´´½¨£º
´´½¨Ë÷Òý£¬ÀýÈçCREATE UNIQUE INDEX <Ë÷ÒýµÄÃû×Ö> ON tablename (ÁеÄÁбí)£»
ÐÞ¸Ä±í£¬ÀýÈçALTER TABLE tablename ADD UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí)£»
´´½¨±íµÄʱºòÖ¸¶¨Ë÷Òý£¬ÀýÈçCREATE TABLE tablename ( [...], UNIQUE [Ë÷ÒýµÄÃû×Ö] (ÁеÄÁбí) )£»
Ö÷¼ü£º
Ö÷¼üÊÇÒ»ÖÖΨһÐÔË÷Òý£¬µ«Ëü±ØÐëÖ¸¶¨Îª¡°PRIMARY KEY¡±¡£Èç¹ûÄãÔø¾ÓùýAUTO_INCREMENTÀàÐ͵ÄÁУ¬Äã¿ÉÄÜÒѾÊìϤÖ÷¼üÖ®ÀàµÄ¸ÅÄîÁË¡£Ö÷¼üÒ»°ãÔÚ´´½¨±íµÄʱºòÖ¸¶¨£¬ÀýÈç¡°CREATE TABLE tablename ( [...], PRIMARY KEY (ÁеÄÁбí) ); ¡±¡£µ«ÊÇ£¬ÎÒÃÇÒ²¿ÉÒÔͨ¹ýÐ޸ıíµÄ·½Ê½¼ÓÈëÖ÷¼ü£¬ÀýÈç¡°ALTER TABLE tablename ADD PRIMARY KEY (ÁеÄÁбí); ¡±¡£Ã¿¸ö±íÖ»ÄÜÓÐÒ»¸öÖ÷¼ü¡£
MySQL´Ó3.23.23°æ¿ªÊ¼Ö§³ÖÈ«ÎÄË÷ÒýºÍÈ«ÎļìË÷¡£ÔÚMySQLÖУ¬È«ÎÄË÷ÒýµÄË÷ÒýÀàÐÍΪFULLTEXT¡£È«ÎÄË÷Òý¿ÉÒÔÔÚVARCHAR»òÕßTEXTÀàÐ͵ÄÁÐÉÏ´´½¨¡£Ëü¿ÉÒÔͨ¹ýCREATE TABLEÃüÁî´´½¨£¬Ò²¿ÉÒÔͨ¹ýALTER TABLE»òCREATE INDEXÃüÁî´´½¨¡£¶ÔÓÚ´ó¹æÄ£µÄÊý¾Ý¼¯£¬Í¨¹ýALTER TABLE£¨»òÕßCREATE INDEX£©ÃüÁî´´½¨È«ÎÄË÷ÒýÒª±È°Ñ¼Ç¼²åÈë´øÓÐÈ«ÎÄË÷ÒýµÄ¿Õ±í¸ü¿ì¡£±¾ÎÄÏÂÃæµÄÌÖÂÛ²»ÔÙÉæ¼°È«ÎÄË÷Òý£¬ÒªÁ˽â¸ü¶àÐÅÏ¢£¬Çë²Î¼ûMySQL documentation¡£
Èý¡¢µ¥ÁÐË÷ÒýÓë¶àÁÐË÷Òý
Ë÷Òý¿ÉÒÔÊǵ¥ÁÐË÷Òý£¬Ò²¿ÉÒÔÊǶàÁÐË÷Òý¡£ÏÂÃæÎÒÃÇͨ¹ý¾ßÌåµÄÀý×ÓÀ´ËµÃ÷ÕâÁ½ÖÖË÷ÒýµÄÇø±ð¡£¼ÙÉèÓÐÕâÑùÒ»¸övtiger±í£º
ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
CREATE TABLE vtiger ( vtigerid
SMALLINT NOT NULL AUTO_INCREMENT,
firstname CHAR(50) NOT NULL, lastname CHAR(50) NOT NULL,
age SMALLINT NOT NULL,
townid SMALLINT NOT NULL, PRIMARY KEY (peopleid) );Chinaz~comÏÂÃæÊÇÎÒÃDzåÈëµ½Õâ¸övtiger±íµÄÊý¾Ý£º
Õâ¸öÊý¾ÝƬ¶ÎÖÐÓÐËĸöÃû×ÖΪ¡°Mikes¡±µÄÈË£¨ÆäÖÐÁ½¸öÐÕSullivans£¬Á½¸öÐÕMcConnells£©£¬ÓÐÁ½¸öÄêÁäΪ17ËêµÄÈË£¬»¹ÓÐÒ»¸öÃû×ÖÓëÖÚ²»Í¬µÄJoe Smith¡£
Õâ¸ö±íµÄÖ÷ÒªÓÃ;ÊǸù¾ÝÖ¸¶¨µÄÓû§ÐÕ¡¢ÃûÒÔ¼°ÄêÁä·µ»ØÏàÓ¦µÄvtigerid¡£ÀýÈ磬ÎÒÃÇ¿ÉÄÜÐèÒª²éÕÒÐÕÃûΪMike Sullivan¡¢ÄêÁä17ËêÓû§µÄvtigerid£¨SQLÃüÁîΪSELECT vtigerid FROM vtiger WHERE firstname='Mike' AND lastname='Sullivan' AND age=17£»£©¡£ÓÉÓÚÎÒÃDz»ÏëÈÃMySQLÿ´ÎÖ´Ðвéѯ¾ÍȥɨÃèÕû¸ö±í£¬ÕâÀïÐèÒª¿¼ÂÇÔËÓÃË÷Òý¡£
Ê×ÏÈ£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂÇÔÚµ¥¸öÁÐÉÏ´´½¨Ë÷Òý£¬±ÈÈçfirstname¡¢lastname»òÕßageÁС£Èç¹ûÎÒÃÇ´´½¨firstnameÁеÄË÷Òý£¨ALTER TABLE vtiger ADD INDEX firstname (firstname)£»£©£¬MySQL½«Í¨¹ýÕâ¸öË÷ÒýѸËÙ°ÑËÑË÷·¶Î§ÏÞÖÆµ½ÄÇЩfirstname='Mike'µÄ¼Ç¼£¬È»ºóÔÙÔÚÕâ¸ö¡°Öмä½á¹û¼¯¡±ÉϽøÐÐÆäËûÌõ¼þµÄËÑË÷£ºËüÊ×ÏÈÅųýÄÇЩlastname²»µÈÓÚ¡°Sullivan¡±µÄ¼Ç¼£¬È»ºóÅųýÄÇЩage²»µÈÓÚ17µÄ¼Ç¼¡£µ±¼Ç¼Âú×ãËùÓÐËÑË÷Ìõ¼þÖ®ºó£¬MySQL¾Í·µ»Ø×îÖÕµÄËÑË÷½á¹û¡£
ÓÉÓÚ½¨Á¢ÁËfirstnameÁеÄË÷Òý£¬ÓëÖ´ÐбíµÄÍêȫɨÃèÏà±È£¬MySQLµÄЧÂÊÌá¸ßÁ˺ܶ࣬µ«ÎÒÃÇÒªÇóMySQLɨÃèµÄ¼Ç¼ÊýÁ¿ÈÔ¾ÉÔ¶Ô¶³¬¹ýÁËʵ¼ÊËùÐèÒªµÄ¡£ËäÈ»ÎÒÃÇ¿ÉÒÔɾ³ýfirstnameÁÐÉϵÄË÷Òý£¬ÔÙ´´½¨lastname»òÕßageÁеÄË÷Òý£¬µ«×ܵؿ´À´£¬²»ÂÛÔÚÄĸöÁÐÉÏ´´½¨Ë÷ÒýËÑË÷ЧÂÊÈÔ¾ÉÏàËÆ¡£
ΪÁËÌá¸ßËÑË÷ЧÂÊ£¬ÎÒÃÇÐèÒª¿¼ÂÇÔËÓöàÁÐË÷Òý¡£Èç¹ûΪfirstname¡¢lastnameºÍageÕâÈý¸öÁд´½¨Ò»¸ö¶àÁÐË÷Òý£¬MySQLÖ»ÐèÒ»´Î¼ìË÷¾ÍÄܹ»ÕÒ³öÕýÈ·µÄ½á¹û£¡ÏÂÃæÊÇ´´½¨Õâ¸ö¶àÁÐË÷ÒýµÄSQLÃüÁ
ALTER TABLE vtiger ADD INDEX fname_lname_age (firstname,lastname,age)£»
ÓÉÓÚË÷ÒýÎļþÒÔB-Ê÷¸ñʽ±£´æ£¬MySQLÄܹ»Á¢¼´×ªµ½ºÏÊʵÄfirstname£¬È»ºóÔÙתµ½ºÏÊʵÄlastname£¬×îºóתµ½ºÏÊʵÄage¡£ÔÚûÓÐɨÃèÊý¾ÝÎļþÈκÎÒ»¸ö¼Ç¼µÄÇé¿öÏ£¬MySQL¾ÍÕýÈ·µØÕÒ³öÁËËÑË÷µÄÄ¿±ê¼Ç¼£¡ÄÇô£¬Èç¹ûÔÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϷֱ𴴽¨µ¥ÁÐË÷Òý£¬Ð§¹ûÊÇ·ñºÍ´´½¨Ò»¸öfirstname¡¢lastname¡¢ageµÄ¶àÁÐË÷ÒýÒ»ÑùÄØ£¿´ð°¸ÊÇ·ñ¶¨µÄ£¬Á½ÕßÍêÈ«²»Í¬¡£µ±ÎÒÃÇÖ´ÐвéѯµÄʱºò£¬MySQLÖ»ÄÜʹÓÃÒ»¸öË÷Òý¡£Èç¹ûÄãÓÐÈý¸öµ¥ÁеÄË÷Òý£¬MySQL»áÊÔͼѡÔñÒ»¸öÏÞÖÆ×îÑϸñµÄË÷Òý¡£µ«ÊÇ£¬¼´Ê¹ÊÇÏÞÖÆ×îÑϸñµÄµ¥ÁÐË÷Òý£¬ËüµÄÏÞÖÆÄÜÁ¦Ò²¿Ï¶¨Ô¶Ô¶µÍÓÚfirstname¡¢lastname¡¢ageÕâÈý¸öÁÐÉϵĶàÁÐË÷Òý¡£
ËÄ¡¢×î×óǰ׺
¶àÁÐË÷Òý»¹ÓÐÁíÍâÒ»¸öÓŵ㣬Ëüͨ¹ý³ÆÎª×î×óǰ׺£¨Leftmost Prefixing£©µÄ¸ÅÄîÌåÏÖ³öÀ´¡£¼ÌÐø¿¼ÂÇÇ°ÃæµÄÀý×Ó£¬ÏÖÔÚÎÒÃÇÓÐÒ»¸öfirstname¡¢lastname¡¢ageÁÐÉϵĶàÁÐË÷Òý£¬ÎÒÃdzÆÕâ¸öË÷ÒýΪfname_lname_age¡£µ±ËÑË÷Ìõ¼þÊÇÒÔϸ÷ÖÖÁеÄ×éºÏʱ£¬MySQL½«Ê¹ÓÃfname_lname_ageË÷Òý£º Chinaz.com
ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
firstname£¬lastname£¬age
firstname£¬lastname
firstname´ÓÁíÒ»·½ÃæÀí½â£¬ËüÏ൱ÓÚÎÒÃÇ´´½¨ÁË(firstname£¬lastname£¬age)¡¢(firstname£¬lastname)ÒÔ¼°(firstname)ÕâЩÁÐ×éºÏÉϵÄË÷Òý¡£ÏÂÃæÕâЩ²éѯ¶¼Äܹ»Ê¹ÓÃÕâ¸öfname_lname_ageË÷Òý£º
ÒÔÏÂΪÒýÓõÄÄÚÈÝ£º
SELECT vtigerid FROM vtiger
WHERE firstname='Mike' AND lastname='Sullivan' AND age='17';
SELECT vtigerid FROM vtiger WHERE firstname='Mike' AND lastname='Sullivan';
SELECT vtigerid FROM vtiger WHERE firstname='Mike';
The following queries cannot use the index at all:
SELECT vtigerid FROM vtiger WHERE lastname='Sullivan';
SELECT vtigerid FROM vtiger WHERE age='17';
SELECT vtigerid FROM vtiger WHERE lastname='Sullivan' AND age='17';Î塢ѡÔñË÷ÒýÁÐ
ÔÚÐÔÄÜÓÅ»¯¹ý³ÌÖУ¬Ñ¡ÔñÔÚÄÄЩÁÐÉÏ´´½¨Ë÷ÒýÊÇ×îÖØÒªµÄ²½ÖèÖ®Ò»¡£¿ÉÒÔ¿¼ÂÇʹÓÃË÷ÒýµÄÖ÷ÒªÓÐÁ½ÖÖÀàÐ͵ÄÁУºÔÚWHERE×Ó¾äÖгöÏÖµÄÁУ¬ÔÚjoin×Ó¾äÖгöÏÖµÄÁС£Çë¿´ÏÂÃæÕâ¸ö²éѯ£º
SELECT age ## ²»Ê¹ÓÃË÷Òý
FROM vtiger WHERE firstname='Mike' ## ¿¼ÂÇʹÓÃË÷Òý
AND lastname='Sullivan' ## ¿¼ÂÇʹÓÃË÷Òý
Õâ¸ö²éѯÓëÇ°ÃæµÄ²éѯÂÔÓв»Í¬£¬µ«ÈÔÊôÓÚ¼òµ¥²éѯ¡£ÓÉÓÚageÊÇÔÚSELECT²¿·Ö±»ÒýÓã¬MySQL²»»áÓÃËüÀ´ÏÞÖÆÁÐÑ¡Ôñ²Ù×÷¡£Òò´Ë£¬¶ÔÓÚÕâ¸ö²éѯÀ´Ëµ£¬´´½¨ageÁеÄË÷ÒýûÓÐʲô±ØÒª¡£ÏÂÃæÊÇÒ»¸ö¸ü¸´ÔÓµÄÀý×Ó£º
SELECT people.age, ##²»Ê¹ÓÃË÷Òý
town.name ##²»Ê¹ÓÃË÷Òý
FROM vtigerLEFT JOIN town ON
vtiger.townid=town.townid ##¿¼ÂÇʹÓÃË÷Òý
WHERE firstname='Mike' ##¿¼ÂÇʹÓÃË÷Òý
AND lastname='Sullivan' ##¿¼ÂÇʹÓÃË÷Òý
ÓëÇ°ÃæµÄÀý×ÓÒ»Ñù£¬ÓÉÓÚfirstnameºÍlastname³öÏÖÔÚWHERE×Ó¾äÖУ¬Òò´ËÕâÁ½¸öÁÐÈÔ¾ÉÓд´½¨Ë÷ÒýµÄ±ØÒª¡£³ý´ËÖ®Í⣬ÓÉÓÚtown±íµÄtownidÁгöÏÖÔÚjoin×Ó¾äÖУ¬Òò´ËÎÒÃÇÐèÒª¿¼ÂÇ´´½¨¸ÃÁеÄË÷Òý¡£ÄÇô£¬ÎÒÃÇÊÇ·ñ¿ÉÒÔ¼òµ¥µØÈÏΪӦ¸ÃË÷ÒýWHERE×Ó¾äºÍjoin×Ó¾äÖгöÏÖµÄÿһ¸öÁÐÄØ£¿²î²»¶àÈç´Ë£¬µ«²¢²»ÍêÈ«¡£ÎÒÃÇ»¹±ØÐ뿼Âǵ½¶ÔÁнøÐбȽϵIJÙ×÷·ûÀàÐÍ¡£MySQLÖ»ÓжÔÒÔϲÙ×÷·û²ÅʹÓÃË÷Òý£º<£¬<=£¬=£¬>£¬>=£¬BETWEEN£¬IN£¬ÒÔ¼°Ä³Ð©Ê±ºòµÄLIKE¡£¿ÉÒÔÔÚLIKE²Ù×÷ÖÐʹÓÃË÷ÒýµÄÇéÐÎÊÇÖ¸ÁíÒ»¸ö²Ù×÷Êý²»ÊÇÒÔͨÅä·û£¨%»òÕß_£©¿ªÍ·µÄÇéÐΡ£ÀýÈ磬¡°SELECT vtigerid FROM vtiger WHERE firstname LIKE 'Mich%';¡±Õâ¸ö²éѯ½«Ê¹ÓÃË÷Òý£¬µ«¡°SELECT vtigerid FROM vtiger WHERE firstname LIKE '%ike';¡±Õâ¸ö²éѯ²»»áʹÓÃË÷Òý¡£
-
Ôö¼ÓPHPµÄSession´æ´¢ºÍ´¦ÀíÄÜÁ¦
2008-4-09
¿ÉÄܺܶàPHPer¶¼Óõ½ÁËPHPÌṩµÄSession¹¦ÄÜ£¬¿ÉÒÔ·½±ãµÄ½øÐлỰ¹¦ÄÜ´¦Àí£¬PHP·þÎñ¶ËĬÈϵÄsession´æ´¢ÊÇÎļþ´æ·Å·½Ê½£¬ÔÚWindowsÉÏPHPĬÈϵÄSession·þÎñ¶ËÎļþ´æ·ÅÔÚC:\WINDOWS\TempÏ£¬*NIXÏÂĬÈÏ´æ·ÅÔÚ/tmpÏ£¬Èç¹û˵²¢·¢·ÃÎʺܴó»òÕßsession½¨Á¢Ì«¶à£¬ÔÚÕâÁ½¸öĿ¼ÏÂ¾Í»á´æÔÚ´óÁ¿ÀàËÆsess_xxxxxxµÄsessionÎļþ£¬Í¬Ò»¸öĿ¼ÏÂÎļþÊý¹ý¶à»áµ¼ÖÂÐÔÄÜϽµ£¬²¢ÇÒ¿ÉÄܵ¼ÖÂÊܵ½¹¥»÷×îÖÕ³öÏÖÎļþϵͳ´íÎó¡£Õë¶ÔÕâÑùµÄÇé¿ö£¬PHP±¾ÉíÌåÌṩÁ˱ȽϺõĽâ¾ö°ì·¨¡£
¡¡¡¡²»ÉÙÅóÓÑ¿ÉÄܶ¼Ã»ÓÐ×¢Òâµ½php.iniÀïÃæSessionÉèÖò¿·ÖÖÐÓÐÕâÑùÒ»Ï
; session.save_path = "N; MODE; /path"
¡¡¡¡ÕâÏîÉèÖÃÌṩ¸øÎÒÃÇ¿ÉÒÔ¸øsession´æ·ÅĿ¼½øÐж༶ɢÁУ¬ÆäÖС°N¡±±íʾҪÉèÖõÄĿ¼¼¶Êý£¬¡°MODE¡±±íʾĿ¼µÄȨÏÞÊôÐÔ£¬Ä¬ÈÏΪ600£¬ÔÚWINDOWSÉÏ»ù±¾ÊDz»ÓÃÉèÖõģ¬*NIXÉÏÒ²¿ÉÒÔ²»ÓÃÉèÖ㬺óÃæµÄ¡°/path¡±±íʾsessionÎļþ´æ·ÅµÄ¸ùĿ¼·¾¶£¬±ÈÈçÎÒÃÇÉèÖÃΪÏÂÃæµÄ¸ñʽ
session.save_path = "2; /tmp/phpsession"
¡¡¡¡ÉÏÃæµÄÉèÖñíʾÎÒÃǰÑ/tmp/phpsessionĿ¼×÷ΪphpµÄsessionÎļþ´æ·Å¸ùĿ¼£¬ÔÚ¸ÃĿ¼Ï½øÐÐÁ½¼¶Ä¿Â¼É¢ÁУ¬Ã¿Ò»¼¶Ä¿Â¼·Ö±ðÊÇ0-9ºÍa-z¹²36¸ö×ÖĸÊý×ÖΪĿ¼Ãû£¬ÕâÑù´æ·ÅsessionµÄĿ¼¿ÉÒÔ´ïµ½36*36¸ö£¬ÏàÐÅ×÷Ϊµ¥Ì¨·þÎñÆ÷À´Ëµ£¬ÕâÊÇÍêÈ«¹»ÓÃÁË£¬Èç¹û˵ÄúµÄϵͳ¼Ü¹¹Éè¼ÆÎª¶ą̀·þÎñÆ÷¹²ÏísessionÊý¾Ý£¬¿ÉÒÔ°ÑĿ¼¼¶Ôö¼Óµ½3¼¶»òÕ߸ü¶à¡£
¡¡¡¡ÐèҪעÒâµÄÊÇ£¬php×Ô¼º²¢²»»á×Ô¶¯´´½¨×ÓĿ¼£¬ÐèÒªÄú×Ô¼º¶¯ÊÖÈ¥´´½¨£¬ÍøÉÏÕÒµ½ÕâÑùµÄ×Ô¶¯´´½¨Ä¿Â¼µÄ´úÂ룬´ó¼Ò¿ÉÒÔ×ö¸ö²Î¿¼¡£ÏÂÃæµÄ´úÂë×Ô¶¯´´½¨3¼¶×ÓĿ¼£¬¿ÉÒÔ×Ô¼º¶¯ÊÖ¸ù¾ÝÐèÒª½øÐÐÐ޸ġ£
set_time_limit(0);
$string = '0123456789abcdefghijklmnopqrstuvwxyz';
$length = strlen($string);
function makeDir($param)
{
if(!file_exists($param)) {
makeDir(dirname($param));
mkdir($param);
}
}
for($i = 0; $i < $length; $i++) {
for($j = 0; $j < $length; $j++) {
for($k = 0; $k < $length; $k++) {
makeDir($string[$i].'/'.$string[$j].'/'.$string[$k]);
}
}
}
?>
¡¡¡¡´ó¼Ò¿ÉÄÜ×¢Òâµ½Ç°ÃæµÄÎÄ×ÖÖÐÌáµ½ÁËÓйضà·þÎñÆ÷¹²ÏíphpµÄSESSION£¬ÕâÊǺܶàÓ¦Óö¼»áÓöµ½µÄÎÊÌâ£¬ÍøÉÏÒ²Óв»ÉÙÏà¹ØµÄ×ÊÔ´£¬´ó¼Ò¿ÉÒÔÈ¥googleһϣ¬MichaelÕâÀïÖ»Ìáһϴó¸ÅµÄ˼·¡£
¡¡¡¡Ò»°ãÀ´ËµÎÒÃÇÓõ½×î¶àµÄ·½·¨ÓÐÁ½ÖÖ£º
¡¡¡¡1¡¢NFS»òÕßSamba¹²ÏíµÄ·½·¨£¬Èø÷¸ö·þÎñÆ÷ÉÏ´æ·ÅsessionÎļþµÄ´ÅÅ̹²Ïí£¬ÕâÖÖ·½·¨¼òµ¥¿ÉÐС£
¡¡¡¡2¡¢¼¯Öд洢µ½Êý¾Ý¿âÖУ¬ÕâÊDZȽ϶àµÄʵÏÖ·½·¨£¬Í¨¹ýphpÌṩµÄsession_set_save_handler()º¯ÊýÀ´Öض¨Òåsessionº¯Êý£¬ÍƼöʹÓÃÕâÖÖ·½·¨¡£ -
PHP£ºMVCÃÔ˼
2008-4-07
½üÀ´Éè¼ÆÄ£Ê½·çÐУ¬MVCËæ´¦¿É¼û£¬PHPÁìÓòÒ²²»ÀýÍ⣬ºÜ¶àÂÛ̳¶¼¿ªÊ¼ÌÖÂÛÔÚPHPÖÐʹÓÃMVC¡£È»¶ø£¬M¡¢V¡¢CÔÚPHPÖе½µ×¸ÃÈçºÎʵÏÖ£¿MVCÕæµÄÊʺÏPHPô£¿ÕâÀïEasy¸ø³öһЩ×Ô¼ºµÄ˼¿¼¡£¡¡¡¡MVCµÄÔÐÍ
¡¡¡¡MVC±¾À´ÊÇ´æÔÚÓÚDesktop³ÌÐòÖеģ¬MÊÇÖ¸Êý¾ÝÄ£ÐÍ£¬VÊÇÖ¸Óû§½çÃæ£¬CÔòÊÇ¿ØÖÆÆ÷¡£Ê¹ÓÃMVCµÄÄ¿µÄÊǽ«MºÍVµÄʵÏÖ´úÂë·ÖÀ룬´Ó¶øÊ¹Í¬Ò»¸ö³ÌÐò¿ÉÒÔʹÓò»Í¬µÄ±íÏÖÐÎʽ¡£±ÈÈçÒ»Åúͳ¼ÆÊý¾ÝÄã¿ÉÒÔ·Ö±ðÓÃÖù״ͼ¡¢±ýͼÀ´±íʾ¡£C´æÔÚµÄÄ¿µÄÔòÊÇÈ·±£MºÍVµÄͬ²½£¬Ò»µ©M¸Ä±ä£¬VÓ¦¸Ãͬ²½¸üС£
¡¡¡¡JAVAÖеÄMVC
¡¡¡¡JAVA°ÑMVCÒýÈëÁËWebÁìÓò£¬²¢ÔÚ´Ë»ù´¡Éϼܹ¹³öÁËÒ»Ì׳ÆÎªModel2µÄÌåϵ¡£ÓÉÓÚWebµÄÌØÊâÐÔ£¬JAVAÖеÄMVCºÍDesktopÖеÄMVC²¢²»ÍêȫһÖ¡£Ö÷ÒªÔÒòÊÇWebÖеÄV²»ÊdzÖÐøµÄ£¬Óû§Ã¿·ÃÎÊÒ»´Î£¬V¾ÍÒªÖØÐÂÉú³ÉÒ»´Î£¬ËùÒÔVʼÖÕÊǺÍMÒ»Öµģ¬²»ÐèÒªCÀ´¿ØÖÆÍ¬²½¡£ÄÇôJAVAÖеÄCÔÚ¸Éʲô£¿JAVAÖеÄCͨ³£ÓÃÓÚÁ÷³ÌµÄתÏò£¬ÆäʵÓõÄÊÇDispatchģʽ£¬²»ÔÙÊÇDesktopÖеÄCÁË¡£
¡¡¡¡PHPÖеÄMVC
¡¡¡¡ÒªÔÚPHPÖÐÔ·â²»¶¯µÄCOPY JAVAµÄMVCÊDz»¿ÉÄܵġ£ÎÊÌâÖ÷Òª±íÏÖÔÚMÉÏ£¬ÔÚJAVAÖУ¬MÊǶÀÁ¢ÓÚÒµÎñÂß¼ºÍ±íÏÖÂß¼µÄÊý¾ÝÄ£ÐÍ£¬ÔÚ·þÎñÆ÷¶Ë¿çÒ³Ãæ´æÔÚ£¬JAVA Bean°çÑݵľÍÊÇÕâ¸ö½ÅÉ«¡£¶øPHP½ø³Ì²¢²»³¤Ê±¼äפÁôÓÚÄڴ棬ֻÔÚPHPÒ³Ãæ¿ªÊ¼Ö´ÐÐʱ´´½¨£¬ÔÚÒ³Ãæ½âÊÍÖ´ÐнáÊøÊ±¾ÍÒѾ½áÊø¡£ÔÚÕâÑùµÄÇé¿öÏ£¬ÎÒÃǸù±¾ÎÞ·¨Ö±½ÓʵÏÖM¡£ËùÒÔËùÓÐÉù³ÆÊµÏÖÁËMVCģʽµÄPHP³Ìʽ¶¼Ö»ÄÜͨ¹ýÄ£ÄâÊÖ¶ÎÀ´ÊµÏÖM¡£ÊµÏֵķ½Ê½Ò»°ãÊÇÔÚµ±Ç°Ò³Ãæ½áÊøÇ°°ÑÊý¾Ý´æÈëÊý¾Ý¿â»òÕßcookie/session£¬ÔÚÏÂÒ»¸öÒ³ÃæÖÐÔÙ͸¹ýÊý¾Ý¿â»òÕßcookie/sessionÖØ½¨M¡£ÕâÑùµÄ·½Ê½ºÍJAVAÖеÄBean±ÈÆðÀ´¿ÉÒÔ˵ÊÇ¿ªÏú¾Þ´ó£¬±¾À´ÍùÄÚ´æÖÐдÊý¾ÝµÄ¼òµ¥²Ù×÷ÏÖÔÚÒª´Ó·þÎñÆ÷¶Ë´«µ½¿Í»§¶Ë»òÕßÊý¾Ý¿â£¬È»ºóÔÙ´«»ØÀ´¡£ÓëÆäÓÃÕâô´óµÄ¿ªÏúÀ´Î¬»¤Ò»¸öÊý¾ÝÄ£ÐÍÔÙÔÚ×îºó°ÑÕâ¸öÄ£ÐÍÈû»ØÊý¾Ý¿â£¬»¹²»ÈçÖ±½Ó¸ù¾ÝÐèÒª¸üÐÂÊý¾Ý¿âÀï±ßµÄÊý¾Ý¡£¡¡ÏÖÔÚPHPÖеÄMVC¼Ü¹¹¿ÉÒÔÓÃͼһÀ´±íʾ¡£

¡¡¡¡È»ºóÎÒÃÇÔÙÀ´¿´V¡£ÏÖÔںܶàPHP³ÌÐò¼òµ¥µÄʹÓÃÁËһЩģ°å¼¼Êõ¾ÍÔÚ˵Ã÷ÖÐд¡°²ÉÓÃMVC¼Ü¹¹¡±¡£Æäʵ¾ø´ó¶àÊýµÄPHPÄ£°å³ÌÐò¶¼Ö»ÊÇ·ÖÀëHTMLºÍPHPµÄ£¬¶ø·ÇMVCÇ¿µ÷µÄÏÔʾÂß¼ºÍÒµÎñÂß¼·ÖÀë¡£Ò»¸ö»ìÓÃHTMLºÍPHPµÄÒ³ÃæÒ»Ñù¿ÉÒÔÊÇMVCµÄÒ»²¿·Ý¡£ÈçºÎ·ÖÀëÏÔʾÂß¼ºÍÒµÎñÂß¼ÖÁ½ñûÓÐÒ»¸öÂúÒâµÄ·½°¸¡£ÎÒ¸öÈËÔò±È½ÏÈÏͬhttp://www.phpe.net/articles/384.shtmlµÄʵÏÖ·½°¸¡£ÖÁÓÚC£¬ºÍJAVAÖв¶à£¬»¹ÊDZ»ÓÃ×÷תÏò£¬Õâ¸öÔÚPHPÖÐÆäʵ²¢²»ÖØÒª¡£
¡¡¡¡Ò»¸ö¼«ºÄ×ÊÔ´µÄM + Ò»¸öÇø±ð²»´óµÄV + ¿ÉÓпÉÎÞµÄC ¹¹³ÉÁËPHPÖÐËùνµÄMVC¡£
¡¡¡¡»ùÓÚÒÔÉÏ·ÖÎö£¬EasyÈÏΪ£¬PHPÔÓеÄ3²ã¹¹¼Ü±ÈËùνµÄMVC¸üΪ¸ßЧ£¬¶ø3²ã¹¹¼ÜÖеıíÏÖ²ãÒª½â¾öµÄÎÊÌâMVCÖеÄVҲͬÑù´æÔÚ¡£Ò»¸ö¸Ä½øºóµÄ3²ã¼Ü¹¹±ÈMVC¸üÊÊÓÃÓÚPHP¡£
¡¡¡¡PS£ºÓеķ½°¸°ÑÒµÎñÂß¼²¢ÈëMÖУ¨http://www.phpe.net/articles/382.shtml£©£¬ÕâÆäʵÊÇMVCµÄ˼Ïë±³µÀ¶ø³ÛµÄ¡£ -
ÉÏ´«´úÂë
2008-3-25
<?php
/**
+------------------------------------------------------------------------------
* ÎļþÉÏ´«¡¾18_kk008.png¡¿
+------------------------------------------------------------------------------
* @package vtigerCRM/include
* @pagename upload_file.php
+------------------------------------------------------------------------------
*/
require_once('config.php');class UploadFile
{
var $field_name;
var $stored_file_name;function UploadFile ($field_name)
{
global $log;
$log->debug("Entering UploadFile (".$field_name.") method ...");
$this->field_name = $field_name;
$log->debug("Exiting UploadFile method ...");
}
/**
+-----------------------------------------------------------------------
* Function to get the path of the upload file
+-----------------------------------------------------------------------
*/
function get_url($stored_file_name,$bean_id)
{
global $log;
$log->debug("Entering get_url(".$stored_file_name.",".$bean_id.") method ...");
global $site_URL;
global $upload_dir;
$log->debug("Exiting get_url method ...");
return 'http://'.$_ENV['HOSTNAME'] .':' .$_SERVER["SERVER_PORT"].'/'.$upload_dir.$bean_id.$stored_file_name;
}/**
+-----------------------------------------------------------------------
* Function to duplicate and copy a file to another location
+-----------------------------------------------------------------------
* @param $old_id -- old_id:: Type integer
* @param $new_id -- new_id:: Type integer
* @param $file_name -- filename:: Type string
+------------------------------------------------------------------------
*/
function duplicate_file($old_id, $new_id, $file_name)
{
global $log;
$log->debug("Entering duplicate_file(".$old_id.", ".$new_id.", ".$file_name.") method ...");
global $root_directory;
global $upload_dir;
$source = $root_directory.'/'.$upload_dir.$old_id.$file_name;
$destination = $root_directory.'/'.$upload_dir.$new_id.$file_name;
copy( $source,$destination);
$log->debug("Exiting duplicate_file method ...");
}
/**
+-----------------------------------------------------------------------
*Function to get the status of the file upload
+-----------------------------------------------------------------------
* @returns boolean
+------------------------------------------------------------------------
*/
function confirm_upload()
{
global $log;
$log->debug("Eentering confirm_upload() method ...");
global $root_directory;
global $upload_dir;
global $upload_maxsize;
global $upload_badext;
if (!is_uploaded_file($_FILES[$this->field_name]['tmp_name']) )
{
$log->debug("Exiting confirm_upload method ...");
return false;
}
else if ($_FILES[$this->field_name]['size'] > $upload_maxsize)
{
die("ERROR: uploaded file was too big: max filesize:$upload_maxsize");
}
if( !is_writable( $root_directory.'/'.$upload_dir))
{
die ("ERROR: cannot write to directory: $root_directory/$upload_dir for uploads");
}$this->stored_file_name = $this->create_stored_filename();
$log->debug("Exiting confirm_upload method ...");
return true;
}
/**
+-----------------------------------------------------------------------
* Function to get the stored file name
+-----------------------------------------------------------------------
*/
function get_stored_file_name()
{
global $log;
$log->debug("Entering get_stored_file_name() method ...");
$log->debug("Exiting get_stored_file_name method ...");
return $this->stored_file_name;
}
/**
+-----------------------------------------------------------------------
* Function to generate a filename for storing
+-----------------------------------------------------------------------
*/
function create_stored_filename()
{
global $log;
$log->debug("Entering create_stored_filename() method ...");
global $upload_badext;
$stored_file_name = $_FILES[$this->field_name]['name'];$ext_pos = strrpos($stored_file_name, ".");
$ext = substr($stored_file_name, $ext_pos + 1);
if (in_array($ext, $upload_badext))
{
$stored_file_name .= ".txt";
}
$log->debug("Exiting create_stored_filename method ...");
return $stored_file_name;
}
/**
+-----------------------------------------------------------------------
*Function is to move a file and store it in given location
+-----------------------------------------------------------------------
* @param $bean_id -- $bean_id:: Type integer
+-----------------------------------------------------------------------
* @returns boolean
+-----------------------------------------------------------------------
*/
function final_move($bean_id)
{
global $log;
$log->debug("Entering final_move(".$bean_id.") method ...");
global $root_directory;
global $upload_dir;$file_name = $bean_id.$this->stored_file_name;
$destination = $root_directory.'/'.$upload_dir.$file_name;
if (!move_uploaded_file($_FILES[$this->field_name]['tmp_name'], $destination))
{
die ("ERROR: can't move_uploaded_file to $destination");
}
$log->debug("Exiting final_move method ...");
return true;
}
/**
+-----------------------------------------------------------------------
*Function deletes a file for a given file name
+-----------------------------------------------------------------------
*@param $bean_id -- bean_id:: Type integer
*@param $file_name -- file name:: Type string
+-----------------------------------------------------------------------
*@returns boolean
+-----------------------------------------------------------------------
*/
function unlink_file($bean_id,$file_name)
{
global $log;
$log->debug("Entering unlink_file(".$bean_id.",".$file_name.") method ...");
global $root_directory;
global $upload_dir;
$log->debug("Exiting unlink_file method ...");
return unlink($root_directory."/".$upload_dir.$bean_id.$file_name);
}
}
?> -
xajaxÎÞË¢ÐÂÉÏ´«ÊµÀý
2008-1-23
ÓÃÁ˹úÍâÍøÓÑÀ©³äµÄxajaxÀ࣬ʵÏÖÁËxajaxÎÞË¢ÐÂÉÏ´«£¬¸½xajaxÎÞË¢ÐÂÉÏ´«ÊµÀýÒÔ¼°ËµÃ÷
ÏÈÀ´¿´Ò»ÏÂÑÝʾ
http://xajax.dayanmei.com/demo/upload/admin/language.php£¨µã»÷create language,Õâ¸öclickÊÇÓеã´íÎóµÄ£¬ÆäʵӦ¸ÃÖ±½Ó¶ÁÈ¡¶ø²»ÊÇÏÔʾ»òÕßÒþ²Ø²ã£¬»òÕßÄãÓкõĽâ¾ö°ì·¨£©
Ö÷ÒªµÄxajax½áºÏphpÉÏ´«ÎļþºÍ±£´æÊý¾ÝµÄº¯Êý¼¯Öдæ·ÅÔÚ ./admin/includes/function.xajax.php ÀïÃæ
ÔÚlanguage.phpÎļþÔØÈë²¢³õʼ»¯xajaxÉÏ´«À©Õ¹
ÔÚµ÷ÓÃÀ©Õ¹ÉÏ´«£¬ÆäÖÐCreateLanguageÊÇphpÖд¦ÀíÉÏ´«µÄº¯Êý f1ÊÇ±íµ¥µÄidrequire_once(ROOT_PATH . '/includes/xajax/xajax.inc.php');
require_once(ROOT_PATH . '/admin/includes/function.xajax.php');
require_once(ROOT_PATH . '/includes/xajax/xajaxExtend.php');
//$xajax = new xajax();
$xajax = new xajaxExtend;
//$xajax->debugOn();
$xajax->registerFunction("ShowCreateLanguage");
$xajax->registerFunction("CreateLanguage");
$xajax->registerFunction("DeleteLanguage");
$xajax->registerFunction("ModifyLanguage");
$xajax->registerFunction("UpdateLanguage");
$xajax->processRequests();
Ö÷Òª´¦ÀíÉÏ´«º¯Êý<?php
//ÏÔʾÌí¼ÓÓïÑÔ±íµ¥
function ShowCreateLanguage($hidden = 1) {
$objResponse = new XajaxResponse();
if($hidden == 1){
$objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(2);return false\" title=\"\">create language</a>");
$objResponse->addAssign('h','style.display','block');
}else{
$objResponse->addAssign('createlanguage','innerHTML',"<a href=\"\" onclick=\"xajax_ShowCreateLanguage(1);return false\" title=\"\">create language</a>");
$objResponse->addAssign('h','style.display','none');
}
return $objResponse;
}
function CreateLanguage($f1) {
global $db,$tablefix,$LANG;
$objResponse = new xajaxResponse();
$name = xml_escape($f1['name']);
$charset = xml_escape($f1['charset']);
$ord = xml_escape($f1['ord']);
$ord = (($ord == '') OR !is_numeric($ord)) ? '1' : $ord;
if(empty($name)){
$objResponse->addAlert("Language name is empty");
}
if(empty($charset)){
$objResponse->addAlert("charset is empty");
}
if(!empty($name) AND !empty($charset)){
//ÅжÏÊÇ·ñÓÐÉÏ´«Îļþ
if($_FILES['filename']['tmp_name'] <>""){
require_once(ROOT_PATH . '/includes/class.upload.php');
$fileFormat = array('gif','jpg','jpge','png');
$upload = new Upload( ROOT_PATH . '/attaches/', $fileFormat);
if(!$upload->run('filename')){
$objResponse->addAlert("upload image file false");
}else{
//Èç¹û³É¹¦ÉÏ´«ÔòÌí¼Ó½øÊý¾Ý¿â
$filename = $upload->returnArray[0][saveName];
$insertsql = "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','$filename','$charset','$ord')";
if($db->query($insertsql)){
//Èç¹ûÌí¼Ó³É¹¦
$languageid = $db->insertid();
$innerHTML = <<<EOT
<ul id="page_" class="two">
<li>$languageid</li>
<li>$name</li>
<li><img src="../attaches/" width="21" /></li>
<li>$charset</li>
<li>$ord</li>
<li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>
</ul>
EOT;
$objResponse->addAppend("language","innerHTML",$innerHTML);
}
}
//Èç¹ûûÓÐÎļþÉÏ´«
}else{
$insertsql = "INSERT INTO `language` (`languageid`,`name`,`filename`,`charset`,`ord`) VALUES (NULL,'$name','','$charset','$ord')";
if($db->query($insertsql)){
//Èç¹ûÌí¼Ó³É¹¦
$languageid = $db->insertid();
$innerHTML = <<<EOT
<ul id="page_" class="two">
<li>$languageid</li>
<li>$name</li>
<li> </li>
<li>$charset</li>
<li>$ord</li>
<li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>
</ul>
EOT;
$objResponse->addAppend("language","innerHTML",$innerHTML);
}
}
//Çå¿Õ±íµ¥
$objResponse->addClear('name','value');
$objResponse->addClear('filename','value');
$objResponse->addClear('charset','value');
$objResponse->addClear('ord','value');
$objResponse->addAssign("h","style.display","none");
}
return $objResponse;
}
//´Ëº¯ÊýδÍêÈ«
function DeleteLanguage($languageid) {
global $db,$tablefix;
$languageid = xml_escape($languageid);
$objResponse = new XajaxResponse();
if(!is_numeric($languageid)){
$objResponse->addAlert("language id is empty");
}else{
//È¡µÃfilename,²¢É¾³ýͼƬ
$result = $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid'");
$r = $db->fetch_array($result);
@unlink('../attaches/'.$r['filename']);
if($db->query("DELETE FROM `language` WHERE `languageid` = '$languageid' LIMIT 1")){
//Ö´ÐÐɾ³ý Ó¦¸Ã»¹ÒªÉ¾³ýÓëÓïÑÔÏà¹ØµÄ¶«Î÷
//$objResponse->addAlert("success delete a session");
$objResponse->addRemove("page_".$languageid);
}else{
$objResponse->addAlert("failed to delete a session");
}
}
return $objResponse;
}
function ModifyLanguage($languageid) {
global $db,$tablefix,$LANG;
$languageid = xml_escape($languageid);
$objResponse = new XajaxResponse();
if(!is_numeric($languageid)){
$objResponse->addAlert("Language id error");
}else{
$result = $db->query("SELECT * FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");
$language = $db->fetch_array($result);
if(count($language)>0){
if($language['filename'] != ''){
$image = "<img src=\"../attaches/\" width=\"21\">";
}else{
$image = '';
}
$innerHTML = <<<EOT
<div id="midifyinput" style="margin:0 auto;padding:0;width:760px;">
<form id="f2" name="f2" onsubmit="return updateForm();" method="post" enctype="multipart/form-data">
<input type="hidden" name="languageid" value="" />
<table id="addlanguage" class="th">
<th>Language Name</th>
<th>Icon(21px * 14px)</th>
<th>Charset</th>
<th>Order</th>
<th width="150">Control</th>
<tr>
<td><input type="text" name="name" id="name" value="" /></td>
<td>$image<input type="file" name="filename" /></td>
<td><input type="text" name="charset" id="charset" value="" /></td>
<td><input type="text" name="ord" id="ord" value="" /></td>
<td><input type="submit" class="button1" name="" value="$LANG[add]" /></td>
</tr>
</table>
</form>
</div>
EOT;
$objResponse->addAssign("h","style.display",'');
$objResponse->addAssign("h","innerHTML",$innerHTML);
}else{
$objResponse->addAlert("Language is not installed");
}
}
return $objResponse;
}
function UpdateLanguage($f2) {
global $db,$tablefix,$LANG;
$objResponse = new xajaxResponse();
$name = xml_escape($f2['name']);
$charset = xml_escape($f2['charset']);
$languageid = xml_escape($f2['languageid']);
$ord = xml_escape($f2['ord']);
$ord = (($ord == '') OR !is_numeric($ord)) ? '1' : $ord;
if(empty($name)){
$objResponse->addAlert("Language name is empty");
}
if(empty($charset)){
//$objResponse->addAlert("charset is empty");
}
if(!empty($name) AND !empty($charset)){
//ÅжÏÊÇ·ñÓÐÉÏ´«Îļþ
if($_FILES['filename']['tmp_name'] != ""){
require_once(ROOT_PATH . '/includes/class.upload.php');
$fileFormat = array('gif','jpg','jpge','png');
$upload = new Upload( ROOT_PATH . '/attaches/', $fileFormat);
if(!$upload->run('filename')){
$objResponse->addAlert("upload image file false");
}else{
//Èç¹û³É¹¦ÉÏ´«ÔòÌí¼Ó½øÊý¾Ý¿â
$filename = $upload->returnArray[0][saveName];
//»ñÈ¡ÔÀ´µÄͼƬ·¾¶²¢É¾³ý
$result = $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");
$image = $db->fetch_array($result);
if(count($image)>0){
@unlink('../attaches/'.$image['filename']);
}
//¸üÐÂÊý¾Ý¿â
$updatesql = "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord',`filename` = '$filename' WHERE `languageid` = '$languageid' LIMIT 1";
if($db->query($updatesql)){
//Èç¹ûÌí¼Ó³É¹¦
$RooPath = ROOT_PATH;
$innerHTML = <<<EOT
<li>$languageid</li>
<li>$name</li>
<li><img src="../attaches/" width="21" /></li>
<li>$charset</li>
<li>$ord</li>
<li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>
EOT;
$objResponse->addAssign("page_","innerHTML",$innerHTML);
}
}
//Èç¹ûûÓÐÎļþÉÏ´«
}else{
//¸üÐÂÊý¾Ý¿â
$updatesql = "UPDATE `language` SET `name` = '$name',`charset` = '$charset',`ord` = '$ord' WHERE `languageid` = '$languageid' LIMIT 1";
if($db->query($updatesql)){
//Èç¹ûÌí¼Ó³É¹¦
$result = $db->query("SELECT `filename` FROM `language` WHERE `languageid` = '$languageid' LIMIT 1");
$image = $db->fetch_array($result);
if(count($image)>0){
$filename = $image['filename'];
}
$innerHTML = <<<EOT
<li>$languageid</li>
<li>$name</li>
<li><img src="../attaches/" width="21" /></li>
<li>$charset</li>
<li>$ord</li>
<li style="width:180px;"><a class="button1" href="" onclick="if(confirm('sure?')) xajax_DeleteLanguage($languageid);return false;" title="">$LANG[delete]</a> <a class="button1" href="" onclick="xajax_ModifyLanguage($languageid); return false;" title="">$LANG[edit]</a></li>
EOT;
$objResponse->addAssign("page_","innerHTML",$innerHTML);
}
}
//Òþ²Ø±íµ¥
$objResponse->addAssign("h","style.display","none");
}
return $objResponse;
}
?>
<scr¨©pt language="Javascr¨©pt">
function checkForm() {
return xajax.upload('CreateLanguage','f1');
}
function updateForm() {
return xajax.upload('UpdateLanguage','f2');
}
</scr¨©pt> -
Summary: ͼƬ´¦Àí³ÌÐò
2008-1-22
<?php
//====================================================
// FileName:GDImage.inc.php
// Summary: ͼƬ´¦Àí³ÌÐò
//====================================================class GDImage
{
var $sourcePath; //ͼƬ´æ´¢Â·¾¶
var $galleryPath; //ͼƬËõÂÔͼandˮӡͼ´æ´¢Â·¾¶
var $toFile = false; //ÊÇ·ñÉú³ÉÎļþ
var $fontName; //ʹÓõÄÓ¢ÎÄTTF×ÖÌåÃû³Æ
var $fontName_GBK;
var $maxWidth = 500; //ͼƬ×î´ó¿í¶È
var $maxHeight = 600; //ͼƬ×î´ó¸ß¶È//==========================================
// º¯Êý: GDImage($sourcePath ,$galleryPath, $fontPath)
// ¹¦ÄÜ: constructor
// ²ÎÊý: $sourcePath ͼƬԴ·¾¶(°üÀ¨×îºóÒ»¸ö"/")
// ²ÎÊý: $galleryPath Éú³ÉͼƬµÄ·¾¶
// ²ÎÊý: $fontPath ×ÖÌå·¾¶
//==========================================
function GDImage($sourcePath, $galleryPath, $fontPath)
{
$this->sourcePath = $sourcePath;
$this->galleryPath = $galleryPath;
$this->fontName = $fontPath . "04B_08__.TTF";
$this->fontName_GBK = $fontPath . "ººÒÇ×ÛÒÕÌå¼ò.ttf";
}//==========================================
// º¯Êý: makeThumb($sourFile,$width=128,$height=128)
// ¹¦ÄÜ: Éú³ÉËõÂÔͼ(Êä³öµ½ä¯ÀÀÆ÷)
// ²ÎÊý: $sourFile ͼƬԴÎļþ
// ²ÎÊý: $width Éú³ÉËõÂÔͼµÄ¿í¶È
// ²ÎÊý: $height Éú³ÉËõÂÔͼµÄ¸ß¶È
// ·µ»Ø: 0 ʧ°Ü ³É¹¦Ê±·µ»ØÉú³ÉµÄͼƬ·¾¶
//==========================================
function makeThumb($sourFile,$width=102,$height=78)
{
$imageInfo = $this->getInfo($sourFile);
$sourFile = $this->sourcePath . $sourFile;
$newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_thumb.jpg";
switch ($imageInfo["type"])
{
case 1: //gif
$img = imagecreatefromgif($sourFile);
break;
case 2: //jpg
$img = imagecreatefromjpeg($sourFile);
break;
case 3: //png
$img = imagecreatefrompng($sourFile);
break;
default:
return 0;
break;
}
if (!$img)
return 0;$width = ($width > $imageInfo["width"]) ? $imageInfo["width"] : $width;
$height = ($height > $imageInfo["height"]) ? $imageInfo["height"] : $height;
//$srcW = $imageInfo["width"];
//$srcH = $imageInfo["height"];
//if ($srcW * $width > $srcH * $height)
//$height = round($srcH * $width / $srcW);
//else
//$width = round($srcW * $height / $srcH);
//*
if (function_exists("imagecreatetruecolor")) //GD2.0.1
{
$new = imagecreatetruecolor($width, $height);
ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
}
else
{
$new = imagecreate($width, $height);
ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
}
//*/
if ($this->toFile)
{
if (file_exists($this->galleryPath . $newName))
unlink($this->galleryPath . $newName);
ImageJPEG($new, $this->galleryPath . $newName);
return $this->galleryPath . $newName;
}
else
{
ImageJPEG($new);
}
ImageDestroy($new);
ImageDestroy($img);}
//==========================================
// º¯Êý: waterMark($sourFile, $text)
// ¹¦ÄÜ: ¸øÍ¼Æ¬¼Óˮӡ
// ²ÎÊý: $sourFile ͼƬÎļþÃû
// ²ÎÊý: $text Îı¾Êý×é(°üº¬¶þ¸ö×Ö·û´®)
// ·µ»Ø: 1 ³É¹¦ ³É¹¦Ê±·µ»ØÉú³ÉµÄͼƬ·¾¶
//==========================================
function waterMark($sourFile, $text)
{
$imageInfo = $this->getInfo($sourFile);
$sourFile = $this->sourcePath . $sourFile;
$newName = substr($imageInfo["name"], 0, strrpos($imageInfo["name"], ".")) . "_mark.jpg";
switch ($imageInfo["type"])
{
case 1: //gif
$img = imagecreatefromgif($sourFile);
break;
case 2: //jpg
$img = imagecreatefromjpeg($sourFile);
break;
case 3: //png
$img = imagecreatefrompng($sourFile);
break;
default:
return 0;
break;
}
if (!$img)
return 0;$width =$this->maxWidth;
$height =$this->maxHeight;
$srcW = $imageInfo["width"];
$srcH = $imageInfo["height"];
if ($srcW * $width > $srcH * $height)
$height = round($srcH * $width / $srcW);
else
$width = round($srcW * $height / $srcH);
if (function_exists("imagecreatetruecolor")) //GD2.0.1
{
$new = imagecreatetruecolor($width, $height);
ImageCopyResampled($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
}
else
{
$new = imagecreate($width, $height);
ImageCopyResized($new, $img, 0, 0, 0, 0, $width, $height, $imageInfo["width"], $imageInfo["height"]);
}
$white = imageColorAllocate($new, 255, 255, 255);
$black = imageColorAllocate($new, 0, 0, 0);
$hoariness = imageColorAllocateAlpha($new, 255, 235, 250,70);
$alpha = imageColorAllocateAlpha($new, 230, 230, 230, 60);
ImageFilledRectangle($new, 0, $height-26, $width, $height, $alpha);
ImageFilledRectangle($new, 13, $height-20, 15, $height-7, $black);
ImageTTFText($new, 40, 0, 10, $height-100, $hoariness, $this->fontName_GBK, $text[0]);
ImageTTFText($new, 4.9, 0, 20, $height-14, $black, $this->fontName, $text[1]);
ImageTTFText($new, 4.9, 0, 20, $height-6, $black, $this->fontName, $text[2]);
if ($this->toFile)
{
if (file_exists($this->galleryPath . $newName))
@unlink($this->galleryPath . $newName);
ImageJPEG($new, $this->galleryPath . $newName);
return $this->galleryPath . $newName;
}
else
{
ImageJPEG($new);
}
clearstatcache();
ImageDestroy($new);
ImageDestroy($img);
}
//==========================================
// º¯Êý: displayThumb($file)
// ¹¦ÄÜ: ÏÔʾָ¶¨Í¼Æ¬µÄËõÂÔͼ
// ²ÎÊý: $file ÎļþÃû
// ·µ»Ø: 0 ͼƬ²»´æÔÚ
//==========================================
function displayThumb($file)
{
$thumbName = substr($file, 0, strrpos($file, ".")) . "_thumb.jpg";
$file = $this->galleryPath . $thumbName;
if (!file_exists($file))
return 0;
clearstatcache();
return $file;
}
//==========================================
// º¯Êý: displayMark($file)
// ¹¦ÄÜ: ÏÔʾָ¶¨Í¼Æ¬µÄˮӡͼ
// ²ÎÊý: $file ÎļþÃû
// ·µ»Ø: 0 ͼƬ²»´æÔÚ
//==========================================
function displayMark($file)
{
$markName = substr($file, 0, strrpos($file, ".")) . "_mark.jpg";
$file = $this->galleryPath . $markName;
if (!file_exists($file))
return 0;
return $file;
}
//==========================================
// º¯Êý: getInfo($file)
// ¹¦ÄÜ: ·µ»ØÍ¼ÏñÐÅÏ¢
// ²ÎÊý: $file Îļþ·¾¶
// ·µ»Ø: ͼƬÐÅÏ¢Êý×é
//==========================================
function getInfo($file)
{
$file = $this->sourcePath . $file;
$data = getimagesize($file);
$imageInfo["width"] = $data[0];
$imageInfo["height"]= $data[1];
$imageInfo["type"] = $data[2];
$imageInfo["name"] = basename($file);
return $imageInfo;
}
}
?> -
php·ÖÒ³
2008-1-22
<?
//ΪÁ˱ÜÃâÖØ¸´°üº¬Îļþ¶øÔì³É´íÎ󣬼ÓÁËÅжϺ¯ÊýÊÇ·ñ´æÔÚµÄÌõ¼þ£º
if(!function_exists(pageft)){
//¶¨Ò庯Êýpageft(),Èý¸ö²ÎÊýµÄº¬ÒåΪ£º
//$totle£ºÐÅÏ¢×ÜÊý£»
//$displaypg£ºÃ¿Ò³ÏÔʾÐÅÏ¢Êý£¬ÕâÀïÉèÖÃΪĬÈÏÊÇ20£»
//$url£º·ÖÒ³µ¼º½ÖеÄÁ´½Ó£¬³ýÁ˼ÓÈ벻ͬµÄ²éѯÐÅÏ¢¡°page¡±ÍâµÄ²¿·Ö¶¼ÓëÕâ¸öURLÏàͬ¡£
//¡¡¡¡¡¡Ä¬ÈÏÖµ±¾¸ÃÉèΪ±¾Ò³URL£¨¼´$_SERVER["REQUEST_URI"]£©£¬µ«ÉèÖÃĬÈÏÖµµÄÓÒ±ßÖ»ÄÜΪ³£Á¿£¬ËùÒÔ¸ÃĬÈÏÖµÉèΪ¿Õ×Ö·û´®£¬ÔÚº¯ÊýÄÚ²¿ÔÙÉèÖÃΪ±¾Ò³URL¡£
function pageft($totle,$displaypg=20,$url=''){//¶¨Ò弸¸öÈ«¾Ö±äÁ¿£º
//$page£ºµ±Ç°Ò³Â룻
//$firstcount£º£¨Êý¾Ý¿â£©²éѯµÄÆðʼÏ
//$pagenav£ºÒ³Ãæµ¼º½Ìõ´úÂ룬º¯ÊýÄÚ²¿²¢Ã»Óн«ËüÊä³ö£»
//$_SERVER£º¶ÁÈ¡±¾Ò³URL¡°$_SERVER["REQUEST_URI"]¡±Ëù±ØÐë¡£
global $page,$firstcount,$pagenav,$_SERVER;//Ϊʹº¯ÊýÍⲿ¿ÉÒÔ·ÃÎÊÕâÀïµÄ¡°$displaypg¡±£¬½«ËüÒ²ÉèΪȫ¾Ö±äÁ¿¡£×¢ÒâÒ»¸ö±äÁ¿ÖØÐ¶¨ÒåΪȫ¾Ö±äÁ¿ºó£¬ÔÖµ±»¸²¸Ç£¬ËùÒÔÕâÀï¸øËüÖØÐ¸³Öµ¡£
$GLOBALS["displaypg"]=$displaypg;if(!$page) $page=1;
//Èç¹û$urlʹÓÃĬÈÏ£¬¼´¿ÕÖµ£¬Ôò¸³ÖµÎª±¾Ò³URL£º
if(!$url){ $url=$_SERVER["REQUEST_URI"];}//URL·ÖÎö£º
$parse_url=parse_url($url);
$url_query=$parse_url["query"]; //µ¥¶ÀÈ¡³öURLµÄ²éѯ×Ö´®
if($url_query){
//ÒòΪURLÖпÉÄܰüº¬ÁËÒ³ÂëÐÅÏ¢£¬ÎÒÃÇÒª°ÑËüÈ¥µô£¬ÒÔ±ã¼ÓÈëеÄÒ³ÂëÐÅÏ¢¡£
//ÕâÀïÓõ½ÁËÕýÔò±í´ïʽ£¬Çë²Î¿¼¡°PHPÖеÄÕý¹æ±í´ïʽ¡±£¨http://www.pconline.com.cn/pcedu/empolder/wz/php/10111/15058.html£©
$url_query=ereg_replace("(^|&)page=$page","",$url_query);//½«´¦ÀíºóµÄURLµÄ²éѯ×Ö´®Ìæ»»ÔÀ´µÄURLµÄ²éѯ×Ö´®£º
$url=str_replace($parse_url["query"],$url_query,$url);//ÔÚURLºó¼Ópage²éѯÐÅÏ¢£¬µ«´ý¸³Öµ£º
if($url_query) $url.="&page"; else $url.="page";
}else {
$url.="?page";
}//Ò³Âë¼ÆË㣺
$lastpg=ceil($totle/$displaypg); //×îºóÒ³£¬Ò²ÊÇ×ÜÒ³Êý
$page=min($lastpg,$page);
$prepg=$page-1; //ÉÏÒ»Ò³
$nextpg=($page==$lastpg ? 0 : $page+1); //ÏÂÒ»Ò³
$firstcount=($page-1)*$displaypg;//¿ªÊ¼·ÖÒ³µ¼º½Ìõ´úÂ룺
$pagenav="ÏÔʾµÚ <B>".($totle?($firstcount+1):0)."</B>-<B>".min($firstcount+$displaypg,$totle)."</B> Ìõ¼Ç¼£¬¹² $totle Ìõ¼Ç¼<BR>";//Èç¹ûÖ»ÓÐÒ»Ò³ÔòÌø³öº¯Êý£º
if($lastpg<=1) return false;
$pagenav.=" <a href='$url=1' target=_self>Ê×Ò³</a> ";
if($prepg) $pagenav.=" <a href='$url=$prepg' target=_self>ǰҳ</a> "; else $pagenav.=" ǰҳ ";
if($nextpg) $pagenav.=" <a href='$url=$nextpg' target=_self>ºóÒ³</a> "; else $pagenav.=" ºóÒ³ ";
$pagenav.=" <a href='$url=$lastpg' target=_self>βҳ</a> ";//ÏÂÀÌø×ªÁÐ±í£¬Ñ»·ÁгöËùÓÐÒ³Â룺
$pagenav.="¡¡µ½µÚ <select name='topage' size='1' ¨nchange='window.location=\"$url=\"+this.value'>\n";
for($i=1;$i<=$lastpg;$i++){
if($i==$page) $pagenav.="<option value='$i' selected>$i</option>\n";
else $pagenav.="<option value='$i'>$i</option>\n";
}
$pagenav.="</select> Ò³£¬¹² $lastpg Ò³";
}
}
?> -
smarty ¤Î ³ÌÐòÉè¼Æ²¿·Ö
2008-1-18
×î½üÔÚÂÛ̳¿´×ÅÓÐÐí¶àÅóÓÑÔÚsmartyÅäÖ÷½Ã滹´æÔÚÒÉÎÊ ÏÖÔÚ¾ÍÕûÀíһϺʹó¼ÒÌÖÂÛÒ»ÏÂ
Ê×ÏÈÀ´½éÉÜÒ»ÏÂ.phpÎļþÖеÄÒ»Ð©ÔªËØ¡£
ÎÒÃÇ¿ÉÒÔ¿´µ½£¬smartyµÄ³ÌÐò²¿·Öʵ¼Ê¾ÍÊÇ·ûºÏphpÓïÑԹ淶µÄÒ»×é´úÂ룬ÎÒÃÇÒÀ´ÎÀ´½âÊÍһϣº<?php
/*********************************************
*
* ×÷ Õߣº bush
* QQ:20602866
*
*********************************************/
include_once("./comm/Smarty.class.php"); //°üº¬smartyÀàÎļþ
$smarty = new Smarty(); //½¨Á¢smartyʵÀý¶ÔÏó$smarty
$smarty->template_dir = "./templates";//ÉèÖÃÄ£°åĿ¼
$smarty->compile_dir = "./templates_c"; //ÉèÖñàÒëĿ¼
//****´ó¼Ò×¢Ò⣬ÕâÀïÎÒÊÇÎÒмÓÈëµÄ****//
$tpl->cache_dir = "./cache"; //ÉèÖûº´æÄ¿Â¼
$smarty->cache_lifetime = 60 * 60 * 24; //ÉèÖûº´æÊ±¼ä
$smarty->caching = true; //ÉèÖûº´æ·½Ê½
//----------------------------------------------------
//×óÓұ߽ç·û£¬Ä¬ÈÏΪ{}£¬µ«Êµ¼ÊÓ¦Óõ±ÖÐÈÝÒ×ÓëJavascr¨©pt
//Ïà³åÍ»£¬ËùÒÔ½¨ÒéÉè³É<{}>»òÆäËü¡£
//----------------------------------------------------
$smarty->left_delimiter = "<{";
$smarty->right_delimiter = "}>";
$smarty->assign("name", "victor_lee"); //½øÐÐÄ£°å±äÁ¿Ìæ»»
//±àÒë²¢ÏÔʾλÓÚ./templatesϵÄindex.tplÄ£°å
$smarty->display("index.tpl");
?>
1¡£/**/Óï¾ä£º
°üº¬µÄ²¿·ÖΪ³ÌÐòƪͷעÊÍ¡£Ö÷ÒªµÄÄÚÈÝÓ¦¸ÃΪ¶Ô³ÌÐòµÄ×÷Ó㬰æÈ¨Óë×÷Õß¼°±àдʱ¼ä×öÒ»¸ö¼òµ¥µÄ½éÉÜ£¬ÕâÔÚsmartyÖв»ÊDZØÐèµÄ£¬µ«´Ó³ÌÐòµÄ·ç¸ñÀ´½²£¬ÕâÊÇÒ»¸öºÃµÄ·ç¸ñ¡£
2¡£include_onceÓï¾ä£º
Ëü½«°²×°µ½ÍøÕ¾µÄsmartyÎļþ°üº¬µ½µ±Ç°ÎļþÖУ¬×¢Òâ°üº¬µÄ·¾¶Ò»¶¨ÒªÐ´ÕýÈ·¡£
3¡£$smarty = new Smarty():
ÕâÒ»¾äн¨Ò»¸öSmarty¶ÔÏó$smarty,¼òµ¥µÄÒ»¸ö¶ÔÏóµÄʵÀý»¯¡£
4¡£$smarty->template_dir = "" :
ÕâÒ»¾äÖ¸Ã÷$smarty¶ÔÏóʹÓÃtplÄ£°åʱµÄ·¾¶£¬ËüÊÇÒ»¸öĿ¼£¬ÔÚûÓÐÕâÒ»¾äʱ£¬SmartyĬÈϵÄÄ£°å·¾¶Îªµ±Ç°Ä¿Â¼µÄtemplatesĿ¼£¬Êµ¼ÊÔÚд³ÌÐòʱ£¬ÎÒÃÇÒª½«ÕâÒ»¾äдÃ÷£¬ÕâÒ²ÊÇÒ»ÖֺõijÌÐò·ç¸ñ¡£
5¡£$smarty->compile_dir = "" :
ÕâÒ»¾äÖ¸Ã÷$smarty¶ÔÏó½øÐбàÒëʱµÄĿ¼¡£ÔÚÄ£°åÉè¼ÆÆªÎÒÃÇÒѾ֪µÀSmartyÊÇÒ»ÖÖ±àÒëÐÍÄ£°åÓïÑÔ£¬¶øÕâ¸öĿ¼£¬¾ÍÊÇËü±àÒëÄ£°åµÄĿ¼£¬ÕâÀïҪעÒ⣬Èç¹ûÕ¾µãλÓÚ*nix·þÎñÆ÷ÉÏ£¬ÇëÈ·±£compile_dirÀﶨÒåµÄÕâ¸öĿ¼¾ßÓпÉд¿É¶ÁȨÏÞ£¬Ä¬ÈÏÇé¿öÏÂËüµÄ±àÒëĿ¼Êǵ±Ç°Ä¿Â¼ÏµÄtemplates_c£¬³öÓÚͬÑùµÄÀíÓÉÎÒÃǽ«ÆäÃ÷È·µÄд³öÀ´¡£
6¡£$smarty->left_delimiterÓë$smarty->right_delimiter:
Ö¸Ã÷ÔÚ²éÕÒÄ£°å±äÁ¿Ê±µÄ×óÓÒ·Ö¸î·û¡£Ä¬ÈÏÇé¿öÏÂΪ"{"Óë"}"£¬µ«ÔÚʵ¼ÊÖÐÒòΪÎÒÃÇÒªÔÚÄ£°åÖÐʹÓÃ<scr¨©pt>,scr¨©ptÖеĺ¯Êý¶¨ÒåÄÑÃâ»áʹÓÃ{}£¬ËäÈ»ËüÓÐ×Ô¼ºµÄ½â¾ö°ì·¨£¬µ«Ï°¹ßÉÏÎÒÃǽ«ËüÖØÐ¶¨ÒåΪ"<{"Óë"}>"»òÊÇ"<!--{"Óë"}-->"»òÆäËü±êÖ¾·û£¬×¢Ò⣬Èç¹ûÔÚÕâÀﶨÒåÁË×óÓÒ·Ö¸î·ûºó£¬ÔÚÄ£°åÎļþÖÐÏàÓ¦µÄҪʹÿһ¸ö±äÁ¿Ê¹ÓÃÓ붨ÒåÏàͬµÄ·ûºÅ£¬ÀýÈçÔÚÕâÀïÖ¸¶¨Îª"<{"Óë"}>"£¬tplÄ£°åÖÐÒ²ÒªÏàÓ¦µÄ½«{$name}±ä³É<{$name}>,ÕâÑù³ÌÐò²Å¿ÉÒÔÕýÈ·µÄÕÒµ½Ä£°å±äÁ¿¡£
7¡£$tpl->cache_dir = "./cache";:
¸æËßSmartyÊä³öµÄÄ£°åÎļþ»º´æµÄλÖá£ÉÏһƪÎÒÃÇÖªµÀSmarty×î´óµÄÓŵãÔÚÓÚËü¿ÉÒÔ»º´æ£¬ÕâÀï¾ÍÊÇÉèÖûº´æµÄĿ¼¡£Ä¬ÈÏÇé¿öÏÂΪµ±Ç°Ä¿Â¼ÏµÄcacheĿ¼£¬Óëtemplates_cĿ¼Ï൱£¬ÔÚ*nixϵͳÖÐÎÒÃÇҪȷ±£ËüµÄ¿É¶Á¿ÉдÐÔ¡£
8. $smarty->cache_lifetime = 60 * 60 * 24:
ÕâÀォÒÔÃëΪµ¥Î»½øÐмÆË㻺´æÓÐЧµÄʱ¼ä¡£µÚÒ»´Î»º´æÊ±¼äµ½ÆÚʱµ±SmartyµÄcaching±äÁ¿ÉèÖÃΪtrueʱ»º´æ½«±»Öؽ¨¡£µ±ËüµÄȡֵΪ-1ʱ±íʾ½¨Á¢ÆðµÄ»º´æ´Ó²»¹ýÆÚ£¬Îª0ʱ±íʾÔÚ³ÌÐòÿ´ÎÖ´ÐÐʱ»º´æ×ÜÊDZ»ÖØÐ½¨Á¢¡£ÉÏÃæµÄÉèÖñíʾ½«cache_lifetimeÉèÖÃΪһÌì¡£
9. $smarty->caching = 1:
Õâ¸öÊôÐÔ¸æËßSmartyÊÇ·ñÒª½øÐлº´æÒÔ¼°»º´æµÄ·½Ê½¡£Ëü¿ÉÒÔÈ¡3¸öÖµ£¬0£ºSmartyĬÈÏÖµ£¬±íʾ²»¶ÔÄ£°å½øÐлº´æ£»1£º±íʾSmarty½«Ê¹Óõ±Ç°¶¨ÒåµÄcache_lifetimeÀ´¾ö¶¨ÊÇ·ñ½áÊøcache£»2£º±íʾSmarty½«Ê¹ÓÃÔÚcache±»½¨Á¢Ê±Ê¹ÓÃcache_lifetimeÕâ¸öÖµ¡£Ï°¹ßÉÏʹÓÃtrueÓëfalseÀ´±íʾÊÇ·ñ½øÐлº´æ¡£
10. $smarty->assign("name", "victor-lee")£º
¸ÃÊýµÄÔÐÍΪassign(string varname, mixed var),varnameΪģ°åÖÐʹÓõÄÄ£°å±äÁ¿£¬varÖ¸³öÒª½«Ä£°å±äÁ¿Ìæ»»µÄ±äÁ¿Ãû£»ÆäµÚ¶þÖÖÔÐÎΪassign(mixed var),ÎÒÃÇÒªÔÚºóÃæµÄÀý×ÓÏêϸµÄ½²½âÕâ¸ö³ÉÔ±º¯ÊýµÄʹÓ÷½·¨£¬assignÊÇSmartyµÄºËÐĺ¯ÊýÖ®Ò»£¬ËùÓжÔÄ£°å±äÁ¿µÄÌæ»»¶¼ÒªÊ¹ÓÃËü¡£
11. $smarty->display("index.tpl"):
¸Ãº¯ÊýÔÐÎΪdisplay(string varname),×÷ÓÃΪÏÔʾһ¸öÄ£°å¡£¼òµ¥µÄ½²£¬Ëü½«·ÖÎö´¦Àí¹ýµÄÄ£°åÏÔʾ³öÀ´£¬ÕâÀïµÄÄ£°åÎļþ²»ÓüÓ·¾¶£¬Ö»ÒªÊ¹ÓÃÒ»¸öÎļþÃû¾Í¿ÉÒÔÁË£¬Ëü·¾¶ÎÒÃÇÒѾÔÚ$smarty->templates(string path)Öж¨Òå¹ýÁË¡£
³ÌÐòÖ´ÐÐÍêºóÎÒÃÇ¿ÉÒÔ´ò¿ªµ±Ç°Ä¿Â¼ÏµÄtemplates_cÓëcacheĿ¼£¬¾Í»á·¢ÏÖÔÚϱ߶à³öһЩ%%µÄĿ¼£¬ÕâЩĿ¼¾ÍÊÇSmartyµÄ±àÒëÓ뻺´æÄ¿Â¼£¬ËüÓɳÌÐò×Ô¶¯Éú³É£¬²»ÒªÖ±½Ó¶ÔÕâЩÉú³ÉµÄÎļþ½øÐÐÐ޸ġ£
ÒÔÉÏÎÒ¼òµ¥µÄ°ÑSmarty³ÌÐòÖеÄһЩ³£ÓõĻù±¾ÔªËؽéÉÜÁËһϣ¬ÔÚºó±ßµÄÀý×ÓÖÐÄã¿ÉÒÔ¿´µ½½«ËüÃǽ«±»¶à´ÎµÄʹÓᣠ-
SunÄâ10ÒÚÃÀÔªÊÕ¹ºMySQL ÔÙÈ·Á¢ÍøÂçÖÐÐĵØÎ»
2008-1-17













