關于在smarty中實現省市區三級聯動

剛開始接觸php,,其實對于一些比較深入的東西還不是很了解,就像是這次的省市區聯動,都是用三張表為基礎編碼的,原諒我的無知,謝謝。

接下來就是編碼部分了:

<?php
require('./smarty/Smarty.class.php');
date_default_timezone_set("PRC");
$conn = mysql_connect("localhost","root","123456");
mysql_select_db("dbcity");
mysql_query("set names utf8");$sql = " select pid,pname  from province";
$result = mysql_query($sql,$conn);
while ($rs = mysql_fetch_assoc($result)){  $list[] = array("pid" => $rs["pid"],"pname" => $rs["pname"]);
}$sql2 = "select cid,cname from city where pid={$list[0]['pid']}";
$result2 = mysql_query($sql2,$conn);
while($rs2 = mysql_fetch_assoc($result2)){$list2[] = array("cname" => $rs2["cname"],"cid" =>$rs2["cid"]);
}$sql3 = "select xname,xid from xian where cid={$list2[0]['cid']}";
$result3 = mysql_query($sql3,$conn);
while($rs3 = mysql_fetch_assoc($result3)){$list3[] = array("xname" => $rs3["xname"]);
}$smarty = new Smarty();
$smarty->left_delimiter='<{';//左邊界符
$smarty->right_delimiter='}>';//右邊界符
$smarty ->assign("content",$list);
$smarty ->assign("name",$list2);
$smarty ->assign("xian",$list3);
$smarty ->display("show.html");?>

以上是為了從數據庫中把所有的先加載出來,主要就是用到smarty,數組。其他的都沒有什么可以深究的了,可以看到上面代碼的最后一句話就是為了跳轉到smarty的模板頁面show.html

接下來我們來共同看一下模板頁面的書寫代碼:

 1 <!DOCTYPE html>2 <html>3 <head>4 <meta charset="UTF-8">5 <title>省市級聯</title>6 <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>7 <script type="text/javascript">8 $(function(){9     $("#province").change(function() {   
10         var province = $("#province").val(); 
11         alert(province);
12         $.ajax({
13             url: 'display.php',
14             type: 'GET',
15             data: {'category':'city', city:province},
16             dataType:'json',
17             success: function(data){
18                 var content = '';
19                 for (var i in data) {    
20                     content += '<option value='+data[i].cid+'>'+data[i].cname+'</option>';
21                 }
22                 $('#city').html(content);
23             }
24         });  //  'abc."$age".def'
25     });
26     $("#city").change(function(){
27         var city = $("#city").val();
28         alert(city);
29         $.ajax({
30             url:'assign.php',
31             type:'GET',
32             data:{'category':'xian',xian:city},
33             dataType:'json',
34             success:function(data){
35                 var content = '';
36                 for(var i in data){
37                     content +='<option>'+data[i].xname+'</option>';
38                 }
39                 $('#xian').html(content);
40             }
41         })
42     })
43 })
44 </script>
45 </head>
46 <body>
47   選擇省份:<select name="province" id="province" style="width:100px;" οnclick="click" >
48   <{foreach from=$content key=k item=value}> 
49        <option value="<{$value.pid}>"><{$value.pname}></option> 
50   <{/foreach}>
51   </select>  <br/>
52   選擇城市:<select name="city" id="city" style="width:100px;">
53    
54   <{foreach from=$name  item=value2}> 
55        <option value="<{$value2.cid}>"><{$value2.cname}></option>
56   <{/foreach}>    
57   </select><br/>
58     選擇縣城:<select name="xian" id="xian" style="width:100px;">
59    
60   <{foreach from=$xian  item=value3}> 
61        <option><{$value3.xname}></option>
62   <{/foreach}>    
63   </select><br/>
64 </body>
65 </html>

這里的命名不是規范,希望不要誤導大家,,大家在自己編寫代碼的時候還是要注意自己的編碼規范的。首先,我們可以看到“選擇省份”的select標簽,這里我們就是根據index.php頁面傳過來的數組利用foreach進行循環遍歷,遍歷出省份的id,省份名稱。在這里,省份的id是必不可少的,因為它牽扯到接下來select的change事件,所以一定要注意這個地方。接下來就是異步提交的ajax事件了,我們根據之前給select的id叫做province來做他的change事件,這里ajax大家就要自己對ajax進行學習了,其實,在php里面使用smarty模板引擎是為了將后臺代碼與前臺展示代碼分離開來,但是這里為了大家能夠看得仔細,所以將JavaScript代碼放在頁面里了,最好是在項目里面寫一個JavaScript腳本然后進行導入,有利于頁面的整潔,我們先看省份的ajax代碼,我們在它的url屬性里面讓它進入到display.php頁面,

