亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP中echo語句濫用詳解

2020-03-22 18:42:34
字體:
來源:轉載
供稿:網友
首先簡要介紹一下我的程序的結構以及要實現的功能: 簡而言之,該程序主要功能是實現將已知地址經緯度的某個點在地圖上在地圖上顯示出來,程序主要分為三個模塊:分別是 前端(html+css+js)、后臺(php)、數據庫(mysql),三模塊分別實現下列功能。
數據庫:存儲某個地點的經緯度信息(因為所做項目要求顯示的是公司某個硬件設備的所在地,所以,我稱之為——設備地址);
后臺:本后臺實現的功能主要是通過sql語句查詢到數據庫里滿足條件的設備的地址信息(經緯度),然后將這些地址信息以json格式輸出,讓前端頁面可以通過ajax方式獲取到;

//后臺代碼:<?phpsession_start();//查找數據庫header ( "Content-type:text/html;charset=utf-8" );include "conn.php";mysql_query("set names utf8");//讀取舊信息$startTime = date("Y-m-d H:i:s", strtotime('-300 minutes', time()));$UserName = $_SESSION['UserName'];//echo $UserName ;//$UserName = 'wld';$sql = "select * from user_device where UserName='".$UserName."' and UseFlag=1";$result_set = mysql_query($sql);$snstr=0;$longstr=0;$lastr=0;$statusstr=0;    while($row=mysql_fetch_array($result_set)){            $sql = "select * from device where  SN='".$row['SN']."'";            $res = mysql_query($sql);            $result=mysql_fetch_assoc($res);        /////////////////////////在線監測/////////////////////          $sql_queryt="SELECT * FROM device_online_list WHERE SN='".$SN."'  order by Time desc limit 1";        $result_sett=mysql_query($sql_queryt);        $resultt=mysql_fetch_assoc($result_sett);        if($result_sett)        {               if(strtotime($startTime)<strtotime($resultt['Time']))            {                       $runstr=1;            }            else $runstr=0;        }else $runstr=0;    ///////////////////////////////////////////////////////            if($snstr){            $snstr=$snstr.'_';            $snstr=$snstr.$row['SN'];            $longstr=$longstr.'_';            $longstr=$longstr.$result[Longtitude];            $lastr=$lastr.'_';            $lastr=$lastr.$result[Latitude];            $statusstr=$statusstr.'_';            $statusstr=$statusstr.$runstr;            }else{                $snstr=$row['SN'];                $longstr=$result[Longtitude];                $lastr=$result[Latitude];                $statusstr=$runstr;            }    }$resultJson = array("SNstr"=>$snstr, "Long"=>$longstr, "La"=>$lastr,"Status"=>$statusstr);//json格式的數組echo urldecode(json_encode($resultJson));//Json格式輸出 */?>

前端:前端的主要功能是,通過調用百度地圖api,顯示一張地圖,并將通過js(ajax)從后臺獲取的經緯度信息作為位置參數填入地圖描點函數里,實現在地圖上顯示某個點的功能(當然,我的代碼里從后臺獲取的信息并不只有經緯度,但因為是一個地圖程序,關注焦點主要在經緯度上,所以闡述過程中只提經緯度,忽略其他信息);

