㈠ 怎么用php读取数据库方式动态生成省市县三级联动选择框
需要使用到ajax。到网上查下,一堆。代码是固定的。
数据库设置
id,area,areaname
1 210000 辽宁省
2 210100 沈阳市
3 210104 大东区
<select name='area1' id='area1' onchange="get_area2(this.value);">
这里读取省的数据
$sql="select area,areaname from area where right(area,4)='0000'";
</select>
<select name='area2' id='area2 'onchange="get_area(this.value);">
这里根据ajax读取数据,开始的时候是空的
</select>
<select name='area' id='area'>
这里根据ajax读取数据,开始的时候是空的
</select>
方法:
1,首先写get_area2 的js 代码,这里就用到ajax读取,这里获取的数据是区域代码的前两位代码(比如:21)
这个在根据这个21的参数,读取表中相关的市,
$sql="select area,areaname from area where left(area,2)='21' and right(area,2)='00'";
这个语句读取出来21的市代码
2,同一读取出来区的代码
㈡ 省市区联动js获取三个参数
alert($("#loc_province").val()+":"+$("#loc_city").val()+":"+$("#loc_town").val());
㈢ 我们在程序中经常用到 全国省市县三级联动 选择地址,那样的话 保存到数据库中是一个字段还是三个字段
看你要不要做统计汇总之类的..
如果只是填个资料,1个字段就行了,省市县用#,$,&这些特殊符号隔开..
如果后期要做归纳,搜索这样的功能,那还是分3个字段
㈣ 省市区三级联动如何解决代码初始化赋值不被覆盖的问题
省市区三级联动解决代码初始化赋值不被覆盖的问题,可能是因为是的事情,本机去的只是想你们的事。
㈤ 省市区,三级联动,修改的时候,怎样,获取相应的值
前端AJAX联动方式
前端可以传一个唯一值到后台,异步获取相对应的下级的数据。
㈥ 如何实现省市区三级联动的效果
1、在做这个小项目前的准备工作:
1.1、分析:
由于省、市、县城(区)这些数据是存储到了MySQL数据库中的,我们要通过后台servlet获取数据库中的数据,然后再通过转发或者重定向的方式将数据呈现到前台页面中。
1.2、需要导入的jar包有:
mysql驱动包:mysql-connector-Java-5.1.7-bin.jar
c3p0数据库连接池:c3p0-0.9.2.1.jar、mysql-connector-java-5.1.7-bin.jar(c3p0依赖包)
前台c标签(需要通过遍历的方式呈现——c:forEach):jstl-1.0.2.jar、standard-1.0.1.jar(jstl依赖包)
将集合或者数组转换成json数据格式(Jackson包):jackson-annotations-2.2.1.jar、jackson-core-2.2.1.jar、jackson-databind-2.2.1.jar
前台页面需要用到jQuery,故还需要导入jquery-1.7.2.js库文件
1.3、该小项目用到的技术:
jdbc的知识、servlet的知识、jquery的知识、Ajax的知识(局部刷新)、标签的知识、EL表达式的知识、JSP的知识
2、开发过程:
2.1、准备数据源
创建一个数据库,命名为thereaction并创建三个表——province(省)、city(市)、county(县/区)
2.2后台开发
创建三个Javabean分别是Province、City、County。(由于太过简单,这里就不粘代码了)
创建Java类和c3p0连接池实现与数据库的连接:DAO.java(实现获取数据库数据的功能)、jdbctools.java(实现获取数据库连接、释放连接的功能)、c3p0-config.xml
jdbctools.java代码如下:
[java] view plain
package com.xiaojie.;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class Jdbctools {
private static DataSource ds=null;
//数据库连接池应只被初始化一次
static{
ds=new ComboPooledDataSource("helloc3p0");
}
//获取数据库连接
public static Connection getConnection() throws ClassNotFoundException, SQLException, IOException{
return ds.getConnection();
}
public static void shifanglianjie(Connection ct, PreparedStatement ps,ResultSet rs) {
if(rs!=null){
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(ct!=null){
try {
ct.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
DAO.java的代码如下
[java] view plain
package com.xiaojie.;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;
public class DAO {
public List<Province> getprovince(String sql ,Object...args) throws ClassNotFoundException, SQLException, IOException{
List<Province> provinces=new ArrayList<Province>();
//准备去查数据库
Connection ct=null;
ct=Jdbctools.getConnection();
System.out.println("获取到数据库的连接了");
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
provinces.add(new Province(rs.getInt("province_id"),rs.getString("province_name")));
}
Jdbctools.shifanglianjie(ct, ps, rs);
return provinces;
}
public List<City> getcity(String sql ,Object...args) throws SQLException, ClassNotFoundException, IOException{
List<City> cities=new ArrayList<City>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
cities.add(new City(rs.getInt("city_id"),rs.getString("city_name")));
}
jt.shifanglianjie(ct, ps, rs);
return cities;
}
public List<County> getcounty(String sql,Object...args ) throws SQLException, ClassNotFoundException, IOException{
List<County> counties=new ArrayList<County>();
//准备去查数据库
Jdbctools jt=new Jdbctools();
Connection ct=null;
ct=jt.getConnection();
PreparedStatement ps=null;
ResultSet rs=null;
ps=ct.prepareStatement(sql);
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
rs=ps.executeQuery();
while(rs.next()){
counties.add(new County(rs.getInt("county_id"),rs.getString("county_name")));
}
jt.shifanglianjie(ct, ps, rs);
return counties;
}
}
c3p0-config.xml的代码如下:
[html] view plain
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<named-config name="helloc3p0">
<!-- 连接数据源的基本属性 -->
<property name="user">root</property>
<property name="password"></property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///thereaction</property>
<!-- 若数据库中连接数不足时,一次向数据库服务器申请多少个连接 -->
<property name="acquireIncrement">5</property>
<!-- 初始化数据库连接池时连接的数量 -->
<property name="initialPoolSize">5</property>
<!-- 数据库连接池中的最小的数据库连接数 -->
<property name="minPoolSize">5</property>
<!-- 数据库连接池中的最大的数据库连接数 -->
<property name="maxPoolSize">10</property>
<!-- c3p0数据库连接可以维护的statement的个数 -->
<property name="maxStatements">20</property>
<!-- 每个连接同时可以使用的statement对象的个数 -->
<property name="maxStatementsPerConnection">5</property>
</named-config>
</c3p0-config>
创建servlet.java 文件
[java] view plain
package com.xiaojie.servlet;
import java.io.IOException;
import java.lang.reflect.Method;
import java.sql.SQLException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojie.beans.City;
import com.xiaojie.beans.County;
import com.xiaojie.beans.Province;
import com.xiaojie..DAO;
/**
* Servlet implementation class ThreeactiondServlet
*/
@WebServlet("/threeactiondServlet")
public class ThreeactiondServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String methodname=request.getParameter("method");
try {
Method method=getClass().getDeclaredMethod(methodname,HttpServletRequest.class,HttpServletResponse.class);
method.invoke(this, request,response);//调用各自的方法
} catch (Exception e) {
e.printStackTrace();
}
}
private DAO =new DAO();
protected void province(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("province的servlet进入了");
String sql="select province_id,province_name from province";
List<Province> provinces=.getprovince(sql);
request.setAttribute("provinces", provinces);
System.out.println(provinces);
//注意:这里不能用重定向的形式,因为我们好不容易在request请求域中存储了省的信息,目的是在前台页面中能够从请求域中获取到我们存在数据库中的值
//故这里只能用转发的方式
request.getRequestDispatcher("/index2.jsp").forward(request, response);
}
protected void city(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("city的servlet进入了");
String province_id=request.getParameter("province_id");
String sql="select city_id,city_name from city where province_id=?";
List<City> cities=.getcity(sql,Integer.parseInt(province_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(cities);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
protected void county(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, ClassNotFoundException, SQLException {
System.out.println("county的servlet进入了");
String city_id=request.getParameter("city_id");
String sql="select county_id,county_name from county where city_id=?";
List<County> counties=.getcounty(sql,Integer.parseInt(city_id));
ObjectMapper mapper=new ObjectMapper();
String result=mapper.writeValueAsString(counties);
System.out.println(result);
response.setContentType("text/javascript");
response.getWriter().print(result);
}
}
㈦ 省市区三级联动,怎么固定省份
<option value="0">--选择省份--</option>
<option value="scs">--四川省--</option>
㈧ 如何用js实现省市区之间的三级联动
页面中获取值并判断的js如下:
<script type="text/javascript">
//这个函数是必须的,版因为在area.js里每次更改地址权时会调用此函数
function promptinfo()
{
var address = document.getElementById('address');
var s1 = document.getElementById('s1');
var s2 = document.getElementById('s2');
var town1 = document.getElementById('town1');
㈨ 添加省市区三级联动程序复杂吗
一点都不麻烦,excel都能轻松搞定
㈩ 我想做个省市县三级联动菜单,里面每一个选项都有相应的链接网页(介绍各县情况),该怎么办呢本人菜鸟
其实网上都有你需要的,你可以先拿来看,他的全国的省市县的信息都有的 你照着做,加上网站链接就好了