PHP简单图片采集

第一步先生成一个要采集的TEST文本文件

<?php
 
header('Content-type: text/html;charset=UTF-8');
/**
 * 生成要采集的图片URL地址
 */
$url = "http://outsiderla.me/nikita-creative-staff.html";
// 1. 初始化
$ch = curl_init();
// 2. 设置选项,包括URL
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
// 3. 执行并获取HTML文档内
$con = curl_exec($ch);
// 4. 释放curl句柄
curl_close($ch);
//正则匹配图片
preg_match_all("/<img.*?src=\"(.*?)\".*?\/>/i", $con, $arr);
foreach ($arr[1] as $k => $v) {
//    $file = fopen("img.txt", 'w');
//    fwrite($file, $v);
//    fclose($file);
    file_put_contents('img.txt',"$v \r\n", FILE_APPEND);
}

下载生成上步中生成URL图片链接地址:

<?php
header('Content-type: text/html;charset=UTF-8');
set_time_limit(0);
 
/**
 * 写文件
 * @param    string  $file   文件路径
 * @param    string  $str    写入内容
 * @param    char    $mode   写入模式
 */
function wfile($file, $str, $mode='w') {
    $oldmask = @umask(0);
    $fp = @fopen($file, $mode);
    @flock($fp, 3);
    if (!$fp) {
        Return false;
    } else {
        @fwrite($fp, $str);
        @fclose($fp);
        @umask($oldmask);
        Return true;
    }
}
 
function savetofile($path_get, $path_save) {
    @$hdl_read = fopen($path_get, 'rb');
    if ($hdl_read == false) {
        echo("<span style='color:red'>$path_get can not get</span>");
        Return;
    }
    if ($hdl_read) {
        @$hdl_write = fopen($path_save, 'wb');
        if ($hdl_write) {
            while (!feof($hdl_read)) {
                fwrite($hdl_write, fread($hdl_read, 8192));
            }
            fclose($hdl_write);
            fclose($hdl_read);
            return 1;
        }
        else
            return 0;
    }
    else
        return -1;
}
 
function getExt($path) {
    $path = pathinfo($path);
    return strtolower($path['extension']);
}
 
/**
 * 按指定路径生成目录
 *
 * @param    string     $path    路径
 */
function mkDirs($path) {
    $adir = explode('/', $path);
    $dirlist = '';
    $rootdir = array_shift($adir);
    if (($rootdir != '.' || $rootdir != '..') && !file_exists($rootdir)) {
        @mkdir($rootdir);
    }
    foreach ($adir as $key => $val) {
        if ($val != '.' && $val != '..') {
            $dirlist .= "/" . $val;
            $dirpath = $rootdir . $dirlist;
            if (!file_exists($dirpath)) {
                @mkdir($dirpath);
                @chmod($dirpath, 0777);
            }
        }
    }
}
 
/**
 * 从文本中取得一维数组
 *
 * @param    string     $file_path    文本路径
 */
function getFileListData($file_path) {
    $arr = @file($file_path);
    $data = array();
    if (is_array($arr) && !empty($arr)) {
        foreach ($arr as $val) {
            $item = trim($val);
            if (!empty($item)) {
                $data[] = $item;
            }
        }
    }
    Return $data;
}
 
//采集开始
//传入自己的需要采集的图片url列表文本文件 每个图片url写一行
$url_file = isset($_GET['file']) && !empty($_GET['file']) ? $_GET['file'] : null;
$txt_url = "txt/" . $url_file;
 
$urls = array_unique(getFileListData($txt_url));
if (empty($urls)) {
    echo('<div style="color:red">无链接地址</div>');
    die();
}
$save_url = "images/" . date("y_m_d", time()) . "/";
mkDirs($save_url);  //按日期建立文件夹
$i = 1;
if (is_array($urls) && count($urls)) {
    foreach ($urls as $val) {
        savetofile($val, $save_url . date("His", time()) . "_" . $i . "." . getExt($val));
        echo($i . "." . getExt($val) . " got\n");
        $i++;
    }
}
echo('<div style="color:green">finish</div>');
?>

