<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sql &#8211; 備忘程式碼</title>
	<atom:link href="https://www.weblink.idv.tw/tag/sql/feed" rel="self" type="application/rss+xml" />
	<link>https://www.weblink.idv.tw</link>
	<description>Javascript, PHP, HTML5 &#38; CSS3 coding memos</description>
	<lastBuildDate>Tue, 26 Mar 2024 03:17:36 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.4.3</generator>
	<item>
		<title>ajax搭配PHP將文字資料存入資料庫</title>
		<link>https://www.weblink.idv.tw/2017/40</link>
					<comments>https://www.weblink.idv.tw/2017/40#respond</comments>
		
		<dc:creator><![CDATA[Steven LIU]]></dc:creator>
		<pubDate>Sat, 08 Jul 2017 06:13:58 +0000</pubDate>
				<category><![CDATA[Javascript & Jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>
		<guid isPermaLink="false">https://www.weblink.idv.tw/?p=40</guid>

					<description><![CDATA[在沒有使用ajax將資料從前端往後端傳輸之前，一般的作法都是用HTML的form把表單包起來，然後在actio [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>在沒有使用ajax將資料從前端往後端傳輸之前，一般的作法都是用HTML的form把表單包起來，然後在action與method的地方設定傳輸參數丟給後端處理，像是：<br>
</p>



<span id="more-40"></span>



<pre class="wp-block-code"><code>&lt;form action='res.php' method='post'&gt;
   &lt;input name='name' type='text'&gt;
   &lt;input name='submit' type='submit'&gt;
&lt;/form&gt;</code></pre>



<p>這樣後端的res.php頁面就可以透過POST取得name的值作處理（通常是INSERT INTO資料庫）：</p>



<pre class="wp-block-code"><code>&lt;?
require_once('connect.php');//引入資料庫連結設定檔
$name = $_POST&#91;'name'];//取得name值
$sql = "INSERT INTO 表格名稱 (欄位名稱) VALUES ('$name') ";//插入表格語法
mysqli_query($link, $sql) or die("錯誤訊息：".mysqli_error($link));//執行插入
echo "資料插入成功！";//顯示訊息
?&gt;
//這段程式沒有做任何處理，建議實際使用時對變數作if判斷來決定成功與失敗的回傳訊息</code></pre>



<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9940075534877533"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-9940075534877533"
     data-ad-slot="4891658629"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>
<br>



<p>但因為這樣會將整頁html都傳出去，而這些資料大部分都是重複沒有必要的，所以後來才開始發展出ajax這種方式，僅把需要的資料丟到後端，不必整頁html都傳。如此一來不僅降低傳輸量，透過jquery的DOM操作，我們還能跳過html的form與input限制，直接把任何我們想傳的值透過抓取DOM元素丟到後端，並且把後端丟回來的東西再透過DOM作更多元的處理。</p>



<p>舉例來說，html碼我們可以用最習慣的div去包裹表單內容：</p>



<pre class="wp-block-code"><code>&lt;div id='input'&gt;
   &lt;input type='text' id='name'&gt;
   &lt;button id='submit'&gt;送出&lt;/button&gt;
&lt;/div&gt;
&lt;div id='response' style='display:none;'&gt;
&lt;/div&gt;</code></pre>



<p>然後javascript就變成：</p>



<pre class="wp-block-code"><code>$(document).on('click', '#submit', function(){ 
/*使用$(document).on()的原因是如果id為submit的按鈕是一開始沒有載入、透過ajax互動後才產生的DOM，那用$().click會抓不到，需以$(document).on()才行 */
   var name = $('#name').val();
   $.ajax({
      url:'res.php',
      method:'POST',
      data:{
         name:name
      },
      success:function(res){
         $('#input').hide();
         $('#response').show().html(res);
      }
   })
}</code></pre>



<p>後端php保持原來的樣子：</p>



<pre class="wp-block-code"><code>&lt;?
require_once('connect.php');//引入資料庫連結設定檔
$name = $_POST&#91;'name'];//取得name值
$sql = "INSERT INTO 表格名稱 (欄位名稱) VALUES ('$name') ";//插入表格語法
mysqli_query($link, $sql) or die("錯誤訊息：".mysqli_error($link));//執行插入
echo "資料插入成功！";//顯示訊息
?&gt;</code></pre>



<p>若ajax傳輸成功，res.php就會吐回</p>



<pre class="wp-block-code"><code>echo "資料插入成功！";</code></pre>



<p>echo的內容會成為success:function(res){}的res，於是我們就能利用這個res變數在現有的DOM上面任意處理啦！以例子來說，就是把id為response的div從隱藏改為顯示，並將res的內容印上去：</p>



<pre class="wp-block-code"><code>$('#response').show().html(res);</code></pre>



<p>如何？用ajax傳值是不是非常簡單？</p>



<p>透過res.php裡面的echo，我們可以決定任何想回傳給前端的callback（例如從資料庫裡撈東西出來作判斷後回吐，許多即時驗證用戶名是否重複的ajax功能即是這種應用），然後前端再於success:function(res){}裡面對回傳的res作處理。只要理解ajax與後端的溝通流程，光是簡單的前後端互動就能創造很多漂亮又即時的網頁效果囉！至於圖片與多個重複欄位的表單要如何以ajax處理，就留給下一篇介紹吧！</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.weblink.idv.tw/2017/40/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