so,接下來就是display頁面的代碼了

 1 <?php2 date_default_timezone_set("PRC");3 $conn = mysql_connect("localhost","root","123456");4 mysql_select_db("dbcity");5 mysql_query("set names utf8");6 if($_GET['category']){          7    if($_GET["category"] != "") {8    //根據省份得到城市9    $sql = "select cid,cname from city where pid=".$_GET['city'];
10    $result = mysql_query($sql,$conn);
11    if (mysql_num_rows($result) > 0) {
12    while ($row = mysql_fetch_assoc($result)) {
13         $str[] = array("cid"=>$row["cid"],"cname"=>($row["cname"]));
14    }
15    //var_dump($str);
16    echo (json_encode($str));
17    }
18    mysql_free_result($result);
19   }
20 }
21 
22 
23 ?>

在這里,我們使用GET方法獲取之前ajax傳過來的參數,獲取點擊省份時候的id,根據這個id來獲取這個省份下面的城市。當然了,之后的城市下面的區我們就顯而易見了,但是特別要注意的是要把城市的select標簽的value值獲取獲取出來,以便查詢它所管轄的區。

assign.php代碼如下

 1 <?php2 date_default_timezone_set("PRC");3 $conn = mysql_connect("localhost","root","123456");4 mysql_select_db("dbcity");5 mysql_query("set names utf8");6 if($_GET['category']){7     if($_GET["category"] != "") {8         //根據省份得到城市9         $sql = "select xid,xname from xian where cid=".$_GET['xian'];
10         $result = mysql_query($sql,$conn);
11         if (mysql_num_rows($result) > 0) {
12             while ($row = mysql_fetch_assoc($result)) {
13                 $str[] = array("id"=>$row["xid"],"xname"=>($row["xname"]));
14             }
15             //var_dump($str);
16             echo (json_encode($str));
17         }
18         mysql_free_result($result);
19     }
20 }
21 ?>

希望我的提示能夠對你有所幫助,謝謝!

轉載于:https://www.cnblogs.com/chengzhi59/p/7146771.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/455217.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455217.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455217.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ubuntu GitLab CI Docker ASP.NET Core 2.0 自動化發布和部署(1)

相關博文&#xff1a; Ubuntu 簡單安裝和配置 GitLabUbuntu 簡單安裝 DockerUbuntu Docker 簡單安裝 GitLabUbuntu Docker 安裝和配置 GitLab CI 持續集成服務器版本 Ubuntu 16.04 LTS。 經過上面四篇博文中的相關安裝和配置&#xff0c;我們主要完成了兩個容器的創建和運行&am…

X264學習筆記(1)

X264學習筆記&#xff08;1&#xff09; X264編碼流程 參數的初始化 1.opt&#xff0c;param根據輸入的參數和標準的規定&#xff0c;進行初始化設置。 Opt的說明如下&#xff1a; Opt->hin用于給出讀入的yuv文件的指針地址 Opt->hout給出了輸出的文件的指針地址 Opt->…

python 數字轉化excel行列_Python實現excel的列名稱轉數字、26進制(A-Z)與10進制互相轉換...

Python實現excel的列名稱轉數字、26進制(A-Z)與10進制互相轉換sequence list( map( lambda x: chr( x ), range( ord( A ), ord( Z ) 1 ) ) )##-----字母轉數字(python實現 1-26A-Z, then AA-AZ)def ten2TwentySix(num):L []numnum-1; #實現從1對應Aif num > 25:while Tr…

錯誤提示:'……' is not assignable to Android.app.Activity Manifest XML

1 問題描述&#xff1a; 針對這段代碼&#xff1a; <activity android:name".fragament.fragment_bulter" /> <activity android:name".fragament.fragment_girl" /> <activity android:name".fragament.fragment_user" />…

關于Lambda和匿名內部類

先上代碼&#xff1a; //gcache(f)public <T,R> Function<T,R> cache(Function<T,R> f){final Map<T,R> cachenew HashMap<>();Function<T,R> gt->{if(cache.containsKey(t)){System.out.println("cached t:"t);return cache…

H26L encoder.cfg參數分析

H264 encoder.cfg參數分析 收藏 (1) 文件操作參數:#Files InputFile "silent.yuv" #輸入序列,YUV 4:2:0 StartFrame 0 # 從視頻流的第幾幀開始編碼 FramesToBeEncoded 30 #編碼圖象幀數,指明了除去 B幀后將要被編碼的幀數(應該再實驗一下&#x…

django-ckeditor表情包修改

一、版本 Django1.11django-ckeditor5.2.2 二、關鍵步驟 1.刪除舊的ckeditor靜態文件 所在目錄&#xff1a;項目目錄下的static文件夾下的ckditor文件夾 rm ckeditor -rf 原因&#xff1a;在安裝ckeditor后需要執行collectstatic命令&#xff0c;這個過程中的查找靜態文件會去…

python中最難的是什么_python什么的最難了

學的人很少的,如果你沒有學過編程,建議學c語言.因為python中文資料很少的.你可以先了解一下phthonpython的歷史python的創始人為guido van rossum。1989年圣誕節期間&#xff0c;在阿姆斯特丹&#xff0c;guido為了打發圣誕節的無趣&#xff0c;決心開發一個新的腳本解釋程序&a…