CSS布局:让页底内容永远固定在底部

CSS布局:让页底内容永远固定在底部
HTML

<div id="wrap"> 
    <div id="main"> 
    主体 
    </div> 
</div> 
 
<div id="footer"> 
   这里是页底footer内容 
</div>

CSS

style type="text/css"> 
* {margin:0;padding:0;}  
html, body {height: 100%;} 
#wrap {min-height: 100%;} 
#main {overflow:auto; 
    padding-bottom: 60px;}  /* 必须使用和footer相同的高度 */ 
#footer {position: relative; 
    margin-top: -60px;  
    height: 60px; 
    clear:both; 
    background:#369}  
 
/*Opera Fix*/ 
body:before { 
content:""; 
height:100%; 
float:left; 
width:0; 
margin-top:-32767px; 
} 
</style>

注意,以上代码在IE6上根本不起作用,必须使用以下代码来解决IE6下的BUG。

<!--[if !IE 7]> 
    <style type="text/css"> 
        #wrap {display:table;height:100%} 
    </style> 
<![endif]-->

PHP生成随机字符串

生成随机字符串在做项目中经常用到,像注册登录验证码等。经常在QQ群里有朋友问怎么生成一个随机字符串,下面分享一个。
函数功能:

1、生成指定长度的随机字符串

2、灵活选择生成的随机字符串的复杂度

/**
  +----------------------------------------------------------
 * 生成随机字符串
  +----------------------------------------------------------
 * @param int       $length  要生成的随机字符串长度
 * @param string    $type    随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符
  +----------------------------------------------------------
 * @return string
  +----------------------------------------------------------
 */
function randCode($length = 5, $type = 0) {
    $arr = array(1 => "0123456789", 2 => "abcdefghijklmnopqrstuvwxyz", 3 => "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 4 => "~@#$%^&*(){}[]|");
    if ($type == 0) {
        array_pop($arr);
        $string = implode(",", $arr);
    } else if ($type == "-1") {
        $string = implode(",", $arr);
    } else {
        $string = $arr[$type];
    }
    $count = strlen($string) - 1;
    for ($i = 0; $i < $length; $i++) {
        $str[$i] = $string[rand(0, $count)];
        $code .= $str[$i];
    }
    return $code;
}

默认生成的随机字符串长度为5,生成的字符串包含:数字+大写字母
原文链接 http://blog.51edm.org/post/103

jQuery与JSON在Drupal开发中的使用

为了要对代理商所在地进行选择,我需要做一个省和城市的级联选择功能。具体的功能是在省份的下拉列表(设为provinceList)中选中一个省 的时候,要在城市的下拉列表(设为cityList)中列出选中省份所对应的城市来。比如在省份列表中选择”广东省”后,城市列表应该是”肇庆市”、”广 州市”、”佛山市”……等。要实现这个功能,一般的WEB开发的方法有两个:

1.刷新网页方式
1)写一段provinceList的onchange事件处理脚本。
2)在provinceList的onchange事件中,把用户选择的省份提交到服务器。
3)服务器根据用户提交的省份参数。查找对应的城市列表,填充到cityList中去,重新呈现网页回送给客户端。
4)整个网页被再次程序给客户端。客户端在cityList中显示对应省份的城市列表。

这种方式的缺点非常明显:
首先,每次省份选择的改变都要服务器去做筛选参数,查找数据,填充数据,呈现网页等一通工作。开发和维护难度高。
其次,用户每改变一次省份选择,网页都要重新下载,客户体验不佳。

2.不刷新网页方式
1)网页第一次呈现的时候就把所有的省份和省市及其关联性的数据以网页脚本形式下载到客户端。
2)在provinceList的onchange事件中,脚本根据用户选择的省份以及在上一点提到的网页脚本中指定的省份与城市关系来填充cityList数据。
这种方式也有缺点:
在服务器端查询相关数据并生成客户端脚本来呈现和表示省份和城市及其关联性较为复杂。而在客户端,provinceList的onchange事件处理脚本也较为复杂。