//下面是前端代碼:<!DOCTYPE html><html lang="en"><head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">    <title>設備地圖</title>   <style type="text/css">        body, html{width: 100%;height: 100%;margin:0;font-family:"微軟雅黑";}        #dev_map{height:500px;width:100%;}    </style>     <script type="text/javascript" src="jquery-1.12.1.js"></script>     <script type="text/javascript" src="http://api.map.baidu.com/api?&v=1.3"></script></head><body><p class="dev_map" id="dev_map"></p><!-- <p><button type="button" onclick="theLocation()">設備地圖</button></p> --></body></html><script>var map = new BMap.Map("dev_map");    // 創建Map實例map.centerAndZoom(new BMap.Point(114.317, 30.594), 5);  // 初始化地圖,設置中心點坐標和地圖級別//添加地圖類型控件map.addControl(new BMap.MapTypeControl({    mapTypes:[        BMAP_NORMAL_MAP,        BMAP_HYBRID_MAP    ]}));     map.setCurrentCity("武漢");          // 設置地圖顯示的城市 此項是必須設置的map.enableScrollWheelZoom(true);     //開啟鼠標滾輪縮放var arr_longitude = new Array();var arr_latitude = new Array();var arr_sn = new Array();var arr_status = new Array();var arr_point = new Array();var mapSpots = new Array;var url = "http://image.tupian114.com/20140419/09274112.png";var content;var myIcon = new BMap.Icon(url, new BMap.Size(40,30));var opts = {                width : 180,     // 信息窗口寬度                height: 180,     // 信息窗口高度                title : "信息窗口" , // 信息窗口標題                enableMessage:true//設置允許信息窗發送短息               };// //獲取經緯度    $(function()  {    $.ajax({                url: "mysql.search.handle.php",                type: "GET",                dataType:"json",                async:false,                success:function(data)                {   //alert(data.Long.split("_").length);                    for(var i=0;i<data.Long.split("_").length;i++)                    {                        arr_longitude[i]=data.Long.split("_")[i];                        arr_latitude[i] = data.La.split("_")[i];                        arr_sn[i] = data.SNstr.split("_")[i];                        arr_status[i] = data.Status.split("_")[i];                        arr_point[i] = new BMap.Point(arr_longitude[i],arr_latitude[i]);                    //  marker = new BMap.Marker(arr_point[i]);                    //  map.addOverlay(marker);                    }                    addSpots(data.Long.split("_").length);                }                }); }); function addSpots(arr_length){ alert("您有"+arr_length+"臺設備!");     for(var i=0;i<arr_length;i++)         {            content = "";            content = "<p><span>SN碼:" + arr_sn[i] + "</span></br>" +                             "<span>設備狀態:" + translateOnline(arr_status[i]) + "</span></br>" +                             "<p class='btn'><a href='../DevAlarm/DevAla.html?SN=" + arr_sn[i] + "' target='fname'"                             + "'>報警配置</a></p>" +"<p class='btn'><a href='../DevAlarmView/DevAlarmView.html?SN=" + arr_sn[i] + "' target='fname'"                             + "'>報警信息</a></p>"+"<p class='btn'><a href='../DevRun/DevRun.html?SN=" + arr_sn[i] + "' target='fname'"                             + "'>實時數據</a></p>"+"<p class='btn'><a href='../history/history.html?SN=" + arr_sn[i] + "' target='fname'"                             + "'>歷史數據</a></p>"+"<p class='btn'><a href='../DevCfg/DevCfg.html?SN=" + arr_sn[i] + "' target='fname'"                             + "'>數據可視與報警開關配置</a></p>";            marker = new BMap.Marker(arr_point[i]);            map.addOverlay(marker);            //var lable =  new BMap.Label(content,{offset:new BMap.Size(20,-10)});            //marker.setLabel(lable);            addClickHandler(content,marker); //添加點擊處理程序(點擊會出現sn碼等信息)         } }function addClickHandler(content,marker){    marker.addEventListener("click",function(e){        openInfo(content,e)}    );}function translateOnline(code){    if (code == 0) {return "離線";}    else if(code == 1) {return "在線";}    else{return "error";}}function openInfo(content,e){    var p = e.target;    var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);    var infoWindow = new BMap.InfoWindow(content,opts);  // 創建信息窗口對象     map.openInfoWindow(infoWindow,point); //開啟信息窗口}</script>

這里我們只關注js部分的代碼,在下面把這些關鍵代碼重新貼出來方便觀看:

