返回   CHF站长论坛 > 综合讨论区 > 网站开发与设计

网站开发与设计 网页设计、网站开发、网站维护与调试交流区。

双至强仅二千,企商在线,最早租用商 传世私服 魔域私服 亿恩1元帮您升级服务器! 天龙八部私服 传奇世界私服
传奇私服 仙境私服 天龙八部私服 传奇私服 传世私服 完美世界私服 魔域私服 传奇私服
发表新主题 回复
 
主题工具 主题评分 显示模式
旧 2007-03-20, 14:00   #1 (页面定位)
pageleaf
 
pageleaf 的头像
 
注册日期: 2006-03-29
帖子: 431
pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人
默认 PHP这里谁比较精,赶紧救命!~

文本里的数据是这样的:

名次 会员简称 成交量 增减
1 中谷期货 1257 830
2 中粮期货 1081 664
3 大通期货 540 -2
4 辽粮期货 352 350
5 国际期货 274 158
6 民安期货 239 0
7 上海浙石 236 157
8 汇鑫期货 171 154
9 华南期货 170 85
10 东银期货 165 -147

该怎么把排名数据一个个写进数据库里?而且这样的文件一次就有很多个,如何实现多文件循环读取?
文件名是这样子的:
20070319_a0705_成交量_买持仓_卖持仓排名.txt
20070319_a0707_成交量_买持仓_卖持仓排名.txt
.....
20070319_y0711_成交量_买持仓_卖持仓排名.txt
20070319_y0712_成交量_买持仓_卖持仓排名.txt
.....
pageleaf 当前离线   回复时引用此帖
旧 2007-03-20, 15:37   #2 (页面定位)
fen©
 
fen 的头像
 
注册日期: 2005-12-18
帖子: 2864
fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星
默认

CW
fen 当前离线   回复时引用此帖
旧 2007-03-20, 21:53   #4 (页面定位)
沙滩凉鞋
 
沙滩凉鞋 的头像
 
注册日期: 2005-09-06
住址: Wuhan
帖子: 1203
沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人沙滩凉鞋 是一个将要出名的人
默认

引用:
作者: pageleaf 查看帖子
文本里的数据是这样的:

名次 会员简称 成交量 增减
1 中谷期货 1257 830
2 中粮期货 1081 664
3 ...
说思路:

由于你文件名有规律……
所以可以用循环打开…… 建议用 for 循环

打开以后
用 file() 函数取数组
然后再遍历数组(元素为一行数据,比如“1 中谷期货 1257 830\n”)
以空格为分隔符来分割字符串
然后写入数据库
进入下一循环


沙滩凉鞋 当前离线   回复时引用此帖
旧 2007-03-20, 22:09   #5 (页面定位)
fen©
 
fen 的头像
 
注册日期: 2005-12-18
帖子: 2864
fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星fen 绝对是天王巨星
默认

fen 当前离线   回复时引用此帖
旧 2007-03-21, 00:45   #6 (页面定位)
Hoofei
 
Hoofei 的头像
 
注册日期: 2005-12-10
住址: 武汉
帖子: 3143
Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀Hoofei 有着人尽皆知的贡献和荣耀
默认

大叔说的我看不懂!
Hoofei 当前离线   回复时引用此帖
旧 2007-03-21, 13:32   #7 (页面定位)
小李
 
小李 的头像
 
注册日期: 2005-11-03
住址: Mars
帖子: 2278
小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星
默认

PHP 代码:
这里就不要了。 
实验了一下

但是有点问题。字符编码的问题,从文件中读出来,SQL查询的时候就抱错了,提示是乱码,请教解决办法。

没有错误处理的代码,
小李 当前离线   回复时引用此帖
旧 2007-03-21, 13:59   #8 (页面定位)
小李
 
小李 的头像
 
注册日期: 2005-11-03
住址: Mars
帖子: 2278
小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星
默认

日。 莫名奇妙的解决了,测试环境win2003+Apache/2.2.2 (Win32) PHP/5.1.4 +MYSQL5.0.22 ,代码:
输入你的那些文本文件的目录,程序自动遍历该目录所有的TXT文件,并以TXT文件名的前14个字符作为表名创建一个数据表,把改文件的数据按格式 存入表中。

最后修改完了,看看还有什么问题。

PHP 代码:
<form name="form" method="POST" action=<?php echo $PHP_SELF;?>>
请输入目录:<input type="text" name="dir" />    
<input type="submit" name="submit" value="提交" />
</form>
<?php
//检测魔术引用的代码
    
$is_magic = @ini_get("magic_quotes_gpc");

    if(!
get_magic_quotes_gpc()){
        if(
is_array($_REQUEST)){ 
            foreach(
$_REQUEST AS $key => $value){ 
            $
$key addslashes($value); 
            }    
        }
    }
    else{
        if(
is_array($_REQUEST)){ 
            foreach(
$_REQUEST AS $key => $value){ 
            $
$key $value
            }    
        }
    }

    
$inputdir=$_POST['dir'];
    if(!
eregi('^[A-Za-z]:\\\\.+',$inputdir)){
        echo 
'错误的目录';
        exit;
    }    
    
$conn mysql_connect("localhost""root""666666"); //设置你的数据库用户及密码。
    
if (!$conn) {
        echo 
"Unable to connect to DB: " mysql_error();
        exit;
    }
    if (!
mysql_select_db("testdb")) { //设置你的数据库
        
echo "Unable to select mydbname: " mysql_error();
        exit;
    }
    
mysql_query("set names 'gb2312'");
    
$dir=dir($inputdir);
    
