包含ajaxphpmysql的詞條

本文目錄一覽:

PHP + ajax + Mysql的原理是怎麼樣的?

AJAX就是一種網頁和後台服務器交流的協議,一個簡單的AJAX發送代碼

$.post{

‘服務器的網址’,

‘{data:’這裡是要發送的數據’}’,

function( return ){}{

// return 是後台服務器接收到你網頁發的數據後返回的數據

}

}

PHP的echo輸出的結果就是返回網頁的return數據,格式是直接做返回值

PHP要返回數組就要用json封裝,代碼是 json_encde(數組);之後網頁接受的是json格式的字符串,要自己轉換為json數組。

php+mysql+ajax亂碼。。。

如果數據庫的字符集設置的是gb2312,其餘的編碼也需要是gb2312,

這個看起來像是最後一個php文件編碼不對造成的,

可以考慮直接請求一下最後一個php文件,看看返回是不是正確,

順便看一下返回的字符集是是什麼的,

最後能在指定對應的Html也是gb2312的。

php+Ajax+mysql 中文亂碼問題

把utf-8改成gb2312

數據庫中有文字的字段的編碼方式也改成中文的

就ok!

在php中用ajax如何操作mysql啊,求助啊。謝謝啦啊

1.靜態網頁文件index.html :

html

head

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″

title無標題文檔/title

script src=”selecttest.js”/script

/head

body

form

請選擇一個:

select name=”test” onChange=”showtest(this.value)”

option value=”a”test1/option

option value=”b “test2/option

option value=”c”test3/option

/select

/form

p

h2div id=”txtdisplay”b測試信息將在此處列出。/b/div/h2

/p

/body

/html

2.ajax文件 (selecttest.js腳本)

var xmlHttp

//start function showHint(str)

function showtest(str)

{

xmlHttp=GetXmlHttpObject();

if (xmlHttp==null)

{

alert (“您的瀏覽器不支持AJAX!”);

return;

}

var url=”gettest.php”;

url=url+”?q=”+str;

url=url+”sid=”+Math.random();

xmlHttp.onreadystatechange=stateChanged;

xmlHttp.open(“GET”,url,true);

xmlHttp.send(null);

}

/////////////////////////////////////////////////////////////////////////////////////////////////////

function stateChanged()

{

if (xmlHttp.readyState==4)

{

document.getElementById(“txtdisplay”).innerHTML=xmlHttp.responseText;

}

}

////////////////////////////創建xmlHttp對象的方法///////////////////////////////////////////////

function GetXmlHttpObject()

{

var xmlHttp=null;

try

{// Firefox, Opera 等

xmlHttp=new XMLHttpRequest();

}

catch (e)

{ // Internet Explorer

try

{

xmlHttp=new ActiveXObject(“Msxml2.XMLHTTP”);

}

catch (e)

{

xmlHttp=new ActiveXObject(“Microsoft.XMLHTTP”);

}

}

return xmlHttp;

}

3.後台處理文件gettest.php

?php

// HTTP/1.1

header(“Cache-Control: no-store, no-cache, must-revalidate”);

header(“Cache-Control: post-check=0, pre-check=0”, false);

// HTTP/1.0

header(“Pragma: no-cache”);

mysql_connect(“localhost”,”root”,”password”) or die(“連接失敗”);

mysql_select_db(ajax);

mysql_query(“set names gbk”);

$q = $_GET[‘q’];

$sql=”SELECT * FROM test WHERE testID='”.$q.”‘”;

//$sql=$sql. “‘”.$q.”‘”;

//echo $sql;

$result = mysql_query($sql);

//echo $result;

if($result)

{

echo (“table”);

while ($arr = mysql_fetch_array($result)){

$name = $arr[‘name’];

$value = $arr[‘value’];

echo (“trtdem” .$name. “/em/td”);

echo (“td” .$value. “/td/tr”);

}

echo (“/table”);

}

else

{

echo “對不起,沒有查找到!”;

}

?

以上三個文件可以放到同一文件夾里。

試試吧

關於php+mysql+ajax省市區三級聯動菜單,求幫助

基本思想就是:在JS動態創建select控件的option,通過Ajax獲取在PHP從SQL數據庫獲取的省市區信息,代碼有點長,但很多都是類似的,例如JS中省、市、區獲取方法類似,PHP中通過參數不同執行不同的select語句。

index.html代碼:

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”

“”

html xmlns=””

head

title省市區三級聯動/title

META http-equiv=Content-Type content=”text/html; charset=gb2312″

script src=”scripts/thumbnails.js” type=”text/javascript”/script

/head

thumbnails.js代碼:

window.onload = getProvince;

function createRequest() {//Ajax於PHP交互需要對象

  try {

    request = new XMLHttpRequest();//創建一個新的請求對象;

  } catch (tryMS) {

    try {

      request = new ActiveXObject(“Msxml2.XMLHTTP”);

    } catch (otherMS) {

      try {

        request = new ActiveXObject(“Microsoft.XMLHTTP”);

      } catch (failed) {

        request = null;

      }

    }

  }

  return request;

}

function sech(id) {//省市改變時觸發,select的onchange事件

    var aa = document.getElementById(id);

if(id==”sheng”){

      getCity(aa.value);//這裡aa.value為省的id

}

if(id==”shi”)

{

getCounty(aa.value);//這裡aa.value為市的id

}

}

function getProvince() {//獲取所有省

  request = createRequest();

  if (request == null) {

    alert(“Unable to create request”);

    return;

  }

  var url= “getDetails.php?ID=0”;//ID=0時傳遞至PHP時讓其獲取所有省

  request.open(“GET”, url, true);

  request.onreadystatechange = displayProvince; //設置回調函數

  request.send(null);    //發送請求

}

