整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          解析HTML、JS與PHP之間的數(shù)據(jù)傳輸

          電商網(wǎng)站搭建過程中,前端經(jīng)常會向后端請求數(shù)據(jù),有時候通過HTML、JS和PHP文件的處理來實現(xiàn)數(shù)據(jù)的連通。通常情況下,用戶在HTML中做關鍵字操作,JS對提交的表單進行數(shù)據(jù)處理,向后端發(fā)起ajax請求對應PHP的api接口,PHP在接收到數(shù)據(jù)后對連接服務器,服務器再通過PHP中的SQL語句對數(shù)據(jù)庫關鍵字進行處理返回給PHP,再由PHP返回給前端,前端通過JS處理將數(shù)據(jù)渲染在HTML中,最終呈現(xiàn)給用戶。圖1為數(shù)據(jù)傳輸流程圖:

          圖1 HTML、JS與PHP之間的數(shù)據(jù)傳輸流程圖

          以加入商品到購物車為例,本例為模擬數(shù)據(jù),和實際的數(shù)據(jù)庫的數(shù)據(jù)不同。

          圖2 商品列表

          加入購物車的點擊事件大致步驟為:用戶點擊"加入購物車"按鈕==>頁面獲取當前商品唯一值(如商品ID:productID)==>JS處理點擊事件,將唯一值連同用戶信息通過ajax請求傳送給PHP===>PHP向服務器請求連接===>數(shù)據(jù)庫語句執(zhí)行===>服務器將執(zhí)行結(jié)果返回給PHP===>PHP將執(zhí)行結(jié)果傳送給前端。

          如果數(shù)據(jù)庫語句執(zhí)行成功,那么數(shù)據(jù)庫中該用戶的購物車表就多了一項剛加入的商品數(shù)據(jù),同時服務器也會向PHP返回執(zhí)行成功信息(及一條不為空的數(shù)據(jù)串),而用戶的界面就會顯示"成功加入購物車"等字樣(如圖1-1所示);若執(zhí)行失敗,也會將失敗信息(err)傳給PHP,用戶界面也會顯示相應的提示,如圖3所示。

          圖3 成功加入購物車提示

          1. HTML中的代碼實例,商品列表信息通過引入art-template模塊進行渲染,代碼如下

          <ul class="productContainer">

          {{each product prod}}

          <li>

          <input type="text" value="{{prod.id}}">

          <img src="{{prod.img}}"/>

          <p>{{prod.title}}</p>

          <span>¥{{prod.price}}</span>

          <a href="javascript:void(0)">加入購物車</a>

          </li>

          {{/each}}

          </ul>

          2. JS中的數(shù)據(jù)請求處理實例如下,加入購物車的請求的api文件路徑為http://localhost/api/add.php,此時將點擊加入的商品ID及操作的用戶ID封裝為對象,用ajax的post請求傳給服務端

          $(".productContainer").on("click", ".add", function () {

          var productID=$("#prodID").val();//獲取到當前商品的ID值

          $.post("http://localhost/api/add.php", {productID:productID,userID},

          function (data) {

          if (data.res_code === 1) { //返回的數(shù)據(jù)中,data.res_code為1表示加入成功

          alert("加入成功");//對用戶進行加入成功提示

          } else {

          alert(data.res_message);//若不為1則表示加入失敗,data.res_message為失敗信息

          }

          }, "json");

          });

          3. PHP中的代碼(及JS中所請求的add.php文件)

          <?php

          // CORS跨域

          header("Access-Control-Allow-Origin:*");

          /* 向購物車添加商品 */

          $productID = $_POST["productID"];

          $userid = $_POST["userID"];

          // 連接數(shù)據(jù)庫服務器

          mysql_connect("localhost:3306", "root", "");

          // 選擇連接數(shù)據(jù)庫的名稱

          mysql_select_db("cart");

          // 讀寫庫編碼

          mysql_query("set character set utf8");

          mysql_query("set names utf8");

          // 編寫SQL語句

          //若該用戶未添加該商品,則向cartList表插入該商品,并將數(shù)量置為1

          $sql1 = "INSERT INTO cartList(productID, userID,count) VALUES ('$productID', '$userID',1)";

          //若該用戶已添加該商品,再次添加時只在cartList表中讓該商品的數(shù)量+1

          $sql2 = "UPDATE cartList SET count=count+1 WHERE productID= '$productID' AND userid='$userID'";

          // 執(zhí)行SQL語句,首先執(zhí)行sql1的語句,如果表中有相同的數(shù)據(jù),則sql1會執(zhí)行失敗,那么執(zhí)行sql2

          $result = mysql_query($sql1);

          if(!$result){

          $result = mysql_query($sql2);

          }

          // 判斷

          if ($result) { // 執(zhí)行成功,將res_code的值設為1,并將返回信息設置為"加入成功"

          $arr = array("res_code"=>1, "res_message"=>"加入成功");

          echo json_encode($arr);

          } else { // 執(zhí)行失敗,則將res_code設為0,并將錯誤信息設置為"加入失敗"

          $arr = array("res_code"=>0, "res_message"=>"加入失敗" . mysql_error());

          echo json_encode($arr);

          }

          // 關閉連接

          mysql_close();

          ?>

          4. 當用戶進入購物車時,頁面要請求該用戶在數(shù)據(jù)庫中的購物車表cartList,此時查詢結(jié)果應該為一個數(shù)組,數(shù)組里的每一個子元素對應一個唯一的商品對象,數(shù)據(jù)庫查詢語句如下:

          // 編寫SQL語句

          //在購物車cartList表中找到該用戶已經(jīng)添加的購物車商品數(shù)據(jù)的信息

          $sql = "SELECT * FROM cartList WHERE userID='$userID'";

          // 執(zhí)行SQL語句

          $result = mysql_query($sql);

          // 新建一個數(shù)組用來存查詢出來的結(jié)果,每條結(jié)果僅有一條商品的信息

          $results = array();

          // 每次查詢成功,將當前查詢到的商品結(jié)果存入results數(shù)組中

          while($row = mysql_fetch_row($result))

          {

          $results[] = $row;

          }

          if ($results) {//返回數(shù)組$results,res_code值設為1

          $arr = array("res_code"=>1, "res_message"=>$results);

          echo json_encode($arr);

          }

          else { // 查找失敗,返回信息"查找失敗",res_code值設為0

          $arr = array("res_code"=>0, "res_message"=>"查找失敗" . mysql_error());

          echo json_encode($arr);

          }

          關于PHP語法的說明:

          mysql_query() 函數(shù)執(zhí)行某個針對數(shù)據(jù)庫的查詢,每次查詢結(jié)果僅有一條數(shù)據(jù)。

          mysql_fetch_row() 從和結(jié)果標識 data 關聯(lián)的結(jié)果集中取得一行數(shù)據(jù)并作為數(shù)組返回。每個結(jié)果的列儲存在一個數(shù)組的單元中,偏移量從 0 開始。依次調(diào)用 mysql_fetch_row() 將返回結(jié)果集中的下一行,如果沒有更多行則返回 FALSE。

          電商網(wǎng)站搭建過程中,前端經(jīng)常會向后端請求數(shù)據(jù),有時候通過HTML、JS和PHP文件的處理來實現(xiàn)數(shù)據(jù)的連通。通常情況下,用戶在HTML中做關鍵字操作,JS對提交的表單進行數(shù)據(jù)處理,向后端發(fā)起ajax請求對應PHP的api接口,PHP在接收到數(shù)據(jù)后對連接服務器,服務器再通過PHP中的SQL語句對數(shù)據(jù)庫關鍵字進行處理返回給PHP,再由PHP返回給前端,前端通過JS處理將數(shù)據(jù)渲染在HTML中,最終呈現(xiàn)給用戶。圖1為數(shù)據(jù)傳輸流程圖:

          圖1 HTML、JS與PHP之間的數(shù)據(jù)傳輸流程圖

          以加入商品到購物車為例,本例為模擬數(shù)據(jù),和實際的數(shù)據(jù)庫的數(shù)據(jù)不同。

          圖2 商品列表

          加入購物車的點擊事件大致步驟為:用戶點擊"加入購物車"按鈕==>頁面獲取當前商品唯一值(如商品ID:productID)==>JS處理點擊事件,將唯一值連同用戶信息通過ajax請求傳送給PHP===>PHP向服務器請求連接===>數(shù)據(jù)庫語句執(zhí)行===>服務器將執(zhí)行結(jié)果返回給PHP===>PHP將執(zhí)行結(jié)果傳送給前端。

          如果數(shù)據(jù)庫語句執(zhí)行成功,那么數(shù)據(jù)庫中該用戶的購物車表就多了一項剛加入的商品數(shù)據(jù),同時服務器也會向PHP返回執(zhí)行成功信息(及一條不為空的數(shù)據(jù)串),而用戶的界面就會顯示"成功加入購物車"等字樣(如圖1-1所示);若執(zhí)行失敗,也會將失敗信息(err)傳給PHP,用戶界面也會顯示相應的提示,如圖3所示。

          圖3 成功加入購物車提示

          1. HTML中的代碼實例,商品列表信息通過引入art-template模塊進行渲染,代碼如下

          <ul class="productContainer">

          {{each product prod}}

          <li>

          <input type="text" value="{{prod.id}}">

          <img src="{{prod.img}}"/>

          <p>{{prod.title}}</p>

          <span>¥{{prod.price}}</span>

          <a href="javascript:void(0)">加入購物車</a>

          </li>

          {{/each}}

          </ul>

          2. JS中的數(shù)據(jù)請求處理實例如下,加入購物車的請求的api文件路徑為http://localhost/api/add.php,此時將點擊加入的商品ID及操作的用戶ID封裝為對象,用ajax的post請求傳給服務端

          $(".productContainer").on("click", ".add", function () {

          var productID=$("#prodID").val();//獲取到當前商品的ID值

          $.post("http://localhost/api/add.php", {productID:productID,userID},

          function (data) {

          if (data.res_code === 1) { //返回的數(shù)據(jù)中,data.res_code為1表示加入成功

          alert("加入成功");//對用戶進行加入成功提示

          } else {

          alert(data.res_message);//若不為1則表示加入失敗,data.res_message為失敗信息

          }

          }, "json");

          });

          3. PHP中的代碼(及JS中所請求的add.php文件)

          <?php

          // CORS跨域

          header("Access-Control-Allow-Origin:*");

          /* 向購物車添加商品 */

          $productID = $_POST["productID"];

          $userid = $_POST["userID"];

          // 連接數(shù)據(jù)庫服務器

          mysql_connect("localhost:3306", "root", "");

          // 選擇連接數(shù)據(jù)庫的名稱

          mysql_select_db("cart");

          // 讀寫庫編碼

          mysql_query("set character set utf8");

          mysql_query("set names utf8");

          // 編寫SQL語句

          //若該用戶未添加該商品,則向cartList表插入該商品,并將數(shù)量置為1

          $sql1 = "INSERT INTO cartList(productID, userID,count) VALUES ('$productID', '$userID',1)";

          //若該用戶已添加該商品,再次添加時只在cartList表中讓該商品的數(shù)量+1

          $sql2 = "UPDATE cartList SET count=count+1 WHERE productID= '$productID' AND userid='$userID'";

          // 執(zhí)行SQL語句,首先執(zhí)行sql1的語句,如果表中有相同的數(shù)據(jù),則sql1會執(zhí)行失敗,那么執(zhí)行sql2

          $result = mysql_query($sql1);

          if(!$result){

          $result = mysql_query($sql2);

          }

          // 判斷

          if ($result) { // 執(zhí)行成功,將res_code的值設為1,并將返回信息設置為"加入成功"

          $arr = array("res_code"=>1, "res_message"=>"加入成功");

          echo json_encode($arr);

          } else { // 執(zhí)行失敗,則將res_code設為0,并將錯誤信息設置為"加入失敗"

          $arr = array("res_code"=>0, "res_message"=>"加入失敗" . mysql_error());

          echo json_encode($arr);

          }

          // 關閉連接

          mysql_close();

          ?>

          4. 當用戶進入購物車時,頁面要請求該用戶在數(shù)據(jù)庫中的購物車表cartList,此時查詢結(jié)果應該為一個數(shù)組,數(shù)組里的每一個子元素對應一個唯一的商品對象,數(shù)據(jù)庫查詢語句如下:

          // 編寫SQL語句

          //在購物車cartList表中找到該用戶已經(jīng)添加的購物車商品數(shù)據(jù)的信息

          $sql = "SELECT * FROM cartList WHERE userID='$userID'";

          // 執(zhí)行SQL語句

          $result = mysql_query($sql);

          // 新建一個數(shù)組用來存查詢出來的結(jié)果,每條結(jié)果僅有一條商品的信息

          $results = array();

          // 每次查詢成功,將當前查詢到的商品結(jié)果存入results數(shù)組中

          while($row = mysql_fetch_row($result))

          {

          $results[] = $row;

          }

          if ($results) {//返回數(shù)組$results,res_code值設為1

          $arr = array("res_code"=>1, "res_message"=>$results);

          echo json_encode($arr);

          }

          else { // 查找失敗,返回信息"查找失敗",res_code值設為0

          $arr = array("res_code"=>0, "res_message"=>"查找失敗" . mysql_error());

          echo json_encode($arr);

          }

          關于PHP語法的說明:

          mysql_query() 函數(shù)執(zhí)行某個針對數(shù)據(jù)庫的查詢,每次查詢結(jié)果僅有一條數(shù)據(jù)。

          mysql_fetch_row() 從和結(jié)果標識 data 關聯(lián)的結(jié)果集中取得一行數(shù)據(jù)并作為數(shù)組返回。每個結(jié)果的列儲存在一個數(shù)組的單元中,偏移量從 0 開始。依次調(diào)用 mysql_fetch_row() 將返回結(jié)果集中的下一行,如果沒有更多行則返回 FALSE。

          . PHP魔法的起源

          PHP作為一種強大的編程語言,擁有著廣泛的應用領域。而在這個數(shù)字化時代,文章采集成為了一項重要的任務。那么,PHP又是如何實現(xiàn)文章采集的呢?讓我們揭開這個神秘面紗。

          2.文章采集的意義

          在信息爆炸的時代,獲取有價值的文章資源顯得尤為重要。而通過PHP編寫的文章采集代碼,可以幫助我們快速、高效地從互聯(lián)網(wǎng)上采集到我們需要的文章內(nèi)容。這不僅節(jié)省了時間和人力成本,還能夠提高工作效率。

          3. PHP文檔解析技術

          PHP文檔解析技術是實現(xiàn)文章采集的核心。通過使用各種解析函數(shù)和庫,我們可以將目標網(wǎng)頁中的HTML或XML結(jié)構(gòu)進行解析,并提取出我們需要的數(shù)據(jù)。這項技術使得PHP能夠輕松應對各種網(wǎng)頁結(jié)構(gòu)和數(shù)據(jù)格式,極大地提高了文章采集的靈活性。

          4.優(yōu)秀的文章采集工具

          除了自己編寫代碼,還有一些優(yōu)秀的文章采集工具可以幫助我們完成這項任務。比如,PHP Simple HTML DOM Parser和Goutte等工具,它們提供了方便易用的API和豐富的功能,使得我們能夠更加便捷地進行文章采集。

          5.注意事項與技巧

          在進行文章采集時,我們需要注意一些細節(jié)和技巧。首先,要選擇合適的目標網(wǎng)站,并了解其網(wǎng)頁結(jié)構(gòu)和數(shù)據(jù)格式。其次,要設置合理的請求頻率和并發(fā)數(shù),以避免給目標網(wǎng)站帶來過大的壓力。此外,還要處理好異常情況和錯誤信息,確保采集過程的穩(wěn)定性和可靠性。

          6.遵守法律與道德

          在進行文章采集時,我們必須遵守相關的法律法規(guī)和道德規(guī)范。不得采集他人的知識產(chǎn)權內(nèi)容,并且要尊重原作者的權益。同時,在使用采集到的文章內(nèi)容時,要注明出處并遵守相關的版權規(guī)定。

          7. PHP魔法持續(xù)進化

          隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,PHP文章采集代碼也在不斷進化。新的解析技術、優(yōu)秀的工具和更高效的算法不斷涌現(xiàn),使得文章采集變得更加智能化、自動化。PHP魔法的力量將繼續(xù)引領我們走向更廣闊的知識海洋。

          通過PHP編寫的文章采集代碼,讓我們能夠輕松獲取到海量的有價值文章資源。它不僅是一種工具,更是一種魔法,幫助我們探索知識的邊界。讓我們一起揭開這個神奇世界的面紗,感受PHP魔法的力量吧!


          主站蜘蛛池模板: 99在线精品一区二区三区| 日韩国产精品无码一区二区三区| 寂寞一区在线观看| 污污内射在线观看一区二区少妇 | 国产亚洲自拍一区| 亚洲图片一区二区| 精品国产aⅴ无码一区二区| 国产一区二区免费在线| 亚洲国产综合无码一区| 中文字幕乱码人妻一区二区三区 | 伊人色综合视频一区二区三区 | 久久婷婷色综合一区二区| 国产成人无码一区二区三区在线 | 日本高清天码一区在线播放| 亚洲高清偷拍一区二区三区| 骚片AV蜜桃精品一区| 国产成人一区在线不卡| 精品乱码一区内射人妻无码| 亚洲一区二区三区在线观看蜜桃 | 伊人久久精品无码麻豆一区| 狠狠做深爱婷婷综合一区 | 日韩精品午夜视频一区二区三区| 国产一区二区不卡在线播放| 波多野结衣中文字幕一区二区三区 | 中文字幕无码一区二区免费| 色一情一乱一伦一区二区三欧美| 亚洲老妈激情一区二区三区| 国产精品第一区第27页| 亚洲AV永久无码精品一区二区国产 | 亚洲av无码一区二区三区不卡 | 国产精品成人一区无码| 日韩人妻精品无码一区二区三区| 亚洲熟女少妇一区二区| 国产AV一区二区三区传媒| 国产在线一区二区| 91成人爽a毛片一区二区| 免费高清在线影片一区| 国产乱子伦一区二区三区| 中文字幕在线播放一区| 无码人妻久久一区二区三区 | 精品无码一区二区三区爱欲|