<?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>php - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<atom:link href="https://www.itoffside.com/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.itoffside.com</link>
	<description>ข้อมูลข่าวสารและเรื่องราวบนโลกของไอทีที่ ล้ำหน้า พร้อมสาระการเขียนโปรแกรมคอมพิวเตอร์</description>
	<lastBuildDate>Thu, 01 May 2025 00:29:05 +0000</lastBuildDate>
	<language>th</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://www.itoffside.com/wp-content/uploads/2020/04/cropped-favicon-96x96-1-32x32.png</url>
	<title>php - itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</title>
	<link>https://www.itoffside.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>PHP Workshop มาสร้าง PDF ง่ายๆ ด้วย mPDF กัน</title>
		<link>https://www.itoffside.com/php-workshop-pdf-by-mpdf/</link>
					<comments>https://www.itoffside.com/php-workshop-pdf-by-mpdf/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 01 May 2025 00:19:01 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mpdf]]></category>
		<category><![CDATA[mpdf ภาษาไทย]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php workshop]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[สร้าง PDF]]></category>
		<category><![CDATA[เอกสาร PDF]]></category>
		<category><![CDATA[ใบกำกับภาษี]]></category>
		<category><![CDATA[ใบเสร็จ]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3641</guid>

					<description><![CDATA[<p>มาเรียนรู้การสร้างเอกสาร PDF สวยๆ ด้วย PHP และ mPDF กัน! มีตัวอย่างใบกำกับภาษี/ใบเสร็จรับเงิน เคยไหมกับการต้องปวดหัวกับการจัดการเอกสารสำคัญ? ไม่ว่าจะเป็นรายงาน, ใบเสนอราคา, หรือแม้แต่ใบกำกับภาษีที่ดูไม่สวยงามเอาเสียเลย&#8230; ถ้าคุณกำลังมองหาวิธีที่จะทำให้งานเหล่านี้ง่ายขึ้น แถมยังดูเป็นมืออาชีพสุดๆ...</p>
<p>The post <a href="https://www.itoffside.com/php-workshop-pdf-by-mpdf/">PHP Workshop มาสร้าง PDF ง่ายๆ ด้วย mPDF กัน</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>มาเรียนรู้การสร้างเอกสาร PDF สวยๆ ด้วย PHP และ mPDF กัน! มีตัวอย่างใบกำกับภาษี/ใบเสร็จรับเงิน</strong><br />
เคยไหมกับการต้องปวดหัวกับการจัดการเอกสารสำคัญ? ไม่ว่าจะเป็นรายงาน, ใบเสนอราคา, หรือแม้แต่ใบกำกับภาษีที่ดูไม่สวยงามเอาเสียเลย&#8230; ถ้าคุณกำลังมองหาวิธีที่จะทำให้งานเหล่านี้ง่ายขึ้น แถมยังดูเป็นมืออาชีพสุดๆ แล้วล่ะก็ ขอบอกเลยว่าห้ามพลาดวิดีโอ<span id="more-3641"></span></p>
<p><iframe title="PHP Workshop สร้าง PDF ด้วย mPDF (ตัวอย่างใบกำกับภาษี/ใบเสร็จรับเงิน)" width="660" height="371" src="https://www.youtube.com/embed/IgKs-u3VYtg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p>ในวิดีโอนี้ จะพาไปเจาะลึกการใช้ mPDF ไลบรารี PHP สุดเจ๋ง ที่จะช่วยให้การสร้างเอกสาร PDF ของคุณง่ายเหมือนปอกกล้วยเข้าปาก แถมยังปรับแต่งได้สารพัดอย่าง ไม่ว่าจะเป็นหน้าตา, รูปภาพ, ตาราง หรือฟอนต์สวยๆ ที่ถูกใจ เพียงแค่รู้ html, css และ php เท่านั้น</p>
<h2>ทำไมใครๆ ก็หลงรัก mPDF?</h2>
<ul>
<li><b>ง่ายจนเหลือเชื่อ:</b> ไม่ต้องเขียนโค้ดให้ซับซ้อนวุ่นวาย mPDF มีฟังก์ชันที่ช่วยให้คุณสร้าง PDF ได้แบบสบายๆ</li>
<li><b>อยากได้แบบไหน? จัดให้!:</b> จะปรับสี, ใส่โลโก้, ออกแบบตารางเก๋ๆ หรือจะใส่ฟอนต์ไทยสวยๆ ก็ทำได้หมด</li>
<li><b>เพื่อนคู่คิดของนักพัฒนา:</b> เป็นไลบรารี Open Source ที่ใช้งานได้ฟรี แถมยังมีเพื่อนๆ นักพัฒนาคอยช่วยเหลือเพียบ</li>
</ul>
<h2>ในวิดีโอ สอนอะไรบ้าง?</h2>
<ul>
<li>เริ่มตั้งแต่ศูนย์: พาติดตั้ง mPDF แบบ Step-by-Step</li>
<li>สร้าง PDF ใบกำกับภาษี/ใบเสร็จรับเงิน ง่ายๆ สไตล์มือโปร</li>
<li><strong>mPDF สร้างให้รองรับภาษาไทย</strong></li>
<li>เติมสีสันให้เอกสาร: ใส่ข้อความ, รูปภาพ, และตารางแบบเนียนๆ</li>
<li>จัดระเบียบทุกหน้า: กำหนดหน้า, ใส่หัวกระดาษ, ท้ายกระดาษ ให้ดูดีมีสไตล์</li>
<li><strong>พิเศษ</strong>! <strong>ตัวอย่างการสร้างใบกำกับภาษีและใบเสร็จรับเงิน</strong>แบบเข้าใจง่าย</li>
</ul>
<h2>ใครควรมาดูบ้าง?</h2>
<ul>
<li>เหล่านักพัฒนา PHP ที่อยากยกระดับงานเอกสารของตัวเอง</li>
<li>ใครก็ตามที่อยากสร้างเอกสาร PDF ที่ดูดี มีมาตรฐาน</li>
<li>มือใหม่หัดเขียนโค้ด PHP ก็ดูได้</li>
</ul>
<h2>ตัวอย่างผลงาน mPDF</h2>
<figure id="attachment_3643" aria-describedby="caption-attachment-3643" style="width: 789px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="wp-image-3643 size-full" src="https://www.itoffside.com/wp-content/uploads/2025/05/Screenshot-2025-05-01-064448.png" alt="PHP Workshop สร้าง PDF ด้วย mPDF" width="789" height="843" srcset="https://www.itoffside.com/wp-content/uploads/2025/05/Screenshot-2025-05-01-064448.png 789w, https://www.itoffside.com/wp-content/uploads/2025/05/Screenshot-2025-05-01-064448-281x300.png 281w, https://www.itoffside.com/wp-content/uploads/2025/05/Screenshot-2025-05-01-064448-768x821.png 768w, https://www.itoffside.com/wp-content/uploads/2025/05/Screenshot-2025-05-01-064448-80x85.png 80w" sizes="(max-width: 789px) 100vw, 789px" /><figcaption id="caption-attachment-3643" class="wp-caption-text">PHP Workshop สร้าง PDF ด้วย mPDF</figcaption></figure><p>The post <a href="https://www.itoffside.com/php-workshop-pdf-by-mpdf/">PHP Workshop มาสร้าง PDF ง่ายๆ ด้วย mPDF กัน</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/php-workshop-pdf-by-mpdf/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>แจกฟรี! ระบบบัญชี PHP พร้อมพิมพ์ใบกำกับภาษี &#038; ใบสั่งซื้อ รองรับทุกธุรกิจ</title>
		<link>https://www.itoffside.com/free-accounting-system-php-invoice-purchase-order/</link>
					<comments>https://www.itoffside.com/free-accounting-system-php-invoice-purchase-order/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Tue, 22 Apr 2025 15:13:27 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php login]]></category>
		<category><![CDATA[php workshop]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[phpexcel]]></category>
		<category><![CDATA[PhpSpreadsheet]]></category>
		<category><![CDATA[ระบบบัญชี php]]></category>
		<category><![CDATA[ใบกำกับภาษี php]]></category>
		<category><![CDATA[ใบสั่งซื้อ php]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3633</guid>

					<description><![CDATA[<p>ในยุคออนไลน์ที่ทุกอย่างต้องการความรวดเร็ว **ระบบบัญชี PHP** ที่มีฟังก์ชันครบถ้วนสำหรับการ พิมพ์ใบกำกับภาษี, ใบเสร็จรับเงิน และ ใบสั่งซื้อ ถือเป็นเครื่องมือที่จำเป็นสำหรับธุรกิจทุกประเภท ไม่ว่าจะเป็นร้านค้าออนไลน์ บริษัท หรือองค์กรที่ต้องการจัดการเอกสารทางบัญชีได้อย่างสะดวก วันนี้เรามีระบบจัดการบัญชี...</p>
<p>The post <a href="https://www.itoffside.com/free-accounting-system-php-invoice-purchase-order/">แจกฟรี! ระบบบัญชี PHP พร้อมพิมพ์ใบกำกับภาษี & ใบสั่งซื้อ รองรับทุกธุรกิจ</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>ในยุคออนไลน์ที่ทุกอย่างต้องการความรวดเร็ว <em><strong><span style="color: #ff00ff;">**ระบบบัญชี PHP**</span></strong></em> ที่มีฟังก์ชันครบถ้วนสำหรับการ <strong>พิมพ์ใบกำกับภาษี</strong>, <strong>ใบเสร็จรับเงิน</strong> และ <strong>ใบสั่งซื้อ</strong> ถือเป็นเครื่องมือที่จำเป็นสำหรับธุรกิจทุกประเภท ไม่ว่าจะเป็นร้านค้าออนไลน์ บริษัท หรือองค์กรที่ต้องการจัดการเอกสารทางบัญชีได้อย่างสะดวก วันนี้เรามีระบบจัดการบัญชีที่ใช้งานง่าย พร้อมแจกให้ดาวน์โหลดฟรี!<span id="more-3633"></span></p>
<p><!-- Features Section --></p>
<h2>ฟีเจอร์เด่นของระบบบัญชี PHP</h2>
<ul>
<li><strong>บันทึกใบกำกับภาษี &amp; ใบเสร็จรับเงิน</strong> – รองรับการพิมพ์ใบกำกับภาษีแบบเต็มรูปแบบ พร้อมฟอร์มที่ถูกต้องตามมาตรฐาน</li>
<li><strong>พิมพ์ใบสั่งซื้อ</strong> – ระบบพิมพ์ใบสั่งซื้อที่ช่วยให้การจัดการคำสั่งซื้อเป็นไปอย่างมีประสิทธิภาพ พร้อมฟอร์มที่ถูกต้องตามมาตรฐาน</li>
<li><strong>จัดการข้อมูลสินค้า</strong> – เพิ่ม/แก้ไขข้อมูลสินค้า</li>
<li><strong>จัดการข้อมูลลูกค้า</strong> – บันทึกและจัดเก็บข้อมูลลูกค้าอย่างเป็นระบบ</li>
<li><strong>จัดการข้อมูลผู้จำหน่าย</strong> – บริหารจัดการข้อมูลซัพพลายเออร์ได้ง่ายดาย</li>
<li><strong>การตั้งค่าระบบเต็มรูปแบบ</strong> – ปรับแต่งการทำงานของระบบตามความต้องการของธุรกิจคุณ</li>
</ul>
<p><a class="ngg-simplelightbox" title=" " href="https://www.itoffside.com/wp-content/gallery/eaccount/eaccount-10.png" rel="" data-image-id="64" data-src="https://www.itoffside.com/wp-content/gallery/eaccount/eaccount-10.png" data-thumbnail="https://www.itoffside.com/wp-content/gallery/eaccount/thumbs/thumbs_eaccount-10.png" data-title="eaccount-10" data-description=" "><img decoding="async" class="ngg-singlepic ngg-none" src="https://www.itoffside.com/wp-content/gallery/eaccount/eaccount-10.png" alt="eaccount-10"></a></p>
<p><!-- SEO Keywords --></p>
<h2>ระบบบัญชี PHP ที่รองรับการพิมพ์ใบกำกับภาษี &amp; ใบสั่งซื้อ</h2>
<p>ระบบนี้ได้รับการออกแบบให้ใช้งานง่าย รองรับทุกฟังก์ชันสำคัญ ทั้งการ <strong>พิมพ์ใบกำกับภาษี PHP</strong>, <strong>พิมพ์ใบสั่งซื้อ PHP</strong>, <strong>ระบบขาย/ซื้อ PHP</strong> ซึ่งช่วยให้การดำเนินธุรกิจเป็นไปอย่างคล่องตัว</p>
<p><!-- Call to Action --></p>
<h2>ดาวน์โหลดฟรี – ติดตั้งง่าย พร้อมใช้งาน!</h2>
<p>หากคุณกำลังมองหา <strong>ระบบบัญชี PHP</strong> ที่สามารถ <strong>พิมพ์ใบกำกับภาษี PHP</strong> และ <strong>พิมพ์ใบสั่งซื้อ PHP</strong> ได้ครบถ้วน นี่คือโอกาสที่คุณไม่ควรพลาด! คลิกที่ลิงก์ด้านล่างเพื่อดาวน์โหลดระบบและเริ่มใช้งานได้ทันที</p>
<p><a href="https://drive.google.com/file/d/1Om9QG8V0L0vj97mJBjLE34aOP99_o-dj/view?usp=sharing" target="_blank" rel="nofollow noopener">ดาวน์โหลดระบบบัญชีฟรีที่นี่</a></p>
<p><!-- Closing Statement --></p>
<h2>⚙️ วิธีติดตั้งระบบบัญชี PHP พร้อมพิมพ์ใบกำกับภาษี &amp; ใบสั่งซื้อ</h2>
<p>การติดตั้ง <strong>ระบบบัญชี PHP</strong> นี้ง่ายและรวดเร็ว เพียงทำตามขั้นตอนต่อไปนี้ คุณจะสามารถเริ่มใช้งานระบบได้ทันที!</p>
<h3>ขั้นตอนการติดตั้ง</h3>
<ol>
<li><strong>ดาวน์โหลดไฟล์ระบบ</strong>: คลิกที่ลิงก์ด้านล่างเพื่อดาวน์โหลดซอร์สโค้ดระบบบัญชี <a href="https://drive.google.com/file/d/1Om9QG8V0L0vj97mJBjLE34aOP99_o-dj/view?usp=sharing" target="_blank" rel="nofollow noopener">ดาวน์โหลดระบบบัญชีฟรีที่นี่</a></li>
<li><strong>แตกไฟล์ ZIP</strong>: หลังจากดาวน์โหลดเสร็จ ให้แตกไฟล์ ZIP และนำไปวางไว้ในเซิร์ฟเวอร์ของคุณ ตัวอย่างไว้ใน c:/xampp/htdocs/eaccount-lite</li>
<li><strong>ตั้งค่าฐานข้อมูล MySQL</strong>:
<ul>
<li>สร้างฐานข้อมูลใหม่ใน MySQL (แนะนำใช้ phpMyAdmin) ชื่อฐานข้อมูล <strong>eaccount_lite</strong></li>
<li>Import sql นำเข้าตารางฐานข้อมูลจากไฟล์ <code>eaccount_lite.sql</code></li>
<li>ตั้งค่าการเชื่อมต่อฐานข้อมูลและตั้ง URL ในไฟล์ <code>config.php</code></li>
</ul>
</li>
<li><strong>ตั้งค่าเซิร์ฟเวอร์</strong>: ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์รองรับ PHP version 8 ขึ้นไป และ MySQL เวอร์ชันล่าสุด</li>
<li><strong>ทดสอบการใช้งาน</strong>: เปิดเบราว์เซอร์แล้วไปที่ URL ของเซิร์ฟเวอร์เพื่อล็อกอินเข้าสู่ระบบ</li>
</ol>
<h3>คำแนะนำเพิ่มเติม</h3>
<ul>
<li>ควรตั้งค่าสิทธิ์ไฟล์และโฟลเดอร์ให้เหมาะสม (CHMOD 755 หรือ 777) เพื่อให้สามารถอัปโหลดไฟล์เอกสารได้</li>
<li>ตรวจสอบว่ามีการเปิดใช้งานโมดูล <strong>mysqli</strong> ในเซิร์ฟเวอร์ของคุณ</li>
<li>หากพบข้อผิดพลาดในการติดตั้ง สามารถติดต่อทีมพัฒนาเพื่อรับคำแนะนำเพิ่มเติม</li>
</ul>
<h2>ดาวน์โหลดและเริ่มใช้งานเลย!</h2>
<p>ระบบนี้รองรับทุกฟังก์ชันสำคัญ เช่น <strong>พิมพ์ใบกำกับภาษี PHP</strong>, <strong>พิมพ์ใบสั่งซื้อ PHP</strong>, <strong>ระบบขาย/ซื้อ PHP</strong> และสามารถปรับแต่งเพิ่มเติมได้ตามความต้องการ รีบดาวน์โหลดและเริ่มใช้งานเพื่อเพิ่มประสิทธิภาพในการจัดการบัญชีของคุณ</p>
<p>หวังว่าระบบนี้จะช่วยให้การจัดการบัญชีและเอกสารของคุณเป็นเรื่องง่ายขึ้น! หากมีข้อสงสัยเกี่ยวกับการติดตั้งหรือการใช้งาน สามารถสอบถามเพิ่มเติมได้เลย</p><p>The post <a href="https://www.itoffside.com/free-accounting-system-php-invoice-purchase-order/">แจกฟรี! ระบบบัญชี PHP พร้อมพิมพ์ใบกำกับภาษี & ใบสั่งซื้อ รองรับทุกธุรกิจ</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/free-accounting-system-php-invoice-purchase-order/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>แจกระบบเอกสาร PHP &#038; MySQL &#124; ดาวน์โหลดฟรี พร้อมวิธีติดตั้ง</title>
		<link>https://www.itoffside.com/edocument-php-mysql-sourcecode/</link>
					<comments>https://www.itoffside.com/edocument-php-mysql-sourcecode/#comments</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 03 Apr 2025 00:27:03 +0000</pubDate>
				<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[edocument]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[ระบบเอกสาร]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3600</guid>

					<description><![CDATA[<p>หากคุณกำลังมองหา ระบบเอกสารออนไลน์ที่พัฒนาด้วย PHP และ MySQL ที่ช่วยให้การจัดเก็บและบริหารจัดการไฟล์เป็นเรื่องง่าย โค๊ดสคริปต์นี้จะช่วยให้คุณเข้าใจการทำงานของระบบ พร้อมลิงก์ดาวน์โหลดฟรี! ระบบเอกสาร PHP &#38; MySQL คืออะไร? ระบบเอกสารออนไลน์ (E-Document System) เป็นระบบโปรแกรมที่ช่วยให้คุณสามารถ จัดเ...</p>
<p>The post <a href="https://www.itoffside.com/edocument-php-mysql-sourcecode/">แจกระบบเอกสาร PHP & MySQL | ดาวน์โหลดฟรี พร้อมวิธีติดตั้ง</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>หากคุณกำลังมองหา <strong>ระบบเอกสารออนไลน์ที่พัฒนาด้วย PHP และ MySQL</strong> ที่ช่วยให้การจัดเก็บและบริหารจัดการไฟล์เป็นเรื่องง่าย โค๊ดสคริปต์นี้จะช่วยให้คุณเข้าใจการทำงานของระบบ พร้อมลิงก์ดาวน์โหลดฟรี!</p>
<h2><strong> ระบบเอกสาร PHP &amp; MySQL คืออะไร?</strong></h2>
<p>ระบบเอกสารออนไลน์ (E-Document System) เป็นระบบโปรแกรมที่ช่วยให้คุณสามารถ <strong>จัดเก็บไฟล์เอกสาร</strong> ค้นหา การเข้าถึงได้อย่างสะดวก เหมาะสำหรับองค์กร บริษัท หรือบุคคลทั่วไปที่ต้องการเครื่องมือช่วยจัดการเอกสาร</p>
<p><span id="more-3600"></span></p>
<figure id="attachment_3602" aria-describedby="caption-attachment-3602" style="width: 1636px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-3602" src="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02.png" alt="edocument php mysql" width="1636" height="775" srcset="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02.png 1636w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02-300x142.png 300w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02-1024x485.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02-768x364.png 768w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02-1536x728.png 1536w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-02-80x38.png 80w" sizes="(max-width: 1636px) 100vw, 1636px" /><figcaption id="caption-attachment-3602" class="wp-caption-text">edocument php mysql</figcaption></figure>
<p>&nbsp;</p>
<figure id="attachment_3601" aria-describedby="caption-attachment-3601" style="width: 551px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-3601" src="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01.png" alt="edocument php mysql" width="551" height="309" srcset="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01.png 1651w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01-300x168.png 300w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01-1024x574.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01-768x430.png 768w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01-1536x861.png 1536w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-01-80x45.png 80w" sizes="auto, (max-width: 551px) 100vw, 551px" /><figcaption id="caption-attachment-3601" class="wp-caption-text">edocument php mysql</figcaption></figure>
<figure id="attachment_3603" aria-describedby="caption-attachment-3603" style="width: 2025px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3603" src="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03.png" alt="edocument php mysql" width="2025" height="1417" srcset="https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03.png 2025w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03-300x210.png 300w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03-1024x717.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03-768x537.png 768w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03-1536x1075.png 1536w, https://www.itoffside.com/wp-content/uploads/2025/04/edocument-php-03-80x56.png 80w" sizes="auto, (max-width: 2025px) 100vw, 2025px" /><figcaption id="caption-attachment-3603" class="wp-caption-text">edocument php mysql</figcaption></figure>
<h2><strong>✨ คุณสมบัติเด่นของระบบ</strong></h2>
<p>✔ <strong>อัปโหลดและจัดเก็บเอกสาร</strong> รองรับไฟล์หลากหลายประเภท<br />
✔ <strong>จัดหมวดหมู่เอกสาร</strong> แยกตามประเภทหรือแผนกเพื่อค้นหาง่ายขึ้น<br />
✔ <strong>ค้นหาเอกสารได้รวดเร็ว</strong> ด้วยระบบค้นหาตามชื่อไฟล์หรือคำสำคัญ<br />
✔ <strong>อินเตอร์เฟซใช้งานง่าย</strong> ดีไซน์เรียบง่าย มือใหม่ก็ใช้งานได้ทันที</p>
<h2><strong> ดาวน์โหลดและติดตั้งระบบเอกสาร</strong></h2>
<p>โครงการนี้ถูกเผยแพร่ผ่าน <strong>GitHub</strong> สามารถดาวน์โหลดได้ที่ <a title="ระบบเอกสาร php" href="https://github.com/ipball/edocument" target="_blank" rel="noopener">https://github.com/ipball/edocument</a></p>
<h3><strong>วิธีติดตั้ง</strong></h3>
<p>1️⃣ ดาวน์โหลดโค้ดจาก GitHub<br />
2️⃣ อัปโหลดลงเซิร์ฟเวอร์ที่รองรับ PHP และ MySQL หรือติดตั้งบนเครื่องโดยใช้ xampp จำลองเซิฟเวอร์แทนได้<br />
3️⃣ สร้างฐานข้อมูลชื่อ document และนำเข้าตารางจากไฟล์ SQL ที่แนบมาชื่อไฟล์ _database.sql ในกรณีผมใช้ phpmyadmin ในการจัดการฐานข้อมูล<br />
4️⃣ ตั้งค่าการเชื่อมต่อฐานข้อมูลใน <code>config.php</code><br />
5️⃣ เริ่มใช้งานระบบเอกสารได้เลย!</p>
<p>เข้าจัดการเอกสาร /admin<br />
ผู้ใช้: todo<br />
รหัสผ่าน: passpass</p>
<h2><strong> ประโยชน์ของระบบเอกสาร</strong></h2>
<p><strong>ทำไมต้องใช้ระบบเอกสารออนไลน์?</strong> นอกจากช่วยจัดการไฟล์ได้ง่ายขึ้นแล้ว ยังช่วยให้ทีมงานสามารถเข้าถึงข้อมูลสำคัญได้ตลอดเวลา ไม่ต้องกังวลเรื่องเอกสารสูญหาย ลดการใช้กระดาษ และเพิ่มประสิทธิภาพการทำงาน</p>
<p>หากคุณกำลังมองหาวิธี <strong>บริหารเอกสารให้มีประสิทธิภาพ</strong> ระบบนี้คือคำตอบ! รองรับการใช้งานหลากหลาย และสามารถปรับแต่งเพิ่มเติมได้ตามความต้องการ</p>
<p>และโปรแกรมแจกฟรี เขียนโดย <strong>PHP&amp;Mysql</strong> ทำให้ไม่ต้องกังวลเรื่องเซิฟเวอร์ราคาแพง เพราะเป็นภาษาไม่เสียค่าลิขสิทธิ์</p><p>The post <a href="https://www.itoffside.com/edocument-php-mysql-sourcecode/">แจกระบบเอกสาร PHP & MySQL | ดาวน์โหลดฟรี พร้อมวิธีติดตั้ง</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/edocument-php-mysql-sourcecode/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>Dynamic Dropdown หลายชั้นด้วย PHP+Ajax</title>
		<link>https://www.itoffside.com/dynamic-dropdown-%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-phpajax/</link>
					<comments>https://www.itoffside.com/dynamic-dropdown-%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-phpajax/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Tue, 04 Mar 2025 06:00:34 +0000</pubDate>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3582</guid>

					<description><![CDATA[<p>สวัสดีครับ วันนี้มานำเสนอการเขียนโปรแกรม แบบ dynamic dropdown คือเมื่อ ทำการเลือก dropdown ชั้นที่ 1 dropdown ชั้นที่ 2 จะถูกดึงข้อมูลตาม id ที่ dropdown ขั้นที่ 1 ยกตัวอย่างเช่น เราเลือกจังหวัด ปทุมธานี(Dropdown 1) แล้ว อำเภอจะแสดงข้อมูลอำเภอเฉพาะที่อยู่ในจังหวัดปทุมธานี(Dropdown 2) แต่ตัวอย่างนี้ ...</p>
<p>The post <a href="https://www.itoffside.com/dynamic-dropdown-%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-phpajax/">Dynamic Dropdown หลายชั้นด้วย PHP+Ajax</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>สวัสดีครับ วันนี้มานำเสนอการเขียนโปรแกรม แบบ <strong>dynamic dropdown</strong> คือเมื่อ ทำการเลือก <strong>dropdown</strong> ชั้นที่ 1 <strong>dropdown</strong> ชั้นที่ 2 จะถูกดึงข้อมูลตาม id ที่ <strong>dropdown</strong> ขั้นที่ 1 ยกตัวอย่างเช่น เรา<strong>เลือกจังหวัด</strong> ปทุมธานี(Dropdown 1) แล้ว <strong>อำเภอ</strong>จะแสดงข้อมูลอำเภอเฉพาะที่อยู่ในจังหวัดปทุมธานี(<strong>Dropdown</strong> 2) แต่ตัวอย่างนี้ มี <strong>Dropdown</strong> ถึง 3 ชั้นเลย ก็คือ เป็นที่มาของตัวอย่างการ<strong>เลือก จังหวัด, อำเภอ, ตำบล และ รหัสไปรษณีย์</strong> นั้นเอง</p>
<p>โดยวันนี้เราจะใช้ภาษา <strong>PHP และ javascript(jQuery)</strong> ในการทำงานนั้นเอง โดยใช้เทคนิค AJAX ตอนดึงข้อมูลมาใส่ใน dropdown 2, 3 เดี่ยวมาดูกันว่าเขียนอย่างไรบ้างในบทความนี้</p>
<h2>วิธีการเขียน Multiple Dropdown</h2>
<ol>
<li>ทำการ import database ของฐานข้อมูล จังหวัด, อำเภอ, ตำบล ลงในฐานข้อมูลก่อน ดาวน์โหลดได้ที่<br />
<a href="https://github.com/ipball/multiple_dropdown2025/blob/main/multiple_dropdown.sql" target="_blank" rel="noopener">https://github.com/ipball/multiple_dropdown2025/blob/main/multiple_dropdown.sql</a></li>
<li>ทำการสร้างไฟล์ conect.php เพื่อเชื่อมต่อกับฐานข้อมูล</li>
</ol>
<figure id="attachment_3583" aria-describedby="caption-attachment-3583" style="width: 1030px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3583" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="1030" height="469" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01.png 1030w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01-300x137.png 300w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01-1024x466.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01-768x350.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-01-80x36.png 80w" sizes="auto, (max-width: 1030px) 100vw, 1030px" /><figcaption id="caption-attachment-3583" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p>3. สร้างไฟล์ index.php เพื่อทำหน้าจอ dropdown จังหวัด, อำเภอ, ตำบล และ ช่อง input text รหัสไปรณีย์</p>
<figure id="attachment_3584" aria-describedby="caption-attachment-3584" style="width: 525px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class=" wp-image-3584" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="525" height="584" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02.png 1686w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02-270x300.png 270w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02-922x1024.png 922w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02-768x853.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02-1383x1536.png 1383w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-02-80x89.png 80w" sizes="auto, (max-width: 525px) 100vw, 525px" /><figcaption id="caption-attachment-3584" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p><span style="color: #ff00ff;"><strong>อธิบายโค๊ด</strong></span></p>
<p>บรรทัดที่ 2 include ไฟล์เพื่อเชื่อมต่อฐานข้อมูล<br />
บรรทัดที่ 4-10 ดึงข้อมูลจากตารางจังหวัด แล้ววนข้อมูลเก็บใส่ตัวแปร $provinces เพื่อที่จะนำไปวนลูปใน dropdown<br />
บรรทัดที่ 28-35 เป็น dropdown ของจังหวัด นำตัวแปรจาก บรรทัดข้างบนมา วนแสดงผล จังหวัด<br />
บรรทัดที่ 37-52 เป็นฟอร์มของ อำเภอ, ตำบล, รหัสไปรษณีย์ ยังไม่มีค่าใดๆ เพราะต้องรอให้เลือก dropdown จังหวัดก่อน ในส่วนนี้<br />
บรรทัดที่ 56-57 include ไฟล์สำคัญคือ jquery มาใส่งาน, และไฟล์ script.js เป็นไฟล์ที่เราจะเขียนขึ้นเพื่อหาจังหวะตอนเลือกเปลี่ยน ค่า dropdown</p>
<p>4. สร้างไฟล์ script.js เพื่อจับเหตุการ์ณและดึงข้อมูลแสดงผล อำเภอ, ตำบล, รหัสไปรษณีย์</p>
<figure id="attachment_3585" aria-describedby="caption-attachment-3585" style="width: 2206px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3585" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="2206" height="1630" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03.png 2206w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-300x222.png 300w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-1024x757.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-768x567.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-1536x1135.png 1536w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-2048x1513.png 2048w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-03-80x59.png 80w" sizes="auto, (max-width: 2206px) 100vw, 2206px" /><figcaption id="caption-attachment-3585" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p><span style="color: #ff00ff;"><strong>อธิบายโค๊ด</strong></span></p>
<p>บรรทัดที่ 2-24 เมื่อมีการเปลี่ยนแปลง dropdown จังหวัด จะทำการ reset ค่าของ อำเภอ, ตำบล, รหัสไปรษณีย์ แล้วทำการดึงข้อมูลอำเภอ ตามจังหวัดที่เลือกใน dropdown นั้น ด้วย jquery AJAX จากไฟล์ get_districts.php (เราจะสร้างทีหลัง) ซึ่งพอเราดึงค่าข้อมูลจากไฟล์ได้แล้วจะได้ข้อมูล รุปแบบ JSON ให้เราทำการวนข้อมูลแล้ว ลูปอำเภอ นำมาใส่ใน element dropdown ของอำเภอ<br />
บรรทัดที่ 26-47 เมื่อเปลี่ยนแปลง dropdown อำเภอ ทำการ reset ค่า ตำบล, รหัสไปรษณีย์ แล้วดึงข้อมูลตำบล ตามอำเภอที่เลือก ด้วย jquery AJAX จากไฟล์ get_subdistricts.php แล้วเอาข้อมูลที่ได้รับเป็น JSON วนลูปใส่ใน dropdown ตำบล<br />
บรรทัดที่ 49-52 เมื่อมีการเปลี่ยนแปลง ตำบล เราจะเอาข้อมูลรหัสไปรษณีย์ที่อยู่ data-postcode มาใส่ในช่องรหัสไปรษณีย์</p>
<p>5. สร้างไฟล์ get_districts.php เพื่อดึงข้อมูลอำเภอตามจังหวัดที่เลือกแล้วส่งข้อมูลออกกลับไปเป็น JSON</p>
<figure id="attachment_3586" aria-describedby="caption-attachment-3586" style="width: 2206px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3586" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="2206" height="1630" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04.png 2206w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-300x222.png 300w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-1024x757.png 1024w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-768x567.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-1536x1135.png 1536w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-2048x1513.png 2048w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-04-80x59.png 80w" sizes="auto, (max-width: 2206px) 100vw, 2206px" /><figcaption id="caption-attachment-3586" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p>6. สร้างไฟล์ get_subdistricts.php เพื่อดึงข้อมูลตำบลตามอำเภอที่เลือกแล้วส่งข้อมูลออกกลับไปเป็น JSON</p>
<figure id="attachment_3587" aria-describedby="caption-attachment-3587" style="width: 826px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3587" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-05.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="826" height="345" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-05.png 826w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-05-300x125.png 300w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-05-768x321.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-05-80x33.png 80w" sizes="auto, (max-width: 826px) 100vw, 826px" /><figcaption id="caption-attachment-3587" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p>เพียงเท่านี้เราก็ได้ Multiple Dropdown List แบบหลายชั้นแล้ว เดี่ยวเราลองมาดูผลลัพท์กัน</p>
<figure id="attachment_3588" aria-describedby="caption-attachment-3588" style="width: 961px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="size-full wp-image-3588" src="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-06.png" alt="multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์" width="961" height="778" srcset="https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-06.png 961w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-06-300x243.png 300w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-06-768x622.png 768w, https://www.itoffside.com/wp-content/uploads/2025/03/multiple-dropdown-06-80x65.png 80w" sizes="auto, (max-width: 961px) 100vw, 961px" /><figcaption id="caption-attachment-3588" class="wp-caption-text">multiple dropdown จังหวัด อำเภอ ตำบล รหัสไปรษณีย์</figcaption></figure>
<p>สำหรับ Source code Multiple Dropdown List โดยใช้ PHP, MySQL, Javascript(Jquery) สามารถดาวน์โหลดได้ที่ลิงค์ด้านล่าง<br />
<a href="https://github.com/ipball/multiple_dropdown2025" target="_blank" rel="noopener">ดาวน์โหลด Source Code กดตรงนี้</a></p><p>The post <a href="https://www.itoffside.com/dynamic-dropdown-%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-phpajax/">Dynamic Dropdown หลายชั้นด้วย PHP+Ajax</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/dynamic-dropdown-%e0%b8%ab%e0%b8%a5%e0%b8%b2%e0%b8%a2%e0%b8%8a%e0%b8%b1%e0%b9%89%e0%b8%99%e0%b8%94%e0%b9%89%e0%b8%a7%e0%b8%a2-phpajax/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP Workshop Register+Login ระบบสมัครสมาชิก+Login [Full Course] สอนละเอียด ฟรี!</title>
		<link>https://www.itoffside.com/php-workshop-register-login/</link>
					<comments>https://www.itoffside.com/php-workshop-register-login/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 17 Apr 2024 17:27:57 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php login]]></category>
		<category><![CDATA[php workshop]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[ระบบสมัครสมาชิก]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3513</guid>

					<description><![CDATA[<p>วิดีโอนี้พาสอนการเขียนโปรแกรมเต็มรูปแบบมีระบบ สมัครสมาชิก เข้าสู่ระบบ ตรวจสอบการเข้าสู่ระบบว่า ได้เข้าสู่ระบบหรือไม่ PHP Workshop ทำระบบ Register + Login สอนละเอียด เต็มระบบ พร้อม Sourcecode นำไปดูเป็นตัวอย่าง วิธีการดาวน์โหลด Source code กดติดตาม ช่อง Youtube ช่องนี้&#160;Youtube Bahtsoft ทักไปที่เ...</p>
<p>The post <a href="https://www.itoffside.com/php-workshop-register-login/">PHP Workshop Register+Login ระบบสมัครสมาชิก+Login [Full Course] สอนละเอียด ฟรี!</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2>วิดีโอนี้พาสอนการเขียนโปรแกรมเต็มรูปแบบมีระบบ</h2>
<ol>
<li>สมัครสมาชิก</li>
<li>เข้าสู่ระบบ</li>
<li>ตรวจสอบการเข้าสู่ระบบว่า ได้เข้าสู่ระบบหรือไม่</li>
</ol>
<p><span id="more-3513"></span></p>
<h1>PHP Workshop ทำระบบ Register + Login สอนละเอียด เต็มระบบ</h1>
<h3>พร้อม Sourcecode นำไปดูเป็นตัวอย่าง</h3>
<h3>วิธีการดาวน์โหลด Source code</h3>
<ol>
<li>กดติดตาม ช่อง Youtube ช่องนี้&nbsp;<a title="Youtube" href="https://www.youtube.com/channel/UCzcg3GJMK1gwpEDa24Gfm6A" target="_blank" rel="noopener">Youtube Bahtsoft</a></li>
<li>ทักไปที่เพจ <a href="https://www.facebook.com/itoffside" target="_blank" rel="noopener">https://www.facebook.com/itoffside</a> แจ้งว่า ขอ source code ระบบ Register+Login พร้อม แคปภาพว่า ได้กดติดตามช่อง Youtube แล้ว</li>
</ol>
<h3>สิ่งที่ได้รับจากวิดีโอนี้</h3>
<ol>
<li>การเขียน PHP เชื่อมต่อกับ MySQLi</li>
<li>การเขียน PHP workshop แบบ สมาชิกสามารถ Login, สามารถ Register ได้</li>
<li>การเขียน PHP กับ Session ในการจัดการตรวจสอบการเข้าสู่ระบบ</li>
</ol>
<h3>สารบัญการสอน</h3>
<ol>
<li>สร้างโปรเจ็ค</li>
<li>สร้างฐานข้อมูล</li>
<li>สร้างไฟล์ index.php (โปรไฟล์) ตรวจสอบสิทธิ์การ Login</li>
<li>สร้างหน้า Login</li>
<li>สร้างหน้าสมัครสมาชิก (register)</li>
<li>บันทึกข้อมูลการสมัครสมาชิกลง Database</li>
<li>ทำระบบ Login ตรวจสอบ username/password</li>
<li>ทำหน้าแรก แสดงข้อมูลโปรไฟล์</li>
</ol>
<h3>วิดีโอสอน Full Course ฟรี</h3>
<p><iframe loading="lazy" title="PHP Workshop ทำระบบ Register + Login สอนละเอียด เต็มระบบ [FULL]" width="660" height="371" src="https://www.youtube.com/embed/LjxjrBQuxy0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p><p>The post <a href="https://www.itoffside.com/php-workshop-register-login/">PHP Workshop Register+Login ระบบสมัครสมาชิก+Login [Full Course] สอนละเอียด ฟรี!</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/php-workshop-register-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PHP Workshop Shoppingcart จัดการสินค้า, ตะกร้าสินค้า, สั่งซื้อสินค้า [Full Course] สอนละเอียด ฟรี!</title>
		<link>https://www.itoffside.com/php-workshop-shoppingcart/</link>
					<comments>https://www.itoffside.com/php-workshop-shoppingcart/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Tue, 29 Aug 2023 05:20:01 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php shopping cart]]></category>
		<category><![CDATA[php workshop]]></category>
		<category><![CDATA[php ระบบจัดการสินค้า]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[shopping cart]]></category>
		<category><![CDATA[workshop cart]]></category>
		<category><![CDATA[ระบบตะกร้าสินค้า]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3485</guid>

					<description><![CDATA[<p>วิดีโอสอนเขียนโปรแกรมแบบ WorkShop PHP Shoppingcart ตะกร้าสินค้า วิดีโอนี้พาสอนการเขียนโปรแกรมเต็มรูปแบบมีระบบ 1. จัดการสินค้า เพิ่ม ลบ แก้ไข แสดงรายการสินค้า 2. จัดการตะกร้าสินค้า เพิ่มสินค้าเข้าในตะกร้า, อัพเดทจำนวนสินค้าในตะกร้า, ลบสินค้าออกจากตะกร้า 3. ระบบสั่งซื้อหลังจากหยิบสินค้าใส่ตะกร้าแล้ว ส...</p>
<p>The post <a href="https://www.itoffside.com/php-workshop-shoppingcart/">PHP Workshop Shoppingcart จัดการสินค้า, ตะกร้าสินค้า, สั่งซื้อสินค้า [Full Course] สอนละเอียด ฟรี!</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<h1>วิดีโอสอนเขียนโปรแกรมแบบ WorkShop PHP Shoppingcart ตะกร้าสินค้า</h1>
<h3>วิดีโอนี้พาสอนการเขียนโปรแกรมเต็มรูปแบบมีระบบ</h3>
<p>1. จัดการสินค้า เพิ่ม ลบ แก้ไข แสดงรายการสินค้า<br />
2. จัดการตะกร้าสินค้า เพิ่มสินค้าเข้าในตะกร้า, อัพเดทจำนวนสินค้าในตะกร้า, ลบสินค้าออกจากตะกร้า<br />
3. ระบบสั่งซื้อหลังจากหยิบสินค้าใส่ตะกร้าแล้ว</p>
<h3>สิ่งที่ได้รับจากวิดีโอนี้</h3>
<p>1. การเขียน PHP เชื่อมต่อกับ MySQLi<br />
2. การเขียน PHP workshop แบบ CRUD [Create, Read, Update Delete]<br />
3. การเขียน PHP กับ Session ในการจัดการตะกร้าสินค้า</p>
<p><span id="more-3485"></span></p>
<h3>สารบัญการสอน</h3>
<ol>
<li>Demo ระบบ</li>
<li>สร้างฐานข้อมูล(Database)</li>
<li>สร้างโปรเจ็ค Shoppingcart</li>
<li>สร้างไฟล์ config.php</li>
<li>สร้างหน้า index.php รายการ, เพิ่ม, แก้ไข, ลบ สินค้า</li>
<li>เพิ่มสินค้าเข้าฐานข้อมูล</li>
<li>แสดงรายการสินค้า</li>
<li>แก้ไขสินค้า</li>
<li>ลบสินค้า</li>
<li>สินค้าสำหรับหยิบใส่ตะกร้า</li>
<li>เพิ่มสินค้าลงในตะกร้า</li>
<li>แสดงจำนวนสินค้าตะกร้า</li>
<li>หน้ารายการตะกร้าสินค้า</li>
<li>ลบสินค้าออกจากตะกร้า</li>
<li>อัพเดทจำนวนสินค้าในตะกร้า</li>
<li>หน้าสั่งซื้อสินค้า Checkout</li>
<li>fix error session[cart]</li>
</ol>
<h3>วิดีโอสอน Full Course ฟรี</h3>
<p><iframe loading="lazy" title="PHP Workshop Shoppingcart จัดการสินค้า, ตะกร้าสินค้า, สั่งซื้อสินค้า [Full] สอนละเอียด เต็มระบบ" width="660" height="371" src="https://www.youtube.com/embed/UWaWAjAqPzs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<h3><span style="color: #ff00ff;">หากต้องการ Sourcode สามารถซื้อเพื่อสนับสนุนผู้สอนได้ที่</span></h3>
<h4><span style="color: #ff9900;"><span style="color: #ff0000;"><del>500บาท</del></span> <span style="color: #000000;">โปรลดราคาเหลือเพียง</span> <em>300 บาท</em></span></h4>
<p>inbox เพจ <a href="https://www.facebook.com/itoffside" target="_blank" rel="noopener">https://www.facebook.com/itoffside</a><br />
หรือ ติดต่อที่ไลน์ไอดี @eke8377p (มี @ ข้างหน้าด้วย)</p>
<p><strong>LINE ID:</strong></p>
<p><img loading="lazy" decoding="async" class="" src="https://qr-official.line.me/L/GjDKhMhfT9.png" width="223" height="223"></p><p>The post <a href="https://www.itoffside.com/php-workshop-shoppingcart/">PHP Workshop Shoppingcart จัดการสินค้า, ตะกร้าสินค้า, สั่งซื้อสินค้า [Full Course] สอนละเอียด ฟรี!</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/php-workshop-shoppingcart/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP13 Database กับการใช้งาน Eloquent</title>
		<link>https://www.itoffside.com/laravel-ep13-database-eloquent/</link>
					<comments>https://www.itoffside.com/laravel-ep13-database-eloquent/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 12 Jan 2023 14:34:19 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Eloquent]]></category>
		<category><![CDATA[Eloquent-database]]></category>
		<category><![CDATA[laravel-Eloquent]]></category>
		<category><![CDATA[laravel-Eloquent-database]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php 8]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2909</guid>

					<description><![CDATA[<p>Laravel ใช้ Eloquent ORM เป็นตัวช่วยในการเชื่อมต่อฐานข้อมูล โดย Eloquent จะมีการแปลงข้อมูลในฐานข้อมูลเป็นออบเจกต์ (Object) บนภาษา PHP ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่เชื่อมต่อฐานข้อมูลแบบง่ายขึ้น โดยไม่ต้องเขียน SQL เอง เพื่อใช้งาน Eloquent คุณสามารถสร้างคลาสที่สืบทอดจากคลาส Eloquent และปรับปรุ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep13-database-eloquent/">Laravel – EP13 Database กับการใช้งาน Eloquent</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Laravel ใช้ Eloquent ORM</strong> เป็นตัวช่วยในการเชื่อมต่อฐานข้อมูล โดย <span style="text-decoration: underline;"><strong>Eloquent</strong> </span>จะมีการแปลงข้อมูลในฐานข้อมูลเป็นออบเจกต์ (Object) บนภาษา PHP ซึ่งช่วยให้นักพัฒนาสามารถเขียนโค้ดที่เชื่อมต่อฐานข้อมูลแบบง่ายขึ้น โดยไม่ต้องเขียน SQL เอง</p>
<p>เพื่อใช้งาน <span style="text-decoration: underline;">Eloquent</span> คุณสามารถสร้างคลาสที่สืบทอดจากคลาส <span style="text-decoration: underline;">Eloquent</span> และปรับปรุงข้อมูลตามความต้องการ คลาสนี้จะเรียกว่า &#8220;<strong><span style="text-decoration: underline;">Model</span></strong>&#8221; ซึ่งจะเป็นตัวแทนของตารางในฐานข้อมูลนั่นเอง<span id="more-2909"></span></p>
<p>หากต้องการสร้าง Model สำหรับตาราง &#8220;users&#8221; ของฐานข้อมูล สามารถสร้างไฟล์ &#8220;User.php&#8221; ภายในโฟลเดอร์ &#8220;<span style="color: #3366ff;">app/Models</span>&#8221; และสร้างไฟล์ User.php แล้วเขียนคลาสดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    //
}</pre><p>หลังจากนั้น ให้ไฟล์ใน Controller สามารถเรียกใช้งาน Eloquent เพื่อดึงข้อมูลจากตาราง &#8220;users&#8221; ของฐานข้อมูลได้ดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use App\Models\User;
use Illuminate\Http\Request;

class UserController extends Controller
{
    public function index()
    {
        $users = User::all();
        return view('users.index', compact('users'));
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถใช้งานฟังก์ชัน all เพื่อดึงข้อมูลทั้งหมดจากตาราง &#8220;users&#8221; และนำข้อมูลทั้งหมดนั้นไปแสดงผลบนหน้าจอผ่านทางเทมเพลท (view) ไฟล์<span style="color: #3366ff;"> resources/views/users/index.blade.php</span></p>
<p>น่าจะเป็นสิ่งที่มีประโยชน์มากสำหรับนักพัฒนาเว็บแอพพลิเคชัน เพราะมันช่วยให้สร้างโค้ดที่ลดข้อผิดพลาดลง โดยไม่ต้องเขียนคำส่ง SQL ของฐานข้อมูลขึ้นมาเอง นอกจากนี้ Eloquent ยังมีการสนับสนุนการใช้งานฟังก์ชันการค้นหาและการเรียงลำดับข้อมูล ทำให้คุณสามารถสร้างโค้ดที่มีประสิทธิภาพสูงขึ้นได้อีกด้วย</p>
<p>นอกจากนี้ Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลระหว่างตารางต่าง ๆ หรือเรียกว่า Relation ซึ่งช่วยให้สามารถสร้างโค้ดที่สามารถเข้าถึงข้อมูลที่เกี่ยวข้องกันได้ง่ายขึ้น ตัวอย่างเช่น หากตาราง &#8220;users&#8221; มีความสัมพันธ์กับตาราง &#8220;orders&#8221; ซึ่งเป็น 1-N ดังนั้นสามารถสร้างฟังก์ชันที่เรียกว่า &#8220;orders&#8221; ใน Model ของ &#8220;User&#8221; เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ดังนี้ โดยให้เข้าไปแก้ไข code ที่ไฟล์ <span style="color: #3366ff;">app\Models\User.php</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function orders()
    {
        return $this-&gt;hasMany(Order::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน orders เพื่อเข้าถึงข้อมูลการสั่งซื้อของผู้ใช้นั้นๆ ได้ดังนี้ ใน Controller</p><pre class="crayon-plain-tag">$user = User::find(1);
$orders = $user-&gt;orders;</pre><p>Eloquent ยังมีการสนับสนุนการทำงานร่วมกับความสัมพันธ์ของข้อมูลอื่น ๆ เช่น ความสัมพันธ์ 1-1, N-1 และ N-N เพื่ออธิบายความสัมพันธ์นี้ในรูปแบบของคลาส สามารถใช้คำสั่งต่าง ๆ ของ Eloquent เพื่อสร้างความสัมพันธ์นี้ได้ ตัวอย่างเช่น การสร้างความสัมพันธ์ 1-1 ระหว่าง Model ของ &#8220;User&#8221; กับ Model ของ &#8220;Profile&#8221; คุณ สามารถเขียนโค้ดดังนี้ ที่ไฟล์ <span style="color: #3366ff;">app\Models\User.php</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function profile()
    {
        return $this-&gt;hasOne(Profile::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน profile เพื่อเข้าถึงข้อมูลของโปรไฟล์ของผู้ใช้นั้นๆ ได้ดังนี้ใน <strong>Controller</strong></p><pre class="crayon-plain-tag">$user = User::find(1);
$profile = $user-&gt;profile;</pre><p>Eloquent ยังสามารถช่วยให้คุณสร้างความสัมพันธ์ของข้อมูลแบบ N-N ได้ ด้วยการใช้คำสั่ง belongsToMany แทน ตัวอย่างเช่น การสร้างความสัมพันธ์ N-N ระหว่าง Model ของ &#8220;User&#8221; กับ Model ของ &#8220;Role&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function roles()
    {
        return $this-&gt;belongsToMany(Role::class);
    }
}</pre><p>จากตัวอย่างข้างต้น สามารถเรียกใช้งานฟังก์ชัน roles เพื่อเข้าถึงข้อมูลของบทบาทของผู้ใช้นั้นๆ ได้ดังนี้ ใน <strong>Controller</strong></p><pre class="crayon-plain-tag">$user = User::find(1);
$roles = $user-&gt;roles;</pre><p></p><pre class="crayon-plain-tag">$user = User::find(1);
$roles = $user-&gt;roles;</pre><p>นอกจากนี้ ยังสามารถเรียกใช้งานฟังก์ชันต่าง ๆ ของ Eloquent เพื่อจัดการข้อมูลของตารางอื่นๆ ได้อย่าง save, update, delete หรือการเรียกดูข้อมูลแบบกำหนดเงื่อนไขได้ ตัวอย่างเช่น การอัพเดทข้อมูลของผู้ใช้ที่มี ID เท่ากับ 1 สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$user = User::find(1);
$user-&gt;name = 'John';
$user-&gt;save();</pre><p>นอกจากนี้ ยังสามารถเรียกใช้งานคำสั่ง update ของ Eloquent เพื่ออัพเดทข้อมูลทีละหลายฟิลด์พร้อมๆ กันได้ เช่น</p><pre class="crayon-plain-tag">User::where('id', 1)-&gt;update([
    'name' =&gt; 'John',
    'email' =&gt; 'john@example.com',
]);</pre><p>นอกจากนี้ยังสามารถเรียกใช้งานคำสั่ง delete ของ Eloquent เพื่อลบข้อมูลทีละหลายแถวพร้อมๆ กันได้ เช่น</p><pre class="crayon-plain-tag">User::where('id', '&gt;', 1)-&gt;delete();</pre><p>เพื่อที่จะเข้าถึงข้อมูลแบบกำหนดเงื่อนไข สามารถใช้ฟังก์ชัน where ของ Eloquent ซึ่งจะสร้างคำสั่ง WHERE ของ SQL สำหรับการค้นหาข้อมูลได้ ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::where('email', 'john@example.com')-&gt;get();</pre><p>สามารถปรับปรุงฟังก์ชัน where เพิ่มเติมโดยฟังก์ชันอื่น ๆ เช่น orWhere หรือ whereIn ซึ่งจะช่วยค้นหาข้อมูลตามเงื่อนไขที่กำหนดเพิ่มเติม ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; หรือ &#8220;jane@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::where('email', 'john@example.com')
    -&gt;orWhere('email', 'jane@example.com')
    -&gt;get();</pre><p>นอกจากนี้ ยังสามารถใช้ฟังก์ชัน whereIn เพื่อค้นหาข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนอยู่ในรายการที่กำหนด ตัวอย่างเช่น การเรียกดูข้อมูลของผู้ใช้ที่มีอีเมลล์ลงทะเบียนเป็น &#8220;john@example.com&#8221; หรือ &#8220;jane@example.com&#8221; สามารถเขียนโค้ดดังนี้</p><pre class="crayon-plain-tag">$users = User::whereIn('email', ['john@example.com', 'jane@example.com'])-&gt;get();</pre><p>Eloquent ยังมีฟังก์ชันอื่น ๆ ที่สามารถใช้งานเพื่อค้นหาข้อมูลแบบกำหนดเงื่อนไขได้ เช่น whereBetween หรือ whereNotIn สามารถศึกษาเพิ่มเติมได้จากเอกสารของ <strong>Laravel</strong></p>
<p>การใช้งาน <strong>Eloquent</strong> นอกจากทำให้นักพัฒนาสะดวกสบายยังทำให้งานโปรเจ็คต่างๆเสร็จอย่างรวดเร็ว อีกทั้งยัง code ยังเป็นระเบียนและสามารถต่อยอดแก้ไขได้ในอนาคต ผู้เขียนหวังว่าบทความนี้จะเป็นประโยชน์ต่อผู้อ่าน หากมีข้อสงสัยตรงไหนสอบถามใน Comment ได้เลยครับ</p>
<p>ขอบคุณครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep13-database-eloquent/">Laravel – EP13 Database กับการใช้งาน Eloquent</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep13-database-eloquent/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</title>
		<link>https://www.itoffside.com/laravel-validation/</link>
					<comments>https://www.itoffside.com/laravel-validation/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Wed, 03 Aug 2022 08:03:58 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Laravel Validation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[Validation]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3363</guid>

					<description><![CDATA[<p>สวัสดีครับ วันนี้ผมมาแนะนำการใช้งาน Validation ของ Laravel ซึ่งใช้งานได้ง่ายมากๆ โดยประโยชน์ของ Laravel validation นั้นเอาไว้สำหรับตรวจสอบข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ ก่อนที่จะบันทึกลงฐานข้อมูล(Database) ทำให้เราสามารถจัดเก็บข้อมูลถูกต้องตามความต้องการเช่น เราต้องการเก็บเบอร์โทรศัพท์ลงฐาน...</p>
<p>The post <a href="https://www.itoffside.com/laravel-validation/">Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>สวัสดีครับ วันนี้ผมมาแนะนำการใช้งาน <strong>Validation ของ Laravel</strong> ซึ่งใช้งานได้ง่ายมากๆ โดยประโยชน์ของ <strong>Laravel validation</strong> นั้นเอาไว้สำหรับตรวจสอบข้อมูลว่าถูกต้องตามที่เราต้องการหรือไม่ ก่อนที่จะบันทึกลงฐานข้อมูล(Database) ทำให้เราสามารถจัดเก็บข้อมูลถูกต้องตามความต้องการเช่น เราต้องการเก็บเบอร์โทรศัพท์ลงฐานข้อมูล ถ้าเราไม่ได้ใช้ <strong>Laravel validation</strong> ข้อมูลที่ผู้ใช้งานระบบจะกรอกมาจะเป็น 081-1448181 หรือ 02-2330-343 หรือ 099-234-2421 ซึ่งจริงๆแล้วเราไม่ได้ต้องการ ขีดหรือ (-) เลย เราแค่ต้องการให้ผู้ใช้งานกรอกแค่ตัวเลข เช่น 0811448181 เท่านั้น ดังนั้นเราจึงจำเป็นต้องใช้ Laravel validation นั้นเอง<span id="more-3363"></span></p>
<p><strong>Laravel Validation</strong> เป็น แพคเก็จที่ติดมาตอนติดตั้ง Laravel เลยเราไม่ต้องไปติดตั้งเพิ่ม ในการเรียนรู้การใช้งาน <strong>Laravel Validation</strong> นั้นเรียนรู้ง่าย ไม่ซับซ้อน ใช้งานไม่ยาก เพียงเรากำหนดเงื่อนไข ที่ต้องการ เวลา ผู้ใช้กรอกข้อมูลแล้ว submit form มา จังหวะนี้ ที่ Validation ทำการตรวจสอบ ถ้าหากว่าข้อมูลที่ตรวจสอบไม่ถูกต้อง ก็จะส่ง ข้อความมาหาผู้ใช้ แสดงผลที่หน้าฟอร์มทันที</p>
<h3>เริ่มต้นใช้งาน โดยเริ่มจากทำ ตัวอย่างง่ายๆ ระบบ เพิ่มหนังสือ ครับ</h3>
<h4>#กำหนด Routes (เส้นทาง)</h4>
<p>เริ่มแรก ให้เรา กำหนด routes ที่ <em>routes/web.php</em></p><pre class="crayon-plain-tag">use App\Http\Controllers\BookController;
 
Route::get('/book/create', [BookController::class, 'create']);
Route::post('/book', [BookController::class, 'store']);
Route::get('/book/success', [BookController::class, 'saveSuccess']);</pre><p></p>
<h4>#สร้าง Validation</h4>
<p>ให้เราทำการสร้าง validation สำหรับตรวจสอบข้อมูลโดนใช้คำสั่งใน command<br />
<span style="color: #ff00ff;">php artisan make:request BookSave</span><br />
หรือจะสร้างไฟล์ใน App/http/requests/BookSave.php ก็ได้</p>
<p><strong>นำโค๊ดด้านล่างไปวางไว้ในไฟล์ BookSave.php</strong></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class BookSave extends FormRequest
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'firstname' =&gt; 'required',
            'lastname' =&gt; 'required',
            'username' =&gt; 'required',
            'email' =&gt; 'required|email',
            'tel' =&gt; 'required|numeric|digits_between:8,15',
        ];
    }

    public function messages()
    {
        return [
            'firstname.required' =&gt; 'โปรดระบุชื่อจริง',
            'lastname.required' =&gt; 'โปรดระบุนามสกุล',
            'username.required' =&gt; 'โปรดระบุชื่อผู้ใช้',
            'email.required' =&gt; 'โปรดระบุอีเมล์',
            'email.email' =&gt; 'รูปแบบอีเมล์ไม่ถูกต้อง',
            'tel.required' =&gt; 'โปรดระบุเบอร์โทร',
            'tel.numeric' =&gt; 'ระบุเฉพาะตัวเลขเท่านั้น',
            'tel.digits_between' =&gt; 'เบอร์โทรต้องมี 8 - 15 ตัว',
        ];
    }
}</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัดที่ 14-17</strong> กรณีที่ไม่ต้องการตรวจสอบสิทธิ์การเข้าถึงเช่นผู้ใช้คนนี้สามารถ บันทึกข้อมูล หรือแก้ไขข้อมูลได้ ให้เราคืนค่าเป็น true ตามตัวอย่างได้เลย<br />
<strong>บรรทัดที่ 24-33</strong> เป็นการกำหนดการตรวจสอบข้อมูลที่ส่งมาจากฟอร์ม<br />
<strong>บรรทัดที่ 27</strong> ตรวจสอบว่าชื่อจริง โดยอ้างอิงจาก หน้าฟอร์ม name=&#8221;firstname&#8221; ห้ามว่าง<br />
<strong>บรรทัดที่ 28</strong> ตรวจสอบนามสกุล ห้ามว่าง อ้างอิงหลักการเดียวกับบรรทัดบน เช่นกันคือ lastname<br />
<strong>บรรทัดที่ 29</strong> ตรวจสอบ username ห้ามว่าง<br />
<strong>บรรทัดที่ 30</strong> ตรวจสอบ email ห้ามว่างและ รูปแบบต้องเป็นอีเมล์ เช่น sample@mail.com หรือ test@hotmail.com<br />
<strong>บรรทัดที่ 31</strong> ตรวจสอบ เบอร์โทร ห้ามว่าง, ต้องเป็นตัวเลขเท่านั้น และมีจำนวนตัวอักษรตั้งแต่ 8 ตัวถึง 15 ตัว</p>
<p><strong>บรรทัดที่ 35-47</strong> เป็นการกำหนดข้อความแสดงผลถ้าตรวจสอบแล้วไม่ผ่าน ตรงนี้ถ้าเราไม่มีฟังก์ชั่น messages() นี้ ระบบจะไปเอาข้อความ Default จากไฟล์ resources/lang/en/validation.php หรือ resources/lang/xx/validation.php ตาม local ที่เราตั้งค่าครับ <span style="color: #808080;">(ปล. เราสามารถ แก้ไขไฟล์แสดงข้อความ error ได้เหมือนกัน)</span></p>
<p>เราสามารถดู rule เพิ่มเติมนอกจากตัวอย่าง ได้ซึ่งมีให้ใช้งานในหลากหลายงานเยอะมาก<br />
<a href="https://laravel.com/docs/9.x/validation#available-validation-rules" target="_blank" rel="noopener">https://laravel.com/docs/9.x/validation#available-validation-rules</a></p>
<h4>#สร้าง Controller</h4>
<p>ให้เราทำการสร้าง controller ชื่อ BookController จะสร้างโดยใช้คำสั่งใน command<br />
<span style="color: #ff00ff;">php artisan make:controller BookController</span><br />
หรือจะสร้างไฟล์ใน App/http/controllers/BookController.php ก็ได้เช่นกัน<br />
<strong>แล้วให้นำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use App\Http\Requests\BookSave;

class BookController extends Controller
{
    public function create()
    {
        return view('book.create');
    }

    public function store(BookSave $request)
    {
        return redirect('/book/success');
    }

    public function saveSuccess()
    {
        return view('book.save_success');
    }
}</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัด 5</strong> เรียกใช้ BookSave Validate โดยใช้คำสั่ง use App\Http\Requests\BookSave<br />
<strong>บรรทัดที่ 9-12</strong> ฟังก์ชั่น create() แสดงผลหน้าฟอร์ม<br />
<strong>บรรทัดที่ 14-17</strong> ฟังก์ชั่น store() บันทึกข้อมูลฟอร์ม เมื่อฟอร์ม Submit มา จะผ่าน BookSave ก่อนเข้า Controller Method<br />
<strong>บรรทัดที่ 19-22</strong> ฟังก์ชั่น saveSuccess() แสดงหน้าจอเมื่อบันทึกข้อมูลสำเร็จ</p>
<h4>#สร้าง View</h4>
<p>&#8211; หน้าจอฟอร์ม create.blade.php<br />
ให้เราสร้างไฟล์ view ที่ resources/views/book/create.blade.php (ถ้าไม่มีโฟล์เดอร์ book ให้สร้างขึ้นมาเลยครับ) <strong>แล้วนำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;Shop Book&lt;/title&gt;
    &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"&gt;
&lt;/head&gt;

&lt;body class="bg-light"&gt;
    &lt;div class="container" style="width: 960px;"&gt;
        &lt;main&gt;
            &lt;div class="py-5 text-center"&gt;
                &lt;img src="https://laravel.com/img/logotype.min.svg"&gt;
                &lt;h2&gt;Checkout form&lt;/h2&gt;
                &lt;p class="lead"&gt;ระบบสั่งซื้อสินค้าออนไลน์ ง่ายดายเพียงปลายนิ้ว&lt;/p&gt;
            &lt;/div&gt;

            &lt;div class="row g-5"&gt;
                &lt;div class="col-md-5 col-lg-4 order-md-last"&gt;
                    &lt;h4 class="d-flex justify-content-between align-items-center mb-3"&gt;
                        &lt;span class="text-primary"&gt;Your cart&lt;/span&gt;
                        &lt;span class="badge bg-primary rounded-pill"&gt;3&lt;/span&gt;
                    &lt;/h4&gt;
                    &lt;ul class="list-group mb-3"&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;ขนมปังใส้มายองเนส&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;สุดยอดขนมปังแสนอร่อย อิ่มแน่นอน&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿12&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;นมเปรี้ยว ตราสุขใจ&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;นมเปรี้ยวขนาด 100ML อร่อยเต็มๆ&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿10&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between lh-sm"&gt;
                            &lt;div&gt;
                                &lt;h6 class="my-0"&gt;ยาสีฟัน มายดรีม&lt;/h6&gt;
                                &lt;small class="text-muted"&gt;ยาสีฟัน ฟันขาวสดชื่น&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-muted"&gt;฿20&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between bg-light"&gt;
                            &lt;div class="text-success"&gt;
                                &lt;h6 class="my-0"&gt;Promo code&lt;/h6&gt;
                                &lt;small&gt;ส่วนลดพิเศษ&lt;/small&gt;
                            &lt;/div&gt;
                            &lt;span class="text-success"&gt;−฿5&lt;/span&gt;
                        &lt;/li&gt;
                        &lt;li class="list-group-item d-flex justify-content-between"&gt;
                            &lt;span&gt;Total (USD)&lt;/span&gt;
                            &lt;strong&gt;฿37&lt;/strong&gt;
                        &lt;/li&gt;
                    &lt;/ul&gt;

                    &lt;form class="card p-2"&gt;
                        &lt;div class="input-group"&gt;
                            &lt;input type="text" class="form-control" placeholder="Promo code"&gt;
                            &lt;button type="submit" class="btn btn-secondary"&gt;Redeem&lt;/button&gt;
                        &lt;/div&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
                &lt;div class="col-md-7 col-lg-8"&gt;
                    &lt;h4 class="mb-3"&gt;Billing address&lt;/h4&gt;
                    &lt;form method="post" action="{{ url('/book') }}"&gt;
                        @csrf
                        &lt;div class="row g-3"&gt;
                            &lt;div class="col-sm-6"&gt;
                                &lt;label class="form-label"&gt;ชื่อ&lt;/label&gt;
                                &lt;input type="text" name="firstname" class="form-control @error('firstname') is-invalid @enderror" value="{{ old('firstname') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('firstname') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-sm-6"&gt;
                                &lt;label class="form-label"&gt;นามสกุล&lt;/label&gt;
                                &lt;input type="text" name="lastname" class="form-control @error('lastname') is-invalid @enderror" value="{{ old('lastname') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('lastname') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-12"&gt;
                                &lt;label for="username" class="form-label"&gt;Username&lt;/label&gt;
                                &lt;div class="input-group has-validation"&gt;
                                    &lt;span class="input-group-text"&gt;@&lt;/span&gt;
                                    &lt;input type="text" name="username" class="form-control @error('username') is-invalid @enderror" value="{{ old('username') }}"&gt;
                                    &lt;div class="invalid-feedback"&gt;
                                        {{ $errors-&gt;first('username') }}
                                    &lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-6"&gt;
                                &lt;label for="email" class="form-label"&gt;Email&lt;/label&gt;
                                &lt;input type="text" name="email" class="form-control @error('email') is-invalid @enderror" placeholder="you@example.com" value="{{ old('email') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('email') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-6"&gt;
                                &lt;label for="zip" class="form-label"&gt;เบอร์โทร&lt;/label&gt;
                                &lt;input type="text" name="tel" class="form-control @error('tel') is-invalid @enderror" value="{{ old('tel') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    {{ $errors-&gt;first('tel') }}
                                &lt;/div&gt;
                            &lt;/div&gt;

                            &lt;div class="col-12"&gt;
                                &lt;label for="address" class="form-label"&gt;ที่อยู่&lt;/label&gt;
                                &lt;input type="text" name="address" class="form-control" placeholder="1234 หมู่ 9 ต.บางรัก อ.บางประกง กรุงเทพฯ 11220" value="{{ old('address') }}"&gt;
                                &lt;div class="invalid-feedback"&gt;
                                    Please enter your shipping address.
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;

                        &lt;hr class="my-4"&gt;

                        &lt;button class="w-100 btn btn-primary btn-lg" type="submit"&gt;Continue to checkout&lt;/button&gt;
                    &lt;/form&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/main&gt;

        &lt;footer class="my-5 pt-5 text-muted text-center text-small"&gt;
            &lt;p class="mb-1"&gt;&amp;copy; 2017–2022 Company Name&lt;/p&gt;
            &lt;ul class="list-inline"&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Privacy&lt;/a&gt;&lt;/li&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Terms&lt;/a&gt;&lt;/li&gt;
                &lt;li class="list-inline-item"&gt;&lt;a href="#"&gt;Support&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/footer&gt;
    &lt;/div&gt;
    
&lt;/body&gt;

&lt;/html&gt;</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
<strong>บรรทัดที่ 72-130</strong> เป็นฟอร์ม ที่มีช่องกรอกข้อมูล<br />
จะอธิบายที่ช่อง firstname ที่บรรทัด 76 โดยสิ่งที่อ้างอิงกันคือ name=&#8221;firstname&#8221; จะถูกไปอ้างอิงในไฟล์ BookSave.php ตอนทำ rule นั้นเอง และ เราได้กำหนด class is-invalid ให้กับช่องนี้กรณีมี error ตรวจสอบไม่ผ่าน ให้มี is-invalid (class ที่แสดงกรอบสีแดงพร้อม ไอคอนตกใจ) และ แสดงข้อความหลักจากกด submit ไปแล้วเพื่อไม่ให้ค่าหายไปโดยใช้ old ซึ่งเป็น session แบบ flash ที่ใช้เพียงครั้งเดียว</p>
<p>ส่วนช่องอื่นๆ ก็ใช้หลักการเดียว เพียงแต่เปลี่ยนชื่อฟิล์ด แค่นั้นครับ</p>
<p>&#8211; หน้าจอแสดงผลลัพท์ save_success.blade.php<br />
ให้เราสร้างไฟล์ view ที่ resources/views/book/save_success.blade.php แล้ว<strong>นำโค๊ดด้านล่างไปวางไว้</strong></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;

&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0"&gt;
    &lt;meta http-equiv="X-UA-Compatible" content="ie=edge"&gt;
    &lt;title&gt;Shop Book&lt;/title&gt;
    &lt;link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"&gt;
&lt;/head&gt;

&lt;body class="bg-light"&gt;
    &lt;div class="container" style="width: 960px;"&gt;
        &lt;div class="text-center"&gt;
            &lt;h1 class="mt-5"&gt;บันทึกข้อมูลสำเร็จ&lt;/h1&gt;
            &lt;a href="{{ url('/book/create') }}" class="btn btn-primary" role="button"&gt;กลับไปหน้าฟอร์ม&lt;/a&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/body&gt;

&lt;/html&gt;</pre><p><span style="color: #ff6600;"><strong>อธิบายโค๊ด</strong></span><br />
โค๊ดส่วนนี้การทำงานคือแสดงผลลัพท์หน้าจออย่างเดียว ให้ผู้ใช้เห็นว่า บันทึกข้อมูลผ่านการตรวจสอบแล้ว</p>
<p>มาดูผลลัพท์กันครับ</p>
<figure id="attachment_3371" aria-describedby="caption-attachment-3371" style="width: 660px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" class="wp-image-3371 size-large" src="https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1024x617.png" alt="" width="660" height="398" srcset="https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1024x617.png 1024w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-300x181.png 300w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-768x463.png 768w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-1536x926.png 1536w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-2048x1235.png 2048w, https://www.itoffside.com/wp-content/uploads/2022/08/Screen-Shot-2565-08-03-at-14.49.33-80x48.png 80w" sizes="auto, (max-width: 660px) 100vw, 660px" /><figcaption id="caption-attachment-3371" class="wp-caption-text">Laravel validation ตรวจสอบข้อมูลก่อนบันทึกอย่างง่าย</figcaption></figure>
<p>สำหรับการใช้งาน Laravel validation ก็ประมาณนี้ ซึ่งจริงๆมี rule ที่เยอะแยะมากและช่วยเราทำให้เราลดเวลาในการเขียนเองเยอะไปมาก เดี่ยวไว้คราวหน้าจะมาแนะนำทริปใหม่ๆ เพิ่มเติม สำหรับบทความนี้ก็มีเพียงเท่านี้ ขอบคุณครับ</p>
<p><strong>หากต้องการดาวน์โหลด source code Laravel Validation ของตัวอย่างนี้ทั้งหมดสามารถ inbox มาขอได้ที่เพจ</strong><br />
<a href="https://www.facebook.com/itoffside" target="_blank" rel="noopener">https://www.facebook.com/itoffside</a><br />
กติกาคือ เพียงแค่กดไลท์เพจ แล้วแคปเจอร์กดไลท์ แล้วส่ง inbox มาหาเราทางเราจะส่งลิงค์ดาวน์โหลดไปให้</p><p>The post <a href="https://www.itoffside.com/laravel-validation/">Laravel การตรวจสอบข้อมูลก่อนบันทึกด้วย Validation</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-validation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel WorkShop ระบบ Blog และ Login</title>
		<link>https://www.itoffside.com/laravel-workshop-blog-and-login/</link>
					<comments>https://www.itoffside.com/laravel-workshop-blog-and-login/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Thu, 31 Mar 2022 21:56:48 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[MySQLi]]></category>
		<category><![CDATA[pagination]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[PHP Framework]]></category>
		<category><![CDATA[workshop]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=3316</guid>

					<description><![CDATA[<p>ระบบจัดการ Blog สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ workshop laravel อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย laravel ว่าเขียนประมาณไหนบ้าง พาใช้งาน Laravel ผ่าน Workshop Blog/Login เพื่อนๆจะได้รู้จักกับ กา...</p>
<p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>ระบบจัดการ Blog</strong> สามารถ เพิ่ม แก้ไข ลบ และแสดงรายการ ได้ มีการตรวจสอบการกรอกข้อมูล และมีระบบยืนยันตัวตนผ่านการล๊อกอิน(Login) เป็นระบบ <strong>workshop laravel</strong> อย่างง่ายๆ ให้ผู้อ่านผู้ชม ได้เห็นการเขียนโปรแกรมด้วย <strong>laravel</strong> ว่าเขียนประมาณไหนบ้าง</p>
<p><span class="style-scope yt-formatted-string" dir="auto">พาใช้งาน <strong>Laravel</strong> ผ่าน <strong>Workshop Blog/Login</strong> เพื่อนๆจะได้รู้จักกับ</span></p>
<ul>
<li><span class="style-scope yt-formatted-string" dir="auto">การสร้าง <strong>Controller, Model, View</strong> &#8211; การกำหนด Route ของ Web (GET, POST, PUT, DELETE)</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Migrate</strong> ของ database</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Middleware</strong> และการใช้งาน middleware ผ่าน <strong>Route</strong></span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ Authen login แบบ Manual</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>CRUD</strong> ของ Blog</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Paginate</strong> แบ่งหน้า</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Validate</strong> form</span></li>
<li><span class="style-scope yt-formatted-string" dir="auto">การทำ <strong>Relation</strong> ของ ORM (One to Many)</span></li>
</ul>
<p><span id="more-3316"></span></p>
<p>วิดีโอประกอบการสอน workshop</p>
<p><iframe loading="lazy" title="Laravel Workshop ระบบ Blog และ Login" width="660" height="371" src="https://www.youtube.com/embed/wA75lGFF9E8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
<p><span class="style-scope yt-formatted-string" dir="auto">ดาวน์โหลด Sourcecode </span><a class="yt-simple-endpoint style-scope yt-formatted-string" dir="auto" spellcheck="false" href="https://github.com/ipball/Laravel-Blog" target="_blank" rel="nofollow noopener">https://github.com/ipball/Laravel-Blog</a></p><p>The post <a href="https://www.itoffside.com/laravel-workshop-blog-and-login/">Laravel WorkShop ระบบ Blog และ Login</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-workshop-blog-and-login/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Laravel &#8211; EP11 การใช้งาน Model</title>
		<link>https://www.itoffside.com/laravel-ep11-model/</link>
					<comments>https://www.itoffside.com/laravel-ep11-model/#respond</comments>
		
		<dc:creator><![CDATA[Onmobile]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 15:10:32 +0000</pubDate>
				<category><![CDATA[Laravel]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[laravel model]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[php5]]></category>
		<category><![CDATA[php7]]></category>
		<category><![CDATA[สอน laravel]]></category>
		<category><![CDATA[สอน model laravel]]></category>
		<guid isPermaLink="false">https://www.itoffside.com/?p=2902</guid>

					<description><![CDATA[<p>สำหรับ Model ใน Laravel มีการใช้ Eloquent ORM ที่มาพร้อมกับ Laravel ซึ่งใช้งาน ActiveRecord ที่ทำให้เราเขียนโค๊ดเป็นระเบียบสวยงามและเรียบง่าย ในแต่ละตารางฐานข้อมูลมี &#8220;Model&#8221; ที่เป็นแบบจำลองให้เราสามารถทำงานกับฐานข้อมูล บนการเขียนโค๊ดได้ เปรียบเทียบง่ายๆเช่นเรามี ตาราง products, customer ...</p>
<p>The post <a href="https://www.itoffside.com/laravel-ep11-model/">Laravel – EP11 การใช้งาน Model</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>สำหรับ <strong>Model</strong> ใน Laravel มีการใช้ <strong>Eloquent ORM</strong> ที่มาพร้อมกับ Laravel ซึ่งใช้งาน <strong>ActiveRecord</strong> ที่ทำให้เราเขียนโค๊ดเป็นระเบียบสวยงามและเรียบง่าย ในแต่ละตารางฐานข้อมูลมี &#8220;Model&#8221; ที่เป็นแบบจำลองให้เราสามารถทำงานกับฐานข้อมูล บนการเขียนโค๊ดได้ เปรียบเทียบง่ายๆเช่นเรามี ตาราง products, customer เราก็จะมี <span style="color: #333399;">Model Product.php, Customer.php</span> เป็นต้น<span id="more-2902"></span></p>
<p>ก่อนเริ่มสร้าง Model เราต้องแน่ใจก่อนว่าเรามีการเชื่อมต่อฐานข้อมูลแล้ว วิธีการตรวจสอบสามารถเข้าไปตั้งค่าที่ ไฟล์ .env ดังนี้</p><pre class="crayon-plain-tag">DB_DATABASE=myblog
DB_USERNAME=root
DB_PASSWORD=mypassword</pre><p>Model เวลาเราสร้างแล้วไฟล์จะไปอยู่ที่ App ซึ่งเราสามารถนำไปไว้ที่ไหนก็ได้ แต่ในตัวอย่าง และคำแนะนำของผมผมจะแนะนำให้เรานำไฟล์ Model ไปไว้ที่ App\Models และวิธีการสร้าง Model ให้เราเปิด Command line มาแล้ว ให้พิมพ์คำสั่ง ตามโค๊ดด้านล่าง</p><pre class="crayon-plain-tag">php artisan make:model Models/Flight</pre><p>เรามาเข้ามาดูไฟล์ที่เราสร้างในโฟล์เดอร์ <span style="color: #333399;">App/Models/Flight.php</span><br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3233" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02.jpg" alt="" width="506" height="233" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02.jpg 506w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02-300x138.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-13-02-80x37.jpg 80w" sizes="auto, (max-width: 506px) 100vw, 506px" /></p>
<p>Laravel artisan ยังมีความสามารถในการสร้างไฟล์ migration ได้อีกด้วย (สำหรับ migration คือการเขียนโค๊ด PHP สร้างตารางในฐานข้อมูล) โดยคำสั่งให้เรา เติมคำ &#8211;migration หรือ -m ต่อท้าย ลองดูตัวอย่างครับ</p><pre class="crayon-plain-tag">php artisan make:model Models/Flight -m</pre><p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3234" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20.jpg" alt="" width="598" height="101" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20.jpg 598w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20-300x51.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-17-20-80x14.jpg 80w" sizes="auto, (max-width: 598px) 100vw, 598px" /></p>
<p>หลังจากใช้คำสั่งสร้าง Model พร้อม Migration แล้วไฟล์ Migration จะอยู่ในโฟล์เดอร์ <span style="color: #333399;">database/migrations</span></p>
<p>ให้เรากลับไปเปิดไฟล์ <span style="color: #333399;">XXX_XX_XX_XXXXX_create_flights_table.php</span> ในโฟล์เดอร์ <span style="color: #0000ff;">database/migrations</span> แล้วเพิ่มเติมโค๊ดลงไปแบบตัวอย่างด้านล่าง</p><pre class="crayon-plain-tag">&lt;?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreateFlightsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('flights', function (Blueprint $table) {
            $table-&gt;id();
            $table-&gt;string('name')-&gt;nuallable();
            $table-&gt;string('detail')-&gt;nuallable();
            $table-&gt;timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('flights');
    }
}</pre><p>หลังจากนั้น run คำสั่ง</p><pre class="crayon-plain-tag">php artisan migrate</pre><p>ให้คำสั่งไป excute โค๊ดให้สร้างตาราง หลังจาก run แล้วเราจะได้ผลลัพท์คือได้ตาราง flights มา<br />
<img loading="lazy" decoding="async" class="alignnone size-full wp-image-3236" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50.jpg" alt="" width="578" height="178" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50.jpg 578w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50-300x92.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-41-50-80x25.jpg 80w" sizes="auto, (max-width: 578px) 100vw, 578px" /></p>
<p><img loading="lazy" decoding="async" class="alignnone size-full wp-image-3237" src="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38.jpg" alt="" width="345" height="179" srcset="https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38.jpg 345w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38-300x156.jpg 300w, https://www.itoffside.com/wp-content/uploads/2018/11/2020-04-13_21-42-38-80x42.jpg 80w" sizes="auto, (max-width: 345px) 100vw, 345px" /></p>
<p>ต่อไปเราจะมาดู Model กันต่อว่ามีอะไรบ้าง</p>
<h3>Table Name</h3>
<p>เวลาเราสร้าง Model มานั้น Laravel จะ จดจำชื่อ Model กับ ชื่อตารางเป็นอันเดียวกันเช่น Model Flight ตารางในฐานข้อมูลเป็น flights แต่ที่นี้ถ้าชื่อตารางเป็นชื่ออื่นเช่น my_flights ละ ต้องทำแบบไหน วิธีการคือให้ใส่คำสั่ง <span style="color: #0000ff;">protected $table = &#8216;my_flights&#8217;;</span> ลงไปใน Model เดี่ยวมาดู โค๊ดแบบเต็มกัน</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The table associated with the model.
     *
     * @var string
     */
    protected $table = 'my_flights';
}</pre><p></p>
<h3>Primary Key</h3>
<p>โดย Model จะจดจำ Primary key ของตารางเป็น id หากเราใช้ชื่อ flight_id เป็น Primary key สามารถเปลี่ยนได้ โดยเขียนคำสั่ง <span style="color: #0000ff;">protected $primaryKey = &#8216;flight_id&#8217;;</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * The primary key associated with the table.
     *
     * @var string
     */
    protected $primaryKey = 'flight_id';
}</pre><p></p>
<h3>Timestamps</h3>
<p>ค่าเริ่มต้นสำหรับ การบันทึกเวลาอัตโนมัติ ใน Model นั้นจะต้องมีคอลัมน์ created_at, updated_at แต่ในบางทีตารางเราไม่จำเป็นต้องมีการบันทึกเวลาไม่ต้องมี คอลัมน์เหล่านี้ ถ้าเราไม่ยกเลิกใช้งาน timestamps ใน Model เวลาเราบันทึกข้อมูล จะเกิด Error วิธีการแก้ไขนั้นให้เขียนคำสั่ง <span style="color: #0000ff;">public $timestamps = false;</span></p>
<p>และอีกทั้งคุณยังไม่จำเป็นต้องกำหนดคอลัมน์ให้เป็นชื่อ created_at, updated_at สามารถเปลี่ยนชื่อได้ โดยเขียนคำสั่ง&nbsp;<br />
<span style="color: #0000ff;">const CREATED_AT = &#8216;creation_date&#8217;;</span><br />
<span style="color: #0000ff;">const UPDATED_AT = &#8216;last_update&#8217;;</span></p><pre class="crayon-plain-tag">&lt;?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Flight extends Model
{
    /**
     * Indicates if the model should be timestamped.
     *
     * @var bool
     */
    const CREATED_AT = 'creation_date';
    const UPDATED_AT = 'last_update';
    public $timestamps = false;
}</pre><p></p>
<h3>Retrieving Models</h3>
<p>เมื่อเราสร้าง Model และ ตารางในฐานข้อมูลแล้ว เราก็พร้อมสำหรับการดึงข้อมูลที่ต้องการจากฐานข้อมูล โดยใช้ Eloquent model ในการทำ Query builder กับ Model ลองมาดูตัวอย่างโดยเขียน ไว้ใน Controller</p><pre class="crayon-plain-tag">&lt;?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Flight;

class WelcomeController extends Controller
{
    public function index()
    {
        $flights = Flight::all();

        foreach ($flights as $flight) {
            echo $flight-&gt;name;
        }
    }
}</pre><p>และถ้าหากเราต้องการให้ข้อมูลเรียกเอาเฉพาะ Active=1 และ เรียงข้อมูลคอลัมน์ name จาก มากไปน้อย และดึงมาแค่ 10 รายการ สามารถเขียนได้ดังนี้</p><pre class="crayon-plain-tag">$flights = Flight::where('active', 1)
               -&gt;orderBy('name', 'desc')
               -&gt;take(10)
               -&gt;get();</pre><p>ตรงนี้ เราสามารถดูคำสั่งในการ query builder ได้ที่ https://laravel.com/docs/7.x/queries</p>
<h3>สรุป</h3>
<p>สำหรับ บทความ พื้นฐาน Model มีเพียงเท่านี้ครับ และมีภาคต่อของ Model และเนื้อหาที่เกี่ยวข้องด้วย คือ การทำ Migration และการทำ Relation Model&nbsp;</p>
<p>สำหรับเนื้อหาส่วนนี้โดยรวมพูดถึงวิธีการสร้าง Model และภาพรวมว่า มีขั้นตอนการดึงข้อมูล การปรับแต่ง Model อะไรบ้าง รายละเอียดในบทความนี้หวังว่าจะเป็นแนวทางในการพัฒนาระบบของผู้อ่าน นะครับ</p><p>The post <a href="https://www.itoffside.com/laravel-ep11-model/">Laravel – EP11 การใช้งาน Model</a> first appeared on <a href="https://www.itoffside.com">itOffside.com | บทความการเขียนโปรแกรม เรื่องราวข้อมูลเทคโนโลยี</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://www.itoffside.com/laravel-ep11-model/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