而使用jQuery+JSON作为工具,在drupal平台上开发这个功能就简单得多了。
1.首先是开发一块网页客户端javascript代码(假设provinceList对应的下拉列表ID为search-province,而cityList对应的下拉列表控件ID为search-city),以下列出该块代码及其注释:

<?php
--------------------------------------------------------------------------
//document就绪后执行该代码块
$(function() {
//search-province的onchange事件处理代码
$("#search-province").change(function() {
//对请求网址'/ojcustom/getcitys/选中省份id'后drupal返回的JSON数据data进行处理的代码块
var getCitys = function (data) {
// 解析drupal返回的JSON数据data为javascript对象result,该对象包含了drupal返回的对应城市数组(array)
var result = Drupal.parseJson(data);
//填充城市列表之前,先清空现有的列表数据
$("#search-city").empty();
//针对返回的每一城市数据,一一填充到search-city的列表项中去
for(key in result) $("#search-city").append("");
}//getCitys()
//向网址'/ojcustom/getcitys/选中省份id '发送请求,请求参数为null,指定返回JSON数据的处理函数为getCitys
$.get('/ojcustom/getcitys/'+$("#search-province")[0].value, null,getCitys);
//结束事件处理代码
return
false;
});//change()
});//$(function())
---------------------------------------------------------------------------
 
?>

2.其次是在服务器端开发一块用来处理向网址’/ojcustom/getcitys/选中省份id ‘提交的请求的PHP代码:

<?php
---------------------------------------------------------------------------
//本函数通过用户在网址中提交的选中省份ID来获取相应城市列表,并且把列表数据转换成JSON数据返回给客户端
function get_citys_by_province_id(){
//用户提交网址中的第三个参数就是用户选中的省份ID
if (!is_numeric(arg(2))) exit;
//查找数据库得出相应城市列表
$result =db_query('select cid,name from {city} where pid='.arg(2));
//一一取出城市数据,并且把它们记录在一个数组(array)$options中
$options = array();
while ($term = db_fetch_object($result)) {
$choice = new stdClass();
$choice = array('value'=>$term->cid,'text' =>$term->name);
$options[] = $choice;
}
$options[] = array('value'=>'','text' =>'请选择');
//使用drupal内置的函数把城市数组转换成JSON数据,并且把它输出到客户端
print drupal_to_js($options);
//客户端输出结束
exit;
}
---------------------------------------------------------------------------
?>

这样,就完整完成了整个功能。
上面两段代码非常简单明了、易于控制,这个实现方法既没有第一个实现方法中的刷新网页问题和服务器端成本问 题,也没有第二种实现方法中的脚本生成难度和事件处理脚本难度的问题。通过本例子我们可以看出jQuery+JSON可以大大简化WEB开发的复杂度,而 druapl由于内置了jQuery与JSON,结合导drupal系统的其他优点,更加使得WEB开发变得可控和高效起来

ThinkPHP分组模式下使用RBAC的方法

ThinkPHP分组模式下使用RBAC的方法
如果不使用分组模式thinkphp RBAC 默认值是常量APP_NAME,而分组模式下则用常量GROUP_NAME获得当前分组名称.
关键代码:

RBAC::AccessDecision(GROUP_NAME)

以下是CommonAction.class.php的完整代码:

<?php
 
/*
 * BaseAction.class.php
 * Created on: 2013-4-14 16:01:04 
 * Author: Outsider <ioutsiderla@gmail.com>
 * http://outsiderla.me 
 */
 
class CommonAction extends Action {
 