var arr_longitude = new Array();var arr_latitude = new Array();var arr_sn = new Array();var arr_status = new Array();var arr_point = new Array();var mapSpots = new Array;var url = "http://image.tupian114.com/20140419/09274112.png";var content;var myIcon = new BMap.Icon(url, new BMap.Size(40,30));var opts = {                width : 180,     // 信息窗口寬度                height: 180,     // 信息窗口高度                title : "信息窗口" , // 信息窗口標題                enableMessage:true//設置允許信息窗發送短息               };// //獲取經緯度    $(function()  {    $.ajax({                url: "mysql.search.handle.php",                type: "GET",                dataType:"json",                async:false,                success:function(data)                {               //  alert(data.Status);//彈出接收到的數據,調試用            //  alert(data.La);//彈出接收到的數據,調試用            //  alert(data.SNstr);//彈出接收到的數據,調試用            //  alert(data.Long.split("_").length);//split是實現從一串用特定符號來連接的字符串中一次提取有用字符的功能(如me_you_he 用‘_’連接,用split可實現對me、you、he進行提取)                    var longstring=data.Long+'';                    var lastring=data.La+'';                    var SNstring=data.SNstr+'';                    var Statusstring=data.Status+'';                    for(var i=0;i < longstring.split("_").length;i++)                    {                        arr_longitude[i]=longstring.split("_")[i];                        arr_latitude[i] = lastring.split("_")[i];                        arr_sn[i] = SNstring.split("_")[i];                        arr_status[i] = Statusstring.split("_")[i];                    //  alert("設備狀態"+arr_status[i]);                        arr_point[i] = new BMap.Point(arr_longitude[i],arr_latitude[i]);                        marker = new BMap.Marker(arr_point[i]);                        map.addOverlay(marker);                    }                    addSpots(longstring.split("_").length);                } ,                error: function(XMLHttpRequest, textStatus, errorThrown) {//這個error函數調試時非常有用,如果解析不正確,將會彈出錯誤框                alert(XMLHttpRequest.responseText);                     alert(XMLHttpRequest.status);                    alert(XMLHttpRequest.readyState);                    alert(textStatus); // parser error;                }                }); });

在最初寫代碼過程中,后臺因為調試程序的需要,在程序中echo了很多調試信息,如圖:

這里寫圖片描述

,但是這些信息并不是json格式的,當這些非json格式的信息被echo后,會被前臺接收到。但前臺的ajax是指定以json格式接收的,所以當接收到非json格式的文件后,ajax程序不會進入success里執行,而是進入error里彈出錯誤信息,同時,瀏覽器會根據種類不同彈出諸如:
XML錯誤:找不到根目錄(火狐firefox)、flie could not be load :……(谷歌chrome)等錯誤。


經驗教訓:當后臺通過json格式輸出數據以供前臺get時,切記,除了echo輸出有用數據時,不可用echo輸出其他一切無用數據,否則會造成前臺數據接收格式出錯。


以上為本人做項目過程中的一點小經驗,如有謬誤,請批評指正!、

相關推薦:

基于php中echo用逗號和用點號的區別詳解

php輸出一個或多個字符串函數echo

php 中echo和print的區別你知道嗎?

以上就是PHP中echo語句濫用詳解的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人极品视频| 最近2019好看的中文字幕免费| 茄子视频成人在线| 国产成人亚洲综合91| 亚洲欧美日韩国产精品| 欧美性猛交xxxx乱大交3| 亚洲最大福利视频网站| 国产91ⅴ在线精品免费观看| 九九热99久久久国产盗摄| 粗暴蹂躏中文一区二区三区| 狠狠色狠狠色综合日日小说| 欧美一区深夜视频| 最近2019免费中文字幕视频三| 九九热在线精品视频| 78m国产成人精品视频| 国产精品高潮呻吟久久av黑人| 久久在线视频在线| 国产视频精品xxxx| 国产精品91在线| 91成人免费观看网站| 亚洲精品久久久久久久久久久久久| 亚洲精品国产电影| 色综合视频一区中文字幕| 一本一本久久a久久精品综合小说| 国产成人一区二区三区小说| 亚洲午夜女主播在线直播| 亚洲综合色激情五月| 欧美性受xxxx白人性爽| 国产中文日韩欧美| 中文字幕一精品亚洲无线一区| 欧美黑人xxxⅹ高潮交| 日韩美女视频免费在线观看| 亚洲一区免费网站| 久久福利视频网| 色悠久久久久综合先锋影音下载| 日韩精品小视频| 国产91亚洲精品| 日韩中文字幕视频在线观看| 日韩大片免费观看视频播放| 一本色道久久综合狠狠躁篇的优点| 欧美精品videos另类日本| 久久久久久久一区二区| 亚洲欧美日韩综合| 精品亚洲国产成av人片传媒| 国产国语刺激对白av不卡| 国产97在线观看| 欧美激情亚洲视频| 久久久噜久噜久久综合| 久久91亚洲精品中文字幕奶水| 国产精品欧美一区二区三区奶水| 在线亚洲男人天堂| 国产欧美日韩中文| 欧美日韩一区免费| 国产成人jvid在线播放| 4444欧美成人kkkk| 欧美成在线观看| 在线亚洲欧美视频| 97人洗澡人人免费公开视频碰碰碰| 午夜精品国产精品大乳美女| 日韩av在线免费观看一区| 国内精品久久久| 亚洲精品动漫100p| 亚洲国产成人精品久久久国产成人一区| 亚洲美女av在线| 久久理论片午夜琪琪电影网| 国产一区二区三区三区在线观看| 亚洲成年网站在线观看| 日韩av在线一区| 在线一区二区日韩| 日韩美女免费观看| 久久91超碰青草是什么| 日韩av最新在线观看| 久久亚洲影音av资源网| 亚洲成人精品av| 国产精品一区二区三| 欧美在线国产精品| 视频在线观看一区二区| 9.1国产丝袜在线观看| 91系列在线播放| 亚洲毛片在线免费观看| 一区三区二区视频| 45www国产精品网站| 97香蕉超级碰碰久久免费的优势| 亚洲精品suv精品一区二区| 68精品国产免费久久久久久婷婷| 久热精品视频在线| 国产成人a亚洲精品| 91精品国产91久久久久久久久| 国产99久久精品一区二区永久免费| 亚洲欧美一区二区三区久久| 国内精品一区二区三区| 91美女福利视频高清| 国产成人av网址| 欧美成人sm免费视频| 色小说视频一区| 中文字幕亚洲专区| 国产精品扒开腿做| 欧美精品在线网站| 亚洲成人精品久久| 国产视频亚洲视频| 日韩在线观看免费高清| 成人精品视频久久久久| 国产精品久久久久久久久久久新郎| 精品视频偷偷看在线观看| 亚洲高清一二三区| 国模极品一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 欧美精品日韩www.p站| 国产精品免费视频xxxx| 亚洲精品久久久久久久久| 欧美限制级电影在线观看| 啪一啪鲁一鲁2019在线视频| 色狠狠av一区二区三区香蕉蜜桃| 92福利视频午夜1000合集在线观看| 欧美日韩在线一区| 精品国内产的精品视频在线观看| 国产精品成人播放| 国产成人+综合亚洲+天堂| 97福利一区二区| 蜜臀久久99精品久久久无需会员| 久久亚洲一区二区三区四区五区高| 久久久女人电视剧免费播放下载| 亚洲免费高清视频| 欧美日韩免费区域视频在线观看| 日韩一区二区久久久| 精品视频久久久| 在线观看精品自拍私拍| 日韩av免费看网站| 欧美在线亚洲一区| 欧美成人精品影院| 精品亚洲永久免费精品| 欧美人在线观看| 91香蕉亚洲精品| 91夜夜未满十八勿入爽爽影院| 91精品国产综合久久香蕉的用户体验| 欧美黑人性猛交| 一本大道久久加勒比香蕉| 国产精品一区二区电影| 欧美精品18videos性欧美| 热久久免费视频精品| 成人黄色片网站| 亚洲裸体xxxx| 国内精品模特av私拍在线观看| 亚洲一区免费网站| 亚洲老头老太hd| 青青久久av北条麻妃黑人| 日韩在线观看你懂的| 久久精品久久久久电影| 97色在线视频| 成人在线免费观看视视频| 性夜试看影院91社区| 久久久久久久国产| 欧美色播在线播放| 欧美视频在线观看 亚洲欧| 精品国偷自产在线视频| 欧美日韩国产精品一区| 在线观看亚洲区| 黄网站色欧美视频| 欧美日韩在线第一页| 九九热视频这里只有精品| 日本精品一区二区三区在线播放视频| 日韩精品极品在线观看| 成人福利在线视频| 亚洲一区av在线播放|