精华内容
下载资源
问答
  • 已有新版V 0.8.0 ... 出行买票不在困难,我要火车票来帮您 不去票务代理和火车站,就可以知道列车时刻表、余票数量等火车...我要火车票是一款集火车票转让信息搜集、火车票余票查询列车时刻表等功能于一体的免费软件。
  • 不去票务代理和火车站,就可以知道列车时刻表、余票数量等火车票信息 1.真正足不出户,在家里就可以查询余票数量; 2.实时获取网上最新火车票转让信息; 3.新票到达提醒,使你在工作的同时还能关注最新转让信息,不...
  • 不去票务代理和火车站,就可以知道列车时刻表、余票数量等火车票信息 1.真正足不出户,在家里就可以查询余票数量; 2.实时获取网上最新火车票转让信息; 3.新票到达提醒,使你在工作的同时还能关注最新转让信息,不...
  • 不去票务代理和火车站,就可以知道列车时刻表、余票数量等火车票信息 1.真正足不出户,在家里就可以查询余票数量; 2.实时获取网上最新火车票转让信息; 3.新票到达提醒,使你在工作的同时还能关注最新转让信息,不...
  • 不去票务代理和火车站,就可以知道列车时刻表、余票数量等火车票信息 1.真正足不出户,在家里就可以查询余票数量; 2.实时获取网上最新火车票转让信息; 3.新票到达提醒,使你在工作的同时还能关注最新转让信息,不...
  • 列车时刻表AIR版本,超酷超牛逼,查询列车车次,支持在线,离线查询
  • 列车时刻表,查询车次,还可以上网下载最新版本.:)
  • 通过出发站-到达站在线查询火车车次列车类型,里程,用时,出发时间和到达时间等信息,选择车次后,按照站次顺序列出本次列车所有站名,到达时间,开车时间,里程,票价等详细信息
  • 最新版列车时刻表,可查询全国各地车次,票价,时刻
  • 不可多得的火车时刻表,可查询全国各地的火车车次,票额 和余票,谁用谁方便,谁用谁受益。
  • 基于QT4的 列车时刻表查询系统,mini2440移植 教程 +源码
  • 这是一个方便的列车查询工具,在大家出行时可以查询车次的始发到站时间。并且这是一个exe执行文件,体积小巧,不需要安装。
  • 可以很方便地查询列车时刻,包括站站查询车次查询
  • 列车时刻表

    2012-08-20 17:47:15
    列车时刻表 站站、车次查询 站站:上海-北京 车次:K99
  • 列车时刻表查询软件

    2013-01-12 10:00:28
    列车到发时间,到发车次、春运高峰确定车次表列车的票价及余票信息
  • 本程序主要包括全国各地...2. 通过客户端Cookie保存了最近一次查询车次、车站以及出发站与目的站的信息,方便再次按习惯去查常用列车时刻表。 3. 修改了相应界面;解决查询页面与FF的兼容性问题,调整结果页样式。
  • 12306列车时刻表查询api功能实现

    万次阅读 2019-02-16 11:20:05
    最近乘坐火车,在车上像快要看看列车时刻表,大概知道什么时间到达什么车站,起初是每次都打开12306APP查询,然后感觉每次打开APP很麻烦,就去微信小程序里边搜索,果然有我们伟大的猿类同胞做了这件事。于是乎,我就想...

    最近乘坐火车,在车上像快要看看列车时刻表,大概知道什么时间到达什么车站,起初是每次都打开12306APP查询,然后感觉每次打开APP很麻烦,就去微信小程序里边搜索,果然有我们伟大的猿类同胞做了这件事。于是乎,我就想12306是不是有开放平台提供了接口供我们使用,查了查竟然没有,聚合数据有此类接口(https://www.juhe.cn/docs/api/id/22),还是收费的。身为一个勤劳好学的猿,必须要亲自试一试。在查了查信息,看了一些前辈们的资料,自己终于也简单实现了。

    1.获取全国所有车站
    获取车站的目的是拿到全国所有车站的电码信息编号,后续需要用到。

    /**
     * 车站的电码信息编号
     * 数据格式:@bjb|北京北|VAP|beijingbei|bjb|0
     * 车站名缩写:bjb
     * 车站名称:北京北
     * 车站电码编号:VAP
     * 车站数字编号:0
     * author 江南极客
     */
    function get_station_code(){
        $url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js';
        $data = curl_request($url);
        if(!$data){
            msgReturn('获取数据失败',-1);
        }
        //var station_names ='@bjb|北京北|VAP|beijingbei|bjb|0...';
        $station_data = strrchr($data,'=');
        $station_name = ltrim($station_data,"='@");
        $station_name = rtrim($station_name,"';");
        $station_arr = explode('@',$station_name);
        if(empty($station_arr)){
            msgReturn('获取数据失败',-1);
        }
    
        return $station_arr;
    }

    由于车站信息需要做查询,所以我将数据爬出来存入数据库。

    /**
     * 导入车站信息(至数据库)
     * author 江南极客
     * @return array
     */
    function import_train_station(){
        $station_arr = get_station_code();
        $station_data = array();
        $time = date('Y-m-d H:i:s');
        $month = date('n');
    
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
        $update = false; //是否要更新数据
        //数据一个月更新一次
        $one_sql = 'select * from dmx_station_info where update_month='.$month;
        $curr_month_data = $db->get_one($one_sql);
        if(empty($curr_month_data)){
            //当前月份没有数据,则截断表然后插入数据
            $update = true;
            $truncate_sql = 'TRUNCATE dmx_station_info';
            $db->query($truncate_sql);
        }
        foreach ($station_arr as $item){
            $temp = explode('|',$item);
            $temp_arr = array(
                'station_no' => $temp[5],
                'station_abbr' => $temp[0],
                'station_name' => $temp[1],
                'station_telecode' => $temp[2],
                'ch_pinyin' => $temp[3],
                'simp_pinyin' => $temp[4],
                'origin_info' => $item,
                'update_time' => $time,
                'update_month' => $month,
            );
            $station_data[] = $temp_arr;
            if($update){
                $db->insert('dmx_station_info',$temp_arr);
            }
        }
        return $station_data;
    }

    导入数据库后的数据如下:

    车站信息

    2.拿到12306月排班表所有的车次信息
    铁道部每日排班车次1万多条数据,每月30多万,一次取出来数据30多万条数据大概23M多,程序很容易就请求超时,可以取出来然后做缓存一个月更新一次。

    /**
     * 通过12306月排班表拿到所有的车次信息
     * 铁道部 每日排班车次1万多条数据 , 每月30多万 , 一次取出来数据量非常庞大,可以取出来然后做缓存一个月更新一次
     * author 江南极客
     * @return mixed
     */
    function get_train_list(){
        $cache_file = __DIR__.'/train_list.json';
        CHECKFILE:
        if(file_exists($cache_file)){
            $cache_time = filemtime($cache_file);
            $month = date('n');
            //一个月缓存一次
            if(date('n',$cache_time) != $month){
                @unlink($cache_file);
                goto CHECKFILE;
            }
            $train_list = file_get_contents($cache_file);
        }else{
            $url = 'https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=1.0';
            $data = curl_request($url);
            $train_data = strrchr($data,'=');
            $train_list = ltrim($train_data,"=");
            $train_list = rtrim($train_list,",");
            @file_put_contents($cache_file,$train_list);
        }
        $train_arr = json_decode($train_list,true);
        return $train_arr;
    }

    同样的为了便于查询,将数据爬出来存入数据库。一次取出来30多条数据,处理数据然后插入数据库,如果一次性做,就会超时,所以我使用了比较笨的方法:一次只操作一天的数据,可以循环倒入。

    /**
     * 导入车次信息(至数据库)
     * author 江南极客
     */
    function import_train_list(){
        //数据库配置
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
    
        //获取一个月内列车排班信息列表
        $station_arr = get_train_list();
        $station_arr_count = count($station_arr);
    
        //一次取出来 一个月的信息 一次只操作一天的数据
        $temp_times = 'youqijun';
        session_start() ;
        if(isset($_SESSION[$temp_times])){
            $temp = $_SESSION[$temp_times];
            $temp += 1;
            $_SESSION[$temp_times] = $temp;
        }else{
            $temp = 0;
            $_SESSION[$temp_times] = $temp;
        }
        if($temp >= $station_arr_count){
            msgReturn('导入完毕',-1);
        }
        //截取数组的一部分(一次取一天的数据)
        $station_arr = array_slice($station_arr,$temp,1);
        if(empty($station_arr)){
            msgReturn('暂无数据',-1);
        }
    
        $temp_arr = array();
        $pattern = "/^(.*?)\((.*?)\-(.*?)\)$/";
        $month = date('n');
        foreach ($station_arr as $key1 => $date_arr){
            $time = $key1;
            foreach ($date_arr as $key2 => $train_arr){
                $type = $key2;
                foreach ($train_arr as $train){
                    $train['train_date'] = $time.' 00:00:00';
                    $train['train_type'] = $type;
                    $train['update_month'] = $month;
                    //K580(长沙-成都东)  匹配出车次 和 始发站,终到站
                    preg_match_all($pattern, $train['station_train_code'], $match);
                    //$train_sn = strstr($train['station_train_code'],'(',true);
                    $train['train_sn'] = $match[1][0];
                    $train['from_station'] = $match[2][0];
                    $train['to_station'] = $match[3][0];
                    $train['between_station'] = $match[2][0].'-'.$match[3][0];
                    $temp_arr[] = $train;
                    $db->insert('dmx_train_list',$train);
                }
            }
        }
        print_r($temp_arr);
    }

    导入数据库后的数据如下:

    车次信息

    3.获取列车运行时刻表
    (1)通过车次和日期 , 在步骤2的数据中拿到该车次的始发站,终点站和车次编码
    (2)在步骤1的数据中,拿到始发站和终点站的电码信息编号
    (3)调用接口拿到该车次运行时刻信息

    /**
     * 获取列车时刻表
     * @param string $train_sn 车次(如:G1207)
     * @param string $date 日期
     * train_no: 车次编号
     * from_station_telecode: 起始站点的电码编号
     * to_station_telecode: 目的站点的电码编号
     * depart_date: 查询日期
     * author 江南极客
     * @return mixed
     */
    function get_train_timetable($train_sn='',$date=''){
        $url = 'https://kyfw.12306.cn/otn/czxx/queryByTrainNo?';
        if(empty($train_sn)){
            msgReturn('请填写车次',-1);
        }
        if(empty($date)) {
            $date = date('Y-m-d');
        }else{
            $date_str = strtotime($date);
            $date = date('Y-m-d',$date_str);
        }
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
        $train_date = $date.' 00:00:00';
        $train_sn = strtoupper($train_sn);
        //根据输入的车次 拿到 车次排班编号,始发站和终到站
        $train_sql = "select * from dmx_train_list where train_sn='{$train_sn}' and train_date='{$train_date}'";
        $train = $db->get_one($train_sql);
        if(empty($train)){
            msgReturn('未查到当日当次列车信息',-1);
        }
        //取出始发站和终到站的电码编号
        $from_station_name = $train['from_station'];
        $to_station_name = $train['to_station'];
        $from_station_sql = "select * from dmx_station_info where station_name='{$from_station_name}'";
        $to_station_sql = "select * from dmx_station_info where station_name='{$to_station_name}'";
        $from_station = $db->get_one($from_station_sql);
        if(empty($from_station)){
            msgReturn('未查到始发车站',-1);
        }
        $to_station = $db->get_one($to_station_sql);
        if(empty($to_station)){
            msgReturn('未查到终点车站',-1);
        }
        $param = [
            'train_no' => $train['train_no'],
            'from_station_telecode' => $from_station['station_telecode'],
            'to_station_telecode' => $to_station['station_telecode'],
            'depart_date' => $date,
        ];
        $http_param = http_build_query($param);
        $url = $url.$http_param;
        $header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
        $data = curl_request($url,true,'GET',null,$header);
        if(!$data){
            msgReturn('网络错误',-1);
        }
        $data = json_decode($data,true);
        if(empty($data['data']['data'])){
            msgReturn('列车时刻表数据不存在',-1);
        }
        return $data['data']['data'];
    }

    附:存储车站信息和车次信息的数据库DDL:

    CREATE TABLE IF NOT EXISTS `dmx_station_info` (
      `id` INT(11) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
      `station_no` INT(6) NOT NULL DEFAULT '0' COMMENT '车站编号',
      `station_abbr` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '车站缩写',
      `station_name` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '车站名称',
      `station_telecode` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '车站电码编号',
      `ch_pinyin` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '车站拼音',
      `simp_pinyin` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '车站简拼',
      `origin_info` varchar(128) NOT NULL DEFAULT '' COMMENT '原始信息',
      `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '更新时间',
      `update_month` tinyint(2) NOT NULL DEFAULT '0' COMMENT '更新月份',
      KEY `inx_no`(`station_no`),
      KEY `inx_telecode`(`station_telecode`)
    ) ENGINE = MyISAM DEFAULT CHARSET=utf8 COMMENT='车站信息表';
    
    CREATE TABLE IF NOT EXISTS `dmx_train_list` (
      `id` INT(11) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
      `station_train_code` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '车次信息',
      `train_no` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '车次编号',
      `train_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '发车时间',
      `train_type` CHAR(1) NOT NULL DEFAULT '' COMMENT '类型(K D G)',
      `train_sn` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '车次',
      `from_station` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '始发站',
      `to_station` VARCHAR(16) NOT NULL DEFAULT '' COMMENT '终到站',
      `between_station` varchar(32) NOT NULL DEFAULT '' COMMENT '始发-终到',
      `update_month` tinyint(2) NOT NULL DEFAULT '0' COMMENT '更新月份',
      KEY `inx_no`(`train_no`),
      KEY `inx_sn`(`train_sn`)
    ) ENGINE = MyISAM DEFAULT CHARSET=utf8 COMMENT='车次信息表';

    简单写个界面,就可以查到信息啦:

    附:源码(一个单文件搞定)

    <?php
    
    header("Content-type: text/html; charset=utf-8");
    
    require_once 'db.class.php.php';//数据库
    error_reporting(0);//屏蔽错误警告
    ignore_user_abort(); //忽略关闭浏览器
    set_time_limit(0); //永远执行
    
    
    //设置网络请求配置
    function curl_request($curl,$https=true,$method='GET',$data=null,$aHeader=array()){
        // 创建一个新cURL资源
        $ch = curl_init();
    
        // 设置URL和相应的选项
        curl_setopt($ch, CURLOPT_URL, $curl);    //要访问的网站
        curl_setopt($ch, CURLOPT_HEADER, false);    //启用时会将头文件的信息作为数据流输出。
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  //将curl_exec()获取的信息以字符串返回,而不是直接输出。
    
        if( count($aHeader) >= 1 ){
            curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
        }
    
        if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);  //FALSE 禁止 cURL 验证对等证书(peer's certificate)。
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  //验证主机
        }
        if(strtoupper($method) == 'POST'){
            curl_setopt($ch, CURLOPT_POST, true);  //发送 POST 请求
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);  //全部数据使用HTTP协议中的 "POST" 操作来发送。
        }
    
    
        // 抓取URL并把它传递给浏览器
        $content = curl_exec($ch);
        //关闭cURL资源,并且释放系统资源
        if($content){
            curl_close($ch);
            return $content;
        }else {
            $error = curl_errno($ch);
            echo "call faild, errorCode:$error\n";
            curl_close($ch);
            return false;
        }
    
    }
    
    /**
     * 数据输出返回
     * @param null $data
     * @param int $errCode
     * author 江南极客
     */
    function msgReturn($data=null,$errCode=0){
        $returnArr = array(
            'error_no'=>$errCode,
        );
        if($errCode===0 || is_array($data)){
            $returnArr['data'] = $data;
        }else{
            $returnArr['error_msg'] = $data;
        }
        die(json_encode($returnArr));
    }
    
    /**
     * 车站的电码信息编号
     * 数据格式:@bjb|北京北|VAP|beijingbei|bjb|0
     * 车站名缩写:bjb
     * 车站名称:北京北
     * 车站电码编号:VAP
     * 车站数字编号:0
     * author 江南极客
     */
    function get_station_code(){
        $url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js';
        $data = curl_request($url);
        if(!$data){
            msgReturn('获取数据失败',-1);
        }
        //var station_names ='@bjb|北京北|VAP|beijingbei|bjb|0...';
        $station_data = strrchr($data,'=');
        $station_name = ltrim($station_data,"='@");
        $station_name = rtrim($station_name,"';");
        $station_arr = explode('@',$station_name);
        if(empty($station_arr)){
            msgReturn('获取数据失败',-1);
        }
    
        return $station_arr;
    }
    
    /**
     * 导入车站信息(至数据库)
     * author 江南极客
     * @return array
     */
    function import_train_station(){
        $station_arr = get_station_code();
        $station_data = array();
        $time = date('Y-m-d H:i:s');
        $month = date('n');
    
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
        $update = false; //是否要更新数据
        //数据一个月更新一次
        $one_sql = 'select * from dmx_station_info where update_month='.$month;
        $curr_month_data = $db->get_one($one_sql);
        if(empty($curr_month_data)){
            //当前月份没有数据,则截断表然后插入数据
            $update = true;
            $truncate_sql = 'TRUNCATE dmx_station_info';
            $db->query($truncate_sql);
        }
        foreach ($station_arr as $item){
            $temp = explode('|',$item);
            $temp_arr = array(
                'station_no' => $temp[5],
                'station_abbr' => $temp[0],
                'station_name' => $temp[1],
                'station_telecode' => $temp[2],
                'ch_pinyin' => $temp[3],
                'simp_pinyin' => $temp[4],
                'origin_info' => $item,
                'update_time' => $time,
                'update_month' => $month,
            );
            $station_data[] = $temp_arr;
            if($update){
                $db->insert('dmx_station_info',$temp_arr);
            }
        }
        return $station_data;
    }
    
    /**
     * 通过12306月排班表拿到所有的车次信息
     * 铁道部 每日排班车次1万多条数据 , 每月30多万 , 一次取出来数据量非常庞大,可以取出来然后做缓存一个月更新一次
     * author 江南极客
     * @return mixed
     */
    function get_train_list(){
        $cache_file = __DIR__.'/train_list.json';
        CHECKFILE:
        if(file_exists($cache_file)){
            $cache_time = filemtime($cache_file);
            $month = date('n');
            //一个月缓存一次
            if(date('n',$cache_time) != $month){
                @unlink($cache_file);
                goto CHECKFILE;
            }
            $train_list = file_get_contents($cache_file);
        }else{
            $url = 'https://kyfw.12306.cn/otn/resources/js/query/train_list.js?scriptVersion=1.0';
            $data = curl_request($url);
            $train_data = strrchr($data,'=');
            $train_list = ltrim($train_data,"=");
            $train_list = rtrim($train_list,",");
            @file_put_contents($cache_file,$train_list);
        }
        $train_arr = json_decode($train_list,true);
        return $train_arr;
    }
    
    /**
     * 导入车次信息(至数据库)
     * author 江南极客
     */
    function import_train_list(){
        //数据库配置
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
    
        //获取一个月内列车排班信息列表
        $station_arr = get_train_list();
        $station_arr_count = count($station_arr);
    
        //一次取出来 一个月的信息 一次只操作一天的数据
        $temp_times = 'youqijun';
        session_start() ;
        if(isset($_SESSION[$temp_times])){
            $temp = $_SESSION[$temp_times];
            $temp += 1;
            $_SESSION[$temp_times] = $temp;
        }else{
            $temp = 0;
            $_SESSION[$temp_times] = $temp;
        }
        if($temp >= $station_arr_count){
            msgReturn('导入完毕',-1);
        }
        //截取数组的一部分(一次取一天的数据)
        $station_arr = array_slice($station_arr,$temp,1);
        if(empty($station_arr)){
            msgReturn('暂无数据',-1);
        }
    
        $temp_arr = array();
        $pattern = "/^(.*?)\((.*?)\-(.*?)\)$/";
        $month = date('n');
        foreach ($station_arr as $key1 => $date_arr){
            $time = $key1;
            foreach ($date_arr as $key2 => $train_arr){
                $type = $key2;
                foreach ($train_arr as $train){
                    $train['train_date'] = $time.' 00:00:00';
                    $train['train_type'] = $type;
                    $train['update_month'] = $month;
                    //K580(长沙-成都东)  匹配出车次 和 始发站,终到站
                    preg_match_all($pattern, $train['station_train_code'], $match);
                    //$train_sn = strstr($train['station_train_code'],'(',true);
                    $train['train_sn'] = $match[1][0];
                    $train['from_station'] = $match[2][0];
                    $train['to_station'] = $match[3][0];
                    $train['between_station'] = $match[2][0].'-'.$match[3][0];
                    $temp_arr[] = $train;
                    $db->insert('dmx_train_list',$train);
                }
            }
        }
        print_r($temp_arr);
    }
    
    /**
     * 获取列车时刻表
     * @param string $train_sn 车次(如:G1207)
     * @param string $date 日期
     * train_no: 车次编号,从步骤1中的数据获取
     * from_station_telecode: 起始站点的电码编号
     * to_station_telecode: 目的站点的电码编号
     * depart_date: 查询日期
     * author 江南极客
     * @return mixed
     */
    function get_train_timetable($train_sn='',$date=''){
        $url = 'https://kyfw.12306.cn/otn/czxx/queryByTrainNo?';
        if(empty($train_sn)){
            msgReturn('请填写车次',-1);
        }
        if(empty($date)) {
            $date = date('Y-m-d');
        }else{
            $date_str = strtotime($date);
            $date = date('Y-m-d',$date_str);
        }
        $db_config = array(
            'hostname'  => '127.0.0.1',
            'username'  => 'root',
            'password'  => 'root',
            'database'  => 'dmx_train',
            'pconnect'  => 0,
            'log'  => 0
        );
        $db = new DB($db_config);
        $train_date = $date.' 00:00:00';
        $train_sn = strtoupper($train_sn);
        //根据输入的车次 拿到 车次排班编号,始发站和终到站
        $train_sql = "select * from dmx_train_list where train_sn='{$train_sn}' and train_date='{$train_date}'";
        $train = $db->get_one($train_sql);
        if(empty($train)){
            msgReturn('未查到当日当次列车信息',-1);
        }
        //取出始发站和终到站的电码编号
        $from_station_name = $train['from_station'];
        $to_station_name = $train['to_station'];
        $from_station_sql = "select * from dmx_station_info where station_name='{$from_station_name}'";
        $to_station_sql = "select * from dmx_station_info where station_name='{$to_station_name}'";
        $from_station = $db->get_one($from_station_sql);
        if(empty($from_station)){
            msgReturn('未查到始发车站',-1);
        }
        $to_station = $db->get_one($to_station_sql);
        if(empty($to_station)){
            msgReturn('未查到终点车站',-1);
        }
        $param = [
            'train_no' => $train['train_no'],
            'from_station_telecode' => $from_station['station_telecode'],
            'to_station_telecode' => $to_station['station_telecode'],
            'depart_date' => $date,
        ];
        $http_param = http_build_query($param);
        $url = $url.$http_param;
        $header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
        $data = curl_request($url,true,'GET',null,$header);
        if(!$data){
            msgReturn('网络错误',-1);
        }
        $data = json_decode($data,true);
        if(empty($data['data']['data'])){
            msgReturn('列车时刻表数据不存在',-1);
        }
        return $data['data']['data'];
    }
    
    
    /*$checi = 'g1207';
    $data = get_train_timetable($checi,'2019-5-18');
    print_r($data);die;*/
    
    $now = date('Y-m-d');
    
    if($_SERVER['REQUEST_METHOD'] == 'POST'){
        $train_no = trim($_POST['value1']);
        $train_date = trim($_POST['value2']);
        $data = get_train_timetable($train_no,$train_date);
        msgReturn($data);
    }
    
    
    ?>
    <html xmlns="">
    
    <head>
        <meta http-equiv = "Content-Type" content = "text/html;charset = utf8">
        <meta name = "description" content = "列车时刻表">
        <title>列车时刻表-高铁动车运行时间查询</title>
        <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script>
    </head>
    <style type="text/css">
        .key1{
            width:100px;
        }
        .value1{
            width:300px;
            margin:0 0 0 1px;
        }
        .main{
            margin:0 auto;
            width:450px;
            height:auto;
            background:#B4E4E4;
            padding:20px 40px;
            /*background: url("https://www.12306.cn/index/images/pic/banner08.jpg") bottom center repeat-y #efeff4 ;*/
        }
        .refer{
            width:100px;
            height:24px;
        }
        .h1-title{
    
        }
        .request-res{
            width:300px;
            margin:0 0 0 1px;
            display: none;
        }
        .train-table{
            margin-top: 10px;
            margin-left: 85px;
            display: none;
        }
        .train-table table{
            /*border: 1px solid gray;*/
            border-right: 1px solid gray;
            border-bottom: 1px solid gray;
        }
        .train-table table td{
            font-size: 14px;
            border-left: 1px solid gray;
            border-top: 1px solid gray;
        }
    </style>
    <body>
    
    <div class="main">
        <h1 class="h1-title" align="center">列车时刻表</h1>
        <form method="POST" action="" target="_blank" id="form">
            <p>列车车次:
                <input class="value1" type="text" name="value1" value="" placeholder="列车车次 如:k16"></p>
            <p>发车日期:
                <input class="value1" type="text" name="value2" value="<?php echo $now; ?>" placeholder="发车时间"></p>
            <p class="request-res">查询结果:<span class="value1 res-return1">...</span></p>
            <div class="train-table">
                <table width="300" border="0" cellpadding="0" cellspacing="0" class="table-result">
                    <!--<tr>
                        <td>序号</td>
                        <td>车站</td>
                        <td>到/发时间</td>
                        <td>停留</td>
                    </tr>
                    <tr>
                        <td>01</td>
                        <td>青岛</td>
                        <td>16:26-16:30</td>
                        <td>4分钟</td>
                    </tr>-->
                </table>
            </div>
            <p style="text-align:center;"><input class="refer" type="submit" value="查询"></p>
        </form>
    </div>
    </body>
    <script>
        $(function(){
            $("#form").submit(function(e){
                e.preventDefault();
                var data = {};
                data.value1 = $("input[name=value1]").val();
                data.value2 = $("input[name=value2]").val();
                $(".request-res").show();
                $.ajax({
                    url:'train.php',
                    data:data,
                    dataType:'json',
                    type:'post',
                    success:function(ret){
                        //console.log(ret);
    
                        if(ret.error_no == 0){
                            var train_list_html = "<tr><td>序号</td><td>车站</td><td>到/发时间</td><td>停留</td></tr>";
                            $.each(ret.data,function(key,val){
                                //console.log(key+'----'+val.station_name);
                                //train_list_html += "<tr><td>序号</td><td>车站</td><td>到/发时间</td><td>停留</td></tr>";
                                train_list_html += "<tr><td>"+val.station_no+"</td><td>"+val.station_name+"</td><td>"+val.arrive_time+"-"+val.start_time+"</td><td>"+val.stopover_time+"</td></tr>";
                            });
                            var train_info = ret.data[0];
                            var train_text = train_info.station_train_code+"( "+train_info.start_station_name+"-"+train_info.end_station_name+" )";
                            $(".train-table").show();
                            $(".res-return1").html(train_text);
                            $(".request-res").css("color","green");
                            $(".table-result").html(train_list_html);
                        }else{
                            $(".train-table").hide();
                            $(".request-res").css("color","red");
                            $(".res-return1").html(ret.error_msg);
                        }
                    },
                    complete:function (info) {
                        //console.log('over:'+info);
                    },
                    error:function (err) {
                        //console.log('err:'+err);
                    }
                })
            })
        })
    </script>
    </html>
    
    

     

    展开全文
  • [程序名称]Hi5360列车时刻表查询(V1.3.1108) [功能简介] 本程序主要包括全国各地列车的站站查询、车站查询以及车次查询等功能;站站查询还提供了详尽的中转方案。 [V1.3版本更新说明] 新增了高级查询功能...
  • 列车时刻表数据,列车时刻表数据,列车时刻表数据,oracle版;列车时刻表数据,列车时刻表数据,列车时刻表数据,oracle版
  • 盛名列车时刻表 火车时刻表 可以迅速查询列车的车次时间以及价格
  • 列车时刻表 列车时刻表——轻松查车次、时间、站点
  • 列车时刻表数据库样本 ================================= 本站每几天不定期更新列车时刻数据库(如有重大变动会立即更新)以确保列车时刻库数据始终保持在最新状态,目前列车时刻数据已经是最新时刻表状态。 您...
  • 全国列车时刻表 xiazai

    2009-03-22 09:28:17
    压缩 全国列车时刻表车次查询,时间查询
  • 极品列车时刻表

    2013-05-17 22:30:29
    极品列车时刻表,方便用户出行车次查询。很实用,可更新、。
  • 列车时刻表数据库

    2013-05-05 22:53:06
    这是 一个列车时刻表数据库 想研究火车订票系统的童鞋 可以看看
  • 全国各列车时刻的站站查询、站名查询车次查询  主要功能:  全国各次列车的票价查询  软件可单机运行  可网上更新数据的功能  可网上进行软件自动更新

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 803
精华内容 321
关键字:

列车时刻表车次查询