    function _initialize() {
        import('@.ORG.Util.Cookie');
        if (C('USER_AUTH_ON') && !in_array(MODULE_NAME, explode(',', C('NOT_AUTH_MODULE')))) {
            import('@.ORG.Util.RBAC');
            if (!RBAC::AccessDecision(GROUP_NAME)) {
                if (!$_SESSION[C('USER_AUTH_KEY')]) {
                    $this->assign('jumpUrl', __APP__ . C('USER_AUTH_GATEWAY'));
                    $this->error('没有登录!请重新登录');
                }
                if (C('RBAC_ERROR_PAGE')) {
                    $this->assign('jumpUrl', __APP__ . C('RBAC_ERROR_PAGE'));
                    $this->error('对不起,没有权限');
                } else {
                    if (C('GUEST_AUTH_ON')) {
                        $this->assign('jumpUrl', PHP_FILE . C('USER_AUTH_GATEWAY'));
                    }
                    $this->error(L('_VALID_ACCESS_'));
                }
            }
        }
    }
 
}

正则表达式…

一个正则表达式主要由以下几部分组成的:原子,元字符,定界符,模式修正符号

如:”/\/iu”

原子: ims \s

元字符:* ?

模式修正符号: i u

定界符号:/ /

注意:

① 定界符:除了字母,数字和正斜线\以外的任何字符都可以是定界符号,如# #,| |,{ }等

② 元字符:是一种特殊的字符,是用来修饰原子用到,不可以单独出现

+:表示重复匹配其前面的原子一次或多次

?:表示重复匹配其前面的原子0次或一次

*:表示重复匹配其前面的原子0次或多次

{}:可以自定义前面原子出现的次数:

{n}表示重复匹配其前面的原子n次

{n,m}表示重复匹配其前面的原子n到m次,包括n和m

{n,}表示重复匹配其前面的原子n次或无限次

. :匹配除换行符以外的任意字符

^:匹配字符串的开始

$:匹配字符处的结束

|:表示或的关系,它的优先级别是最低的,最后考虑他的功能

\b:匹配单词的分解处,单词是由空格,标点符号或者换行符来分隔的

\B:匹配不是单词开头或结束的位置,如:/\Bone\b/ 表示one的左边不是边界,one的右边是单词边界(如空格,标点符号或换行符)

():重点

一:作为大原子使用:如/(test)+/ 表示匹配单词test至少一次

二:改变优先级,加上括号可以提高优先级

三:作为子模式使用

四:反向引用,可以在正则模式中直接将子模式取出来,作为正则表达式模式的一部分,如果是在正则表达式像替换函数preg_replace函数中,可以将子模式去除,在被替换的字符串中使用。

\1:取第一个子模式

\n:取第n个子模式

注意:单双引号的区别,如”\\1”等价于‘\1’

③ 原子:原子是正则表达式的最基本的组成单位,而且必须至少要包含一个原子,只要一个正则表达式可以单独使用的字符,就是原子

a) 元字符如果想做为原子使用,则必须使用转义字符“\”进行转义,如:\.,\*,\?等等

b) 转义字符除了可以将有意义的字符转成没意义的字符,还可以将没意义的字符转成有意义的字符,如:

\d ,\w,\s等等

.

匹配除换行符以外的任意字符

\w

匹配字母或数字或下划线或汉字 [A-Za-z0-9_]

\s

匹配任意的空白符 如:空格,\n\r\t\f等等

\d

匹配数字 [0-9]

\b

匹配单词的开始或结束

^

匹配字符串的开始

$

匹配字符串的结束

c) 可以自己定义一个原子表,用来匹配方括号中的任意一个原子

[a-z1-3]

[^A-Z]表示取反,用来匹配除了原子表中的原子意外的字符(^必须在[ ]内的第一个字符处出现),而且取反字符集可以匹配回车换行符

windows正确配置php_curl扩展库的方法

windows 下Apache + PHP + Mysql正确配置php_curl扩展库的方法:

1,打开你php所在目录,找到php.ini文件并打开把 ;extension=php_curl.dll, 去掉前面的注释.

extension=php_curl.dll

