Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲国产精品综合久久20,91精品久久久久久久久网影视,中文字幕视频在线播放

          整合營(yíng)銷(xiāo)服務(wù)商

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

          免費(fèi)咨詢(xún)熱線:

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

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

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

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

          圖2 商品列表

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

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

          圖3 成功加入購(gòu)物車(chē)提示

          1. HTML中的代碼實(shí)例,商品列表信息通過(guò)引入art-template模塊進(jìn)行渲染,代碼如下

          <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)">加入購(gòu)物車(chē)</a>

          </li>

          {{/each}}

          </ul>

          2. JS中的數(shù)據(jù)請(qǐng)求處理實(shí)例如下,加入購(gòu)物車(chē)的請(qǐng)求的api文件路徑為http://localhost/api/add.php,此時(shí)將點(diǎn)擊加入的商品ID及操作的用戶(hù)ID封裝為對(duì)象,用ajax的post請(qǐng)求傳給服務(wù)端

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

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

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

          function (data) {

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

          alert("加入成功");//對(duì)用戶(hù)進(jìn)行加入成功提示

          } else {

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

          }

          }, "json");

          });

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

          <?php

          // CORS跨域

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

          /* 向購(gòu)物車(chē)添加商品 */

          $productID = $_POST["productID"];

          $userid = $_POST["userID"];

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

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

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

          mysql_select_db("cart");

          // 讀寫(xiě)庫(kù)編碼

          mysql_query("set character set utf8");

          mysql_query("set names utf8");

          // 編寫(xiě)SQL語(yǔ)句

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

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

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

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

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

          $result = mysql_query($sql1);

          if(!$result){

          $result = mysql_query($sql2);

          }

          // 判斷

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

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

          echo json_encode($arr);

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

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

          echo json_encode($arr);

          }

          // 關(guān)閉連接

          mysql_close();

          ?>

          4. 當(dāng)用戶(hù)進(jìn)入購(gòu)物車(chē)時(shí),頁(yè)面要請(qǐng)求該用戶(hù)在數(shù)據(jù)庫(kù)中的購(gòu)物車(chē)表cartList,此時(shí)查詢(xún)結(jié)果應(yīng)該為一個(gè)數(shù)組,數(shù)組里的每一個(gè)子元素對(duì)應(yīng)一個(gè)唯一的商品對(duì)象,數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句如下:

          // 編寫(xiě)SQL語(yǔ)句

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

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

          // 執(zhí)行SQL語(yǔ)句

          $result = mysql_query($sql);

          // 新建一個(gè)數(shù)組用來(lái)存查詢(xún)出來(lái)的結(jié)果,每條結(jié)果僅有一條商品的信息

          $results = array();

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

          while($row = mysql_fetch_row($result))

          {

          $results[] = $row;

          }

          if ($results) {//返回?cái)?shù)組$results,res_code值設(shè)為1

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

          echo json_encode($arr);

          }

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

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

          echo json_encode($arr);

          }

          關(guān)于PHP語(yǔ)法的說(shuō)明:

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

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

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

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

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

          圖2 商品列表

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

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

          圖3 成功加入購(gòu)物車(chē)提示

          1. HTML中的代碼實(shí)例,商品列表信息通過(guò)引入art-template模塊進(jìn)行渲染,代碼如下

          <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)">加入購(gòu)物車(chē)</a>

          </li>

          {{/each}}

          </ul>

          2. JS中的數(shù)據(jù)請(qǐng)求處理實(shí)例如下,加入購(gòu)物車(chē)的請(qǐng)求的api文件路徑為http://localhost/api/add.php,此時(shí)將點(diǎn)擊加入的商品ID及操作的用戶(hù)ID封裝為對(duì)象,用ajax的post請(qǐng)求傳給服務(wù)端

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

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

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

          function (data) {

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

          alert("加入成功");//對(duì)用戶(hù)進(jìn)行加入成功提示

          } else {

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

          }

          }, "json");

          });

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

          <?php

          // CORS跨域

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

          /* 向購(gòu)物車(chē)添加商品 */

          $productID = $_POST["productID"];

          $userid = $_POST["userID"];

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

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

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

          mysql_select_db("cart");

          // 讀寫(xiě)庫(kù)編碼

          mysql_query("set character set utf8");

          mysql_query("set names utf8");

          // 編寫(xiě)SQL語(yǔ)句

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

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

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

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

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

          $result = mysql_query($sql1);

          if(!$result){

          $result = mysql_query($sql2);

          }

          // 判斷

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

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

          echo json_encode($arr);

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

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

          echo json_encode($arr);

          }

          // 關(guān)閉連接

          mysql_close();

          ?>

          4. 當(dāng)用戶(hù)進(jìn)入購(gòu)物車(chē)時(shí),頁(yè)面要請(qǐng)求該用戶(hù)在數(shù)據(jù)庫(kù)中的購(gòu)物車(chē)表cartList,此時(shí)查詢(xún)結(jié)果應(yīng)該為一個(gè)數(shù)組,數(shù)組里的每一個(gè)子元素對(duì)應(yīng)一個(gè)唯一的商品對(duì)象,數(shù)據(jù)庫(kù)查詢(xún)語(yǔ)句如下:

          // 編寫(xiě)SQL語(yǔ)句

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

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

          // 執(zhí)行SQL語(yǔ)句

          $result = mysql_query($sql);

          // 新建一個(gè)數(shù)組用來(lái)存查詢(xún)出來(lái)的結(jié)果,每條結(jié)果僅有一條商品的信息

          $results = array();

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

          while($row = mysql_fetch_row($result))

          {

          $results[] = $row;

          }

          if ($results) {//返回?cái)?shù)組$results,res_code值設(shè)為1

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

          echo json_encode($arr);

          }

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

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

          echo json_encode($arr);

          }

          關(guān)于PHP語(yǔ)法的說(shuō)明:

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

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

          . PHP魔法的起源

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

          2.文章采集的意義

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

          3. PHP文檔解析技術(shù)

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

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

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

          5.注意事項(xiàng)與技巧

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

          6.遵守法律與道德

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

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

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

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


          主站蜘蛛池模板: 国产福利酱国产一区二区| 亚洲国产精品一区二区成人片国内| 波多野结衣一区在线| 色婷婷香蕉在线一区二区| 免费高清av一区二区三区| 色欲AV无码一区二区三区| 午夜无码视频一区二区三区| 99久久国产精品免费一区二区 | 无码福利一区二区三区| 国产品无码一区二区三区在线| 国产亚洲综合一区二区三区 | 免费观看日本污污ww网站一区| 一本色道久久综合一区| 久久精品国产第一区二区三区| 国产伦精品一区二区三区免.费| 在线观看免费视频一区| 日本一区二三区好的精华液 | 少妇激情av一区二区| 无码人妻精一区二区三区| 亚洲色大成网站www永久一区 | 色系一区二区三区四区五区 | 亚洲一区中文字幕在线电影网| 成人精品视频一区二区| 日韩视频一区二区三区| 国内精品视频一区二区八戒| 亚洲一区二区三区影院| 免费看无码自慰一区二区| 文中字幕一区二区三区视频播放 | 精品国产亚洲一区二区在线观看 | 久久精品一区二区影院| 伊人色综合一区二区三区影院视频| 精品在线一区二区| AA区一区二区三无码精片 | 人妻激情偷乱视频一区二区三区| 国产一区二区三区视频在线观看| 日韩人妻精品一区二区三区视频 | 亚洲综合av一区二区三区| 中文字幕AV一区中文字幕天堂| 理论亚洲区美一区二区三区| 亚洲高清美女一区二区三区| 国模无码一区二区三区不卡|