function getCity(id){//獲取省對應的市

  request = createRequest();

  if (request == null) {

    alert(“Unable to create request”);

    return;

  }

  var url= “getDetails.php?ID=” + escape(id);

  request.open(“GET”, url, true);

  request.onreadystatechange = displayCity;

  request.send(null);

}

function getCounty(id){//獲取市對應的區

  request = createRequest();

  if (request == null) {

    alert(“Unable to create request”);

    return;

  }

  var url= “getDetails.php?ID=” + escape(id);

  request.open(“GET”, url, true);

  request.onreadystatechange = displayCounty;

  request.send(null);

}

 

function displayProvince() {//將獲取的數據動態增加至select

  if (request.readyState == 4) {

    if (request.status == 200) {

  var a=new Array;

var b=request.responseText;//將PHP返回的數據賦值給b

 a=b.split(“,”);//通過”,”將這一數據保存在數組a中

  document.getElementById(“sheng”).length=1;

  var obj=document.getElementById(“sheng’);  

  for(i=0;i

      obj.options.add(new Option(a[i],i+1)); //動態生成OPTION加到select中,第一個參數為Text,第二個參數為Value值.

    }

  }

}

 

function displayCity() {//將獲取的數據動態增加至select

  if (request.readyState == 4) {

    if (request.status == 200) {

  var a=new Array;

var b=request.responseText;

 a=b.split(“,”);

  document.getElementById(“shi”).length=1;//重新選擇

  document.getElementById(“xian”).length=1;//重新選擇

if(document.getElementById(“sheng”).value!=”province”){

  var obj=document.getElementById(‘shi’);  

  for(i=0;i

      obj.options.add(new Option(a[i], document.getElementById(“sheng”).value*100+i+1)); //ocument.getElementById(“sheng”).value*100+i+1對應的是市的ID。

}

    }

  }

}

function displayCounty() {//將獲取的數據增加至select

  if (request.readyState == 4) {

    if (request.status == 200) {

  var a=new Array;

var b=request.responseText;

 a=b.split(“,”);

 document.getElementById(“xian”).length=1;

if(document.getElementById(“sheng”).value!=”province”document.getElementById(“shi”).value!=”city”){

  var obj=document.getElementById(‘xian’);  

  for(i=0;i

      obj.options.add(new Option(a[i],i+1001)); 

}

    }

  }

}

getDetails.php代碼:

?php

header(“Content-Type: text/html; charset=gb2312”);

$conn = new COM(“ADODB.Connection”) or die(“Cannot start ADO”);

$connstr = “Provider=SQLOLEDB;Persist Security Info=False;User ID=root;Password=123456;Initial Catalog=area;Data Source=localhost”;

 

if($_REQUEST[‘ID’]==0){//獲得省列表

$conn-Open($connstr); //建立數據庫連接

$sqlstr = “select name from Province”; //設置查詢字符串

$rs = $conn-Execute($sqlstr); //執行查詢獲得結果

$num_cols = $rs-Fields-Count(); //得到數據集列數

$Province=array();

$i=0;

while (!$rs-EOF) {

$Province[$i]=$rs-Fields[‘name’]-Value.”,”;

$rs-MoveNext();

$i++;

}

foreach($Province as $val)

echo $val;

$conn-Close();

$rs = null;

$conn = null;

}

if($_REQUEST[‘ID’]0$_REQUEST[‘ID’]35){//獲得省對應的市列表

$conn-Open($connstr); //建立數據庫連接

$sqlstr = “select name from City where cid=”.$_REQUEST[‘ID’]; //設置查詢字符串

$rs = $conn-Execute($sqlstr); //執行查詢獲得結果

$num_cols = $rs-Fields-Count(); //得到數據集列數

$City=array();

$i=0;

while (!$rs-EOF) {

$City[$i]=$rs-Fields[‘name’]-Value.”,”;

$rs-MoveNext();

$i++;

}

foreach($City as $val)

echo $val;

$conn-Close();

$rs = null;

$conn = null;

}

if($_REQUEST[‘ID’]100){//獲得省市對應的縣列表

$conn-Open($connstr); //建立數據庫連接

$sqlstr = “select name from County where cid=”.$_REQUEST[‘ID’]; //設置查詢字符串

$rs = $conn-Execute($sqlstr); //執行查詢獲得結果

$num_cols = $rs-Fields-Count(); //得到數據集列數

$County=array();

$i=0;

while (!$rs-EOF) {

$County[$i]=$rs-Fields[‘name’]-Value.”,”;

$rs-MoveNext();

$i++;

}

foreach($County as $val)

echo $val;

$conn-Close();

$rs = null;

$conn = null;

}

?

數據庫設計,表格Province表,City表,County表。

要求:Province表需要id和name,id建議從1至34,例如北京id為1,廣東id為2,以此類推;

       City表需要id,name和cid,id為cid*100+1,cid為該市的上級,例如深圳的上級為廣東省,cid為2的話,深圳的id就是201,以此類推。

       County表需要id,name和cid,因為是三級的關係,id可以隨意,建議從10001開始自增。cid為所在上級,例如寶安區的cid為201,龍崗區的cid也為201;

截圖:

HTML效果:

完成後效果:

原創文章,作者:TFYTL,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/128422.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
TFYTL的頭像TFYTL
上一篇 2024-10-03 23:25
下一篇 2024-10-03 23:25

相關推薦

發表回復

登錄後才能評論