2,接下来我们还得把php目录下的 libeay32.dll和ssleay32.dll复制到windows\system32目录下面.
3,重新启动你的Apache服务器。

一切搞定之后 curl_init()函数就可以正常使用了…

CSS3 Media Queries 让网页更好的支持移动设备

CSS3的Media Queries可以查询设备的屏幕尺寸颜色等信息,我们就可以根据不同的设备来写CSS,让网页在不同设备上有更好的用户体验。本站做了一些尝试,有兴趣的朋友可以缩放网页窗口看下效果。下面简单介绍一下基本用法:

    /* 基本语法 */
    @media screen and (min-width:1024px) and (max-width:1280px){
    body{padding:1em;}
    }

/* 常用类型 */
类型 解释
all 所有设备
braille 盲文
embossed 盲文打印
handheld 手持设备
print 文档打印或打印预览模式
projection 项目演示,比如幻灯
screen 彩色电脑屏幕
speech 演讲
tty 固定字母间距的网格的媒体,比如电传打字机
tv 电视

screen一般用的比较多,下面是我自己的尝试,列出常用的设备的尺寸,然后给页面分了几个尺寸的版本。

/* 常用设备 */
设备 屏幕尺寸
显示器 1280 x 800
ipad 1024 x 768
Android 800 x 480
iPhone 640 x 960

1280 > 1024 > 960 > 800 >768 > 640

    /* 根据上述尺寸简单的分了几个页面版本 */
    @media screen and (min-width:1280px){
    body{ 适合较大的台机显示器或更大 }
    }
 
    @media screen and (min-width: 800px) and (max-width: 1280px) {
    body{ 适合一般的台机显示器或笔记本 }
    }
 
    @media screen and (max-width: 800px) {
    body{ 适合一般的平板电脑或智能手机 }
    }

国际惯例:IE5.5/6/7是不支持media query的,所以我也把这种不支持利用了起来,尝试去区分IE和非IE浏览器的样式,不知道是否合理?!

    @media screen and (min-width: 0px) {
    body{ IE goodbye }
    }

我是通过屏幕尺寸来简单的区分页面样式,如果你想细分样式你可以参考一下内容。

    /*Google的iPhone横屏样式*/
    @media screen and (max-height:300px){
    body{ iPhone 横屏 }
    }
 
    /*android手机的多分辨率*/
    /* for 240 px width screen */
    @media only screen and (max-device-width:240px){
    body{ for Android }
    }
 
    /* for 360px width screen */
    @media only screen and (min-device-width:241px) and (max-device-width:360px){
    body{ for Android }
    }
 
    /* for 480 px width screen */
    @media only screen (min-device-width:361px)and (max-device-width:480px){
    body{ for Android }
    }
 
    /* device-aspect-ratio 特定屏幕长宽比例 */
 
    /* for 4:3 screen */
    @media only screen and (device-aspect-ratio:4/3){
    body{ }
    }
 
    /* for 16:9 and 16:10 screen */
    @media only screen and (device-aspect-ratio:16/9) and (device-aspect-ratio:16/10){
    body{ }
    }
 
    /* for 480px*800px width screen */
    @media only screen (device-aspect-ratio:5/3){
    body{ }
    }

http://mediaqueri.es/是一个国外的网站,上面有许多使用Media Queries的作品展示。

PHP简单的采集程序

用采集本博客的日志为例:
先采集列表页的文章标题和文章链接地址保存在数据库中:

<?php
include_once 'conmy.php';
$id = $_GET['id'];
if ($id <= 5 && !empty($id)) {
    $url = "http://outsiderla.me/videos-movie/page/" . $id;
    $con = file_get_contents($url);
    $preg = '#<h2 class="entry-title"><a href="(.*)" title="(.*)" rel="bookmark">(.*)</a></h2>#iUs';
    preg_match_all($preg, $con, $arr);
    foreach ($arr[1] as $k => $v) {
        //  echo '<a href=vi.php?url=' . $v . '>  ' . $arr[2][$k] . '</a><br />';
        $sql = "INSERT INTO `test`.`temp` (`id`, `title`, `url`) VALUES (NULL, '{$arr[2][$k]}', '{$v}');";
        mysql_query($sql);
    }
    $id++;
    echo '正在采集....' . $id;
    echo "<script>location.href='ls.php?id=" . $id . "'</script>";
}  else {
      echo '采集结束';
}