Python3生成腳本實現重置鍵盤鍵位

個人博客點這里 #!/usr/bin/env python # -*- coding:utf-8 -*- # Created by 秋葉夏風# 本模塊的功能:<重置鍵盤鍵位>import sys import ossave_format "bat" # 這個值可以修改&#xff0c;有兩個選項(bat和reg)&#xff0c;可選擇生成bat批處理文件或者re…

《Java核心技術 卷Ⅱ 高級特性(原書第10版)》一2.2.2 如何讀入文本輸入

2.2.2 如何讀入文本輸入 最簡單的處理任意文本的方式就是使用在卷Ⅰ中我們廣泛使用的Scanner類。我們可以從任何輸入流中構建Scanner對象。或者&#xff0c;我們也可以將短小的文本文件像下面這樣讀入到一個字符串中&#xff1a; 在早期的Java版本中&#xff0c;處理文本輸入的…

leetcode add Two Numbers

部分 conditional operators ?:寫的statements 在有的編譯器下能通過&#xff0c;有的可能通不過 base operand of -> has non-pointer type ListNode轉載于:https://www.cnblogs.com/liyongguo/p/7152365.html

amap不同樣式marker點_想出一手漂亮的圖,CAD打印樣式表你必須會!

好課推薦&#xff1a;1.CAD2014&#xff1a;點擊查看2.室內CAD&#xff1a;點擊查看3.CAD2019&#xff1a;點擊查看4.CAD2018&#xff1a;點擊查看5.【bim】revit&#xff1a;點擊查看6.室內手繪&#xff1a;點擊查看7.CAD三維&#xff1a;點擊查看8.全屋定制&#xff1a;點擊查…

JM8.5中的7種宏塊模式問題

JM8.5中的7種宏塊模式問題 收藏 Outline: 1、 CFG文件中有關可變尺寸宏塊模式的相關選項2、 7種宏塊模式對應的數值常量3、 7種宏塊模式被分成宏塊和亞宏塊4、 如何對宏塊和亞宏塊的運動估計&#xff0c;采用一個共同的函數來處理5、 遺留問題1、CFG文件中有關可變尺寸宏塊…

python高級編程技巧

個人博客點這里 如何在列表,字典,集合中根據條件篩選數據 方法1:通過迭代來進行判斷篩選 解決方案 函數式編程: 如何統計序列中元素的出現頻度 解決方案:使用collections.Counter對象 將序列傳入Counter的構造器,得到Counter對象是元素頻度的字典 Counter.most_common(n)…

2016年安全身份識別主流趨勢

安全身份識別解決方案商HID Global通過從不同行業市場的重要客戶那里所獲得的深刻洞察&#xff0c;以及公司最新解決方案在前瞻性合作伙伴和全球各地的終端用戶中進行的試點項目與正式部署情況&#xff0c;確定了2016年最值得業界關注的安全趨勢。HID Global 廣闊的行業視角&am…

列出一個目錄中所有文件及大小

package com.test.tree;import java.io.File;/*** 列出一個目錄中所有的文件和他們的大小* author wyl**/ public class FileList {public void list(File f){ //文件根目錄&#xff0c;深度為0list(f,0);}/*** * param f* param depth 為了顯示文件的層級形式*/public void li…

多媒體音頻格式解析WMA WAV OGG AAC APE FLAC

無論是MP3還是MP4&#xff0c;甚至手機和多媒體DC&#xff0c;產品所支持的各種格式往往讓人眼花繚亂。特別是對于剛上手的新手玩家來說&#xff0c;各種格式都有哪些特性&#xff0c;在實際 使用當中有多少格式實用或者必須&#xff0c;其實有很多方面需要我們來系統的了解。這…

數據分析之pandas筆記

Pandas 一個用于表示表格類型的內容 課時4&#xff1a;jupyter21 分22 秒課時5&#xff1a;pandas的內容24 分31 秒課時6&#xff1a;series內容38 分19 秒課時7&#xff1a;dataframe25 分50 秒 # 載入pandas庫 import pandas as pd import numpy as nps pd.Series([2,4,6…

Apache日志記錄組件Log4j出現反序列化漏洞 黑客可以執行任意代碼 所有2.x版本均受影響...

開源的東西用的人多了&#xff0c;自然漏洞就多。Apache用于日志記錄的組件Log4j使用非常靈活&#xff0c;在相當多的開源項目中都有使用&#xff0c;此次漏洞影響所有Apache Log4j 2.*系列版本&#xff1a; Apache Log4j 2.0-alpha1 – Apache Log4j 2.8.1&#xff0c;使用Jav…

react接收后端文件_React獲取Java后臺文件流并下載Excel文件流程解析

記錄使用blob對象接收java后臺文件流并下載為xlsx格式的詳細過程&#xff0c;關鍵部分代碼如下。首先在java后臺中設置response中的參數&#xff1a;public void exportExcel(HttpServletResponse response, String fileName, String sheetName,List titleRow, List> dataRo…