$dir->rewind();
    while(
$file=$dir->read()){
        if(
preg_match("/\.txt/",$file)){
            
$tablename=substr($file,0,14);
            
$sql ="DROP TABLE IF EXISTS $tablename";        
            
$result mysql_query($sql);

            
$sql ="CREATE TABLE $tablename (
        rank VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL,
        name VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL,
        deal VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, 
        zhenjian VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL 
        )"
;    
            
$result mysql_query($sql);
        if (!
$result) {
            echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
            exit;
        }        
        
$file=$inputdir.'\\'.$file;
        
$fp=fopen($file,'rb');
        while(
$order=fgetcsv($fp,100," ")){
        
$sql "INSERT INTO $tablename (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')";
        
$result mysql_query($sql);

        if (!
$result) {
        echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
        exit;
    }        
    }
    }
}
echo 
'程序已经成功完成';
$dir->close;
?>
小李 当前离线   回复时引用此帖
旧 2007-03-21, 14:36   #9 (页面定位)
小李
 
小李 的头像
 
注册日期: 2005-11-03
住址: Mars
帖子: 2278
小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星
默认

但是有个缺点就是,如果你有一万个文件不是要建一万个表?
小李 当前离线   回复时引用此帖
旧 2007-03-21, 17:41   #10 (页面定位)
pageleaf
 
pageleaf 的头像
 
注册日期: 2006-03-29
帖子: 431
pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人pageleaf 是一个将要出名的人
默认

当然是存放在同一表中,不过真是太感谢小李同志了
pageleaf 当前离线   回复时引用此帖
旧 2007-03-21, 18:20   #11 (页面定位)
小李
 
小李 的头像
 
注册日期: 2005-11-03
住址: Mars
帖子: 2278
小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星
默认

这样可以放一个表里面了。

PHP 代码:
<form name="form" method="POST" action=<?php echo $PHP_SELF;?>>
请输入目录:<input type="text" name="dir" />    
<input type="submit" name="submit" value="提交">
</form>
<?php
    
//数据库设定
    
$dbhost='localhost';
    
$dbuser='root';
    
$dbpwd='666666';
    
$dbname='testdb';
    
$dbtable='anytable';//任意你想要的表名
    
    
    
$is_magic = @ini_get("magic_quotes_gpc");

    if(!
get_magic_quotes_gpc()){
        if(
is_array($_REQUEST)){ 
            foreach(
$_REQUEST AS $key => $value){ 
            $
$key addslashes($value); 
            }    
        }
    }
    else{
        if(
is_array($_REQUEST)){ 
            foreach(
$_REQUEST AS $key => $value){ 
            $
$key $value
            }    
        }
    }

    
$inputdir=$_POST['dir'];    
    if(!
eregi('^[A-Za-z]:\\\\.+',$inputdir)){
        echo 
'错误的目录';
        exit;
    }
    
$conn mysql_connect($dbhost,$dbuser,$dbpwd);
    if (!
$conn) {
        echo 
"Unable to connect to DB: " mysql_error();
        exit;
    }
    if (!
mysql_select_db($dbname)) {
        echo 
"Unable to select mydbname: " mysql_error();
        exit;
    }
    
mysql_query("set names 'gb2312'");
//    $sql ="DROP TABLE IF EXISTS $dbtable"; // 
//    $result = mysql_query($sql);    
    
$sql ="CREATE TABLE $dbtable (
        id INT( 10 ) NOT NULL AUTO_INCREMENT , 
        rank VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL,
        name VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL,
        deal VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL, 
        zhenjian VARCHAR(20)  CHARACTER SET gbk COLLATE gbk_chinese_ci NULL,
        PRIMARY KEY  (`id`)
        )"
;    
    
$result mysql_query($sql);
    if (!
$result) {
        
$dir=dir($inputdir);
        
$dir->rewind();
        while(
$file=$dir->read()){ 
            if(
preg_match("/\.txt/",$file)){
                
$file=$inputdir.'\\'.$file;
                
$fp=fopen($file,'rb');
                    while(
$order=fgetcsv($fp,100," ")){
                        
$sql "INSERT INTO $dbtable (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')";
                        
$result mysql_query($sql);

                        if (!
$result) {
                            echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
                            exit;
                        }        
                    }
            }
    
    }
    }
    else{    
        
$dir=dir($inputdir);
        
$dir->rewind();
        while(
$file=$dir->read()){ 
            if(
preg_match("/\.txt/",$file)){
    
                
$file=$inputdir.'\\'.$file;
                
$fp=fopen($file,'rb');
                    while(
$order=fgetcsv($fp,100," ")){
                        
$sql "INSERT INTO $dbtable (`rank`, `name`, `deal`, `zhenjian`) VALUES ('$order[0]','$order[1]','$order[2]','$order[3]')";
                        
$result mysql_query($sql);
    
                        if (!
$result) {
                            echo 
"Could not successfully run query ($sql) from DB: " mysql_error();
                            exit;
                        }        
                    }
            }
        }
}
echo 
'程序已经成功完成';
$dir->close;
?>
,但是我觉得放一个表里面 ,以后怎么知道什么是什么呢?

此帖于 2007-03-21 18:28 被 小李 编辑. 原因: 创建表有点问题
小李 当前离线   回复时引用此帖
旧 2007-03-21, 18:32   #12 (页面定位)
平行线
管理员
 
平行线 的头像
 
注册日期: 2005-10-29
帖子: 9078
平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就平行线 有着超越历史的辉煌成就
默认

小李原来是个高手
平行线 当前离线   回复时引用此帖
旧 2007-03-21, 18:40   #13 (页面定位)
小李
 
小李 的头像
 
注册日期: 2005-11-03
住址: Mars
帖子: 2278
小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星小李 是一位成功的新星
默认

引用:
作者: 平行线 查看帖子
小李原来是个高手
不敢不敢,我还是新手,这几天刚好看PHP+MYSQL WEB 开发。
小李 当前离线   回复时引用此帖