以下代码是采集完整的一篇日志:

<?php
 
$id = $_GET['id'];
include_once 'conmy.php';
$sql = "select * from temp where id='{$id}'";
$r = mysql_query($sql);
$row = mysql_fetch_array($r);
$con = file_get_contents($row['url']);
$preg = '#<h1 class="single-title"><a href="(.*)" title="(.*)" rel="bookmark">(.*)</a></h1>#iUs';
$preg2 = '#<div class="contents">(.*)</div>#iUs';
echo $title = cj($preg, $con,'2');
$content = cj($preg2, $con);
$sql = "INSERT INTO `article` (`id`, `title`, `content`) VALUES (NULL, '{$title}', '{$content}')";
mysql_query($sql);
 
$sql2 = "select id from temp where id >'{$id}' order by id asc limit 1";
$r2 = mysql_query($sql2);
$row2 = mysql_fetch_array($r2);
if ($row2[0]) {
     echo "<script>location.href='vi.php?id=" . $row2[0] . "'</script>";
}
 
function cj($preg, $con, $num=1) {
    preg_match($preg, $con, $arr);
    return $arr[$num];
}

以下是链接数据库的代码:

<?php
$con = mysql_connect('localhost', 'root', 'root');
mysql_select_db('test', $con);
mysql_set_charset('utf8');

PHP获取MAC地址

获取网卡的MAC地址原码;目前支持WIN/LINUX系统 获取机器网卡的物理(MAC)地址

<?php
/**  
    获取网卡的MAC地址原码;目前支持WIN/LINUX系统  
    获取机器网卡的物理(MAC)地址  
 **/
class GetMacAddr {
 
	var $return_array = array (); // 返回带有MAC地址的字串数组  
	var $mac_addr;
 
	function GetMacAddr($os_type) {
		switch (strtolower ( $os_type )) {
			case "linux" :
				$this->forLinux ();
				break;
			case "solaris" :
				break;
			case "unix" :
				break;
			case "aix" :
				break;
			default :
				$this->forWindows ();
				break;
 
		}
 
		$temp_array = array ();
		foreach ( $this->return_array as $value ) {
 
			if (preg_match ( "/[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f][:-]" . "[0-9a-f][0-9a-f]/i", $value, $temp_array )) {
				$this->mac_addr = $temp_array [0];
				break;
			}
 
		}
		unset ( $temp_array );
		return $this->mac_addr;
	}
 
	function forWindows() {
		@exec ( "ipconfig /all", $this->return_array );
		if ($this->return_array)
			return $this->return_array;
		else {
			$ipconfig = $_SERVER ["WINDIR"] . "\system32\ipconfig.exe";
			if (is_file ( $ipconfig ))
				@exec ( $ipconfig . " /all", $this->return_array );
			else
				@exec ( $_SERVER ["WINDIR"] . "\system\ipconfig.exe /all", $this->return_array );
			return $this->return_array;
		}
	}
 
	function forLinux() {
		@exec ( "ifconfig -a", $this->return_array );
		return $this->return_array;
	}
 
}
//方法使用  
//$mac = new GetMacAddr(PHP_OS);  
//echo $mac->mac_addr;  
?>

MySQL大数据量的导入与导出

如果我们的数据比较小(比如2M或以下),我们可以很方便的使用phpMyAdmin的导入导出功能,先说导出,我们在phpMyAdmin中导出SQL 脚本就相当于文件下载,如果PHP环境允许,脚本执行不会超时的情况也是可以导出大文件的,但是稳定性和速度不够。我们还可以使用MySQL提供给我们的 命令行工具进行导出。如果是windows系统,在mysql的安装目录下的bin目录有一文件名字是mysqldump.exe,当然如果是集成环境 (比如wamp等)可能路径有些差别,我们只要找到mysqldump.exe就可以了。我们打开命令行界面,进入到mysqldump.exe所在的目 录执行以下格式的命令:mysqldump.exe -umysql的用户名 -pmysql的密码 数据库名 > 要保存的路径和文件名。比如我执行的是mysqldump -uroot -proot demo > F:/test.sql(mysqldump.exe后的扩展名exe可以省略),回车后没有提示,但是在指定的目录下已经生成好了SQL脚本文件(这条命令将数据库demo导出sql脚本导出到F盘,名字是test.sql),导出速度也相当快。

c72a8136f0530d024

如果要导出数据库中的一张表或几张表而不是全部使用的命令是mysqldump.exe -umysql的用户名 -pmysql的密码 数据库名 表名1 表名2 > 要保存的路径和文件(数据库名后加空格表名就可以了,有多张表的话使用空格隔开),例如执行mysqldump -uroot -proot demo users photo > F:/test.sql(意思是将demo数据库下的user表和photo表导出)。你可能要问如果要导出多个数据库呢。也有对应的命 令:mysqldump -uroot -proot –databases ci demo > F:/test.sql(增加了–databases参数后面直接跟数据库名空格隔开就可以了,想导出几个就导出几个数据库)。

以上介绍的是windows平台下的导出命令,在Linux下也是一样的道理,需要执行mysql安装目录下的mysqldump(注意:linux下没有exe扩展名了),例如:

f87916136fac2a813

其他参数都是一样的,这里就不再赘述。

完成了导出,我们再来看一下导入,同样因为phpMyAdmin就是一个PHP程序,在导入SQL脚本的时候使用的是文件上产的方式,能够导入的数据大小和PHP的环境有关,并且在导入的时候有提示,比如我当前的PHP环境允许上传的最大大小是10M:

619b618342fcfffee

虽然我们可以修改我们的PHP环境配置,但是如果我们要导入的SQL文件很大,比如说几百M,甚至上G大小,那么就不可能使用此方式进行导入了。同样 MySQL为我们提供了命令行导入,与导出不同的是需要再命令行下登录mysql,在windows下登录mysql用到的可执行文件是bin目录下的 mysql.exe,命令格式是mysql -u用户名 -p密码,例如mysql -uroot -proot,执行此命令后进入mysql的命令行界面,接下来执行以下命令:

1.设置编码,否则可能出现乱码。比如我们要导入的sql文件编码是utf-8的则执行 set names utf8;(注:如果在sql脚本中已经有选择数据库的命令,此命令可以不执行,当然执行了也没有影响)

2.选择数据库,use 数据库名,比如要导入的数据库名demo则执行 use demo;(注:如果在sql脚本中已经有选择数据库的命令,此命令可以不执行)

3.这是比较关键的导入环节执行source sql脚本路径和名字,例如source F:/a.sql

这样sql脚本就会被导入了,如果是Linux环境,也是同样的方式,只是路径不同而已。

使用jquery获取表单数据

Jquery 获取表单数据

function get_form_value(){ 
/*获得TEXT.AREATEXT的值*/ 
   var textval = $("#text_id").attr("value");//或者
   var textval = $("#text_id").val(); 
/*获取单选按钮的值*/ 
   var valradio = $("input[@type=radio][@checked]").val(); 
/*获取复选框的值*/ 
var checkboxval = $("#checkbox_id").attr("value");
/*获取下拉列表中所有的值*/ 
   var selectval = $('#select_id').val();
//获取下拉列表选取中的值,此方法针对所有下拉框都起作用的
//此方法针对所有下拉框都起作用的
   //如果针对某ID进行获取,$(‘#id>option’).each()即可
 
 $('select>option').each(function(){
    if($(this).attr('selected')==true)
    {
    alert($(this).text());
    }
  })
}