-->

บทที่ 2 ดึงสินค้าจาก CSV

ดึงสินค้าจาก CSV
ดึงสินค้าจาก CSV
ดึงสินค้าจาก CSV

บทที่ 2 ดึงสินค้าจาก CSV

หลังจากที่ผมมีเจตนารมที่อยากจะเขียนอะไรเพื่อให้หลายๆคนได้อ่านแล้วนะครับ ซึ่งน่าจะมีประโยชน์แหละครับ ซึ่งเป็นเรื่องของ เขียนสคริป ทำ im ไม่รู้ว่าหลายคนสนใจกันไหมนะครับ

แต่ด้วยว่าผมมีความตั้งใจแล้วจึงต้องทำให้ดีที่สุดและทำให้จบครับผม ซึ่งบทความก่อนหน้านี้ ผมก็ได้อธิบายถึง บทที่ 1 วางแผนสคริป im เป็นเรื่องน้ำซะมากกว่า ก็เขียนไปแหละครับ การทำงานต้องวางแผนมีเป้าก่อนไม่งั้นไม่รู้ทิศทาง

ในบทที่ 2 นี้ผมจะมาลองเขียนการดึงสินค้าจากไฟล์ CSV กันครับ ซึ่งผมจะดึงออกมาเป็น กล่องๆทีละชิ้นๆครับ

หลายๆคนอาจจะคุ้นตาไปแล้วแหละครับ ไปเว็บสินค้าเว็บไหนก็จะเจอแนวนี้ทั้งนั้น หรือไม่ก็เจอจากเว็บของเพื่อนๆ im เรานี่แหละครับ

ดึงสินค้าจาก CSV
ดึงสินค้าจาก CSV
โดยรูปแบบการดึงสินค้า อย่างที่กล่าวไว้ครับจะดึงมาแสดงในลักษณะดังภาพครับ ซึ่งเป็นวิธีที่ผมชอบเขียนครับ

ผมจะใช้การดึงโดยใช้ function เอานะครับซึ่งเป็นครั้งแรกแหละครับที่ผมใช้ function เขียนดึงเอาครับ

เริ่มจากที่ผมจะเขียน ไฟล์เก็บ function ทั้งหมดไว้ก่อนนะครับ จะได้เป็นศูนย์รวมไว้ดึงมาใช้งานได้ครับ

ไฟล์ app.php
ไฟล์ app.php ตัวนี้ ขอโผล่ขึ้นมาใหม่นะครับ แผนมีเปลี่ยนเล็กน้อยเพื่อความสะดวกครับ โดยไฟล์นี้ อย่างที่กล่าวไว้ว่าผมจะเป็นที่รวมของ function ไว้สำหรับดึงมาใช้นะครับ มาเริ่มเขียน function ตัวแรกกันดีกว่าครับ หากผมเขียนอารายผิดช่วยแจ้งด้วยนะครับ เดินไปพร้อมๆกันครับ แนวนี้ก็เพิ่งเริ่มเขียน


function setting()

function setting
function setting

เป็น function ที่ใช้กำหนดค่าต่างๆนะครับ ซึ่งผมจะเขียนเป็น array ไว้เรียกค่าได้หลายๆค่า ผมไม่รู้ว่าวิธีนี้เวิคไหมนะ ลองกันดูครับ มีไอเดียดีกว่านี้แจ้งได้ครับ

//Setting 
function setting($value)
{
 $setting = array(
    'file' => 'data.csv'
    );
 return $setting[$value];
}

ดาวโหลด data.csv
Download data.csv
อธิบายพอสังเขป
บรรทัด ที่ 1 : เขียนไว้อธิบายตัวเองว่ามันใช้ทำไร // ใส่ไปหน้าข้อความที่เราจะอธิบายได้เลยครับ ซึ่ง // สามารถ ปิดการทำงานของ php ใน บรรทัดนั้นๆได้อีกด้วยนะครับ เอาไว้ที่หน้าสุดของแต่ละบรรทัดครับ
บรรทัด ที่ 2 : ประกาศชื่อฟังก์ชั่นครับ ว่าชื่อว่าอะไร และในวงเล็บจะเป็นตัวรับค่าไปทำงานต่อในฟังก์ชั่นนั้นๆครับ ซึ่งตัวนี้ผมรับค่า  $value เอาไปใช้งานครับ
บรรทัด ที่ 4 : ผมประกาศตัวแปร $setting และเก็บข้อมูล array เป็นแบบ 2 มิตินะ
บรรทัด ที่ 5 : กำหนดค่าของข้อมูล
บรรทัด ที่ 7 : ส่งค่ากลับ ตามค่าที่ระบุตาม $value ครับ เช่นผมเรียก setting(file) ตัว function ตัวนี้จะส่งค่า data.csv กลับไปครับ
ทั้งนี้ตัว function นี้ เพิ่มข้อมูลได้ครับ อยากเพิ่มอารายเข้าไปได้ครับ เช่น 'api' => 'XXXX' ทำนองนี้ครับ แต่ ข้อมูลบรรทัดก่อนหน้าอย่าลืมลูกน้ำนะครับ

//Setting 
function setting($value)
{
 $setting = array(
    'file' => 'data.csv',
    'api' => 'xxxxx'
    );
 return $setting[$value];
}

function boxproduct()

function boxproduct
function boxproduct
function ตัวนี้ผมจะเขียนดึงข้อมูลออกมาเป็นกล่องๆครับ ดึงจะใช่ค่า id ไปดึงมาค่าแสดงครับ ค่า id จะเป็นตำแหน่งบรรทัดของข้อมูลในไฟล์ data.csv นะครับ

//Get IMg + Title From CSV File
function boxproduct($id){
 $file  = file(setting('file'));
 $data  = explode(',', $file[$id]);
 
 //First Data
 $title = trim($data['0'], '"');
 $link  = trim($data['1'], '"');
 $img   = trim($data['2'], '"');

 //Design your Box Product
 $box = '
 <div class="box">
  <img src="'.$img.'">
  <p><a href="'.$link.'">'.$title.'</a></p>
 </div>';

 return $box;
}

อธิบายพอสังเขป
บรรทัด ที่ 2 : ผมจะให้มันรับค่า id มาดึงข้อมูลใน data.csv นะครับ
บรรทัด ที่ 3 : ประกาศค่า $file โดยเรียกข้อมูลไฟล์มาจาก function setting ข้างบนนะครับ
บรรทัด ที่ 4 : ในแต่ละบรรทัดผมจะแยกข้อมูลด้วย ลูกน้ำ ( , ) นะครับ โดยใช้คำสั่ง explode()
บรรทัด ที่ 7-9 : ผมกำหนดค่า และเรียกค่าทั้ง 3 คอลัม มาครับ แต่ในไฟล์ csv จะเรียงข้อมูลเป็น "Title", "Link", "IMG" อย่างนี้ใน 1 บรรทัดครับ ค่า Title จะมีตำแหน่ง 0 1 2 ตามลำดับครับ แล้วผมจะใช้คำสั่ง trim เอา เครื่องหมายฟันหนู (") ออกทั้งสองข้างครับ (วิธีค่อนข้างฮา) ตอนนี้ได้ข้อมูลมาละครับทั้ง 3 ตัว
บรรทัด ที่ 11-16 : เป็นเรื่องของการออกแบบกล่องสินค้าละครับ ว่าจะให้ออกมาอย่างไรครับ แล้วเรียกใช้ตัวแปรทั้ง 3 ตัวแปรครับ อย่างลืมเรื่องเครื่องหมาย " กับ ' นะครับ ใช้ผิด อาจจะทำให้ error ได้
บรรทัด ที่ 18 :  ส่งค่าข้อมูลตามที่ระบุ id กลับไปครับ

function maxline()

function maxline()
function maxline()
เขียนเพื่อนับว่าไฟล์ data.csv มีกี่บรรทัดนะครับ เพื่อนำไปใช้งานอื่นๆครับ ไว้เรียกใช้ง่ายๆครับ สะดวกอยู่เหมือนกันครับ

//Check Max Line File data.csv
function maxline()
{
 $maxline = count(file(setting('file')))-1;
 return $maxline;
}

function loopproduct()

function loopproduct
function loopproduct
function นี้จะเป็นการเรียก function boxproduct() มาใช้อีกที แต่คลุมด้วย loop for ให้วนสินค้ามาแสดงครับ เอาไว้ทำสินค้าแบ่งหน้าได้ ว่า $min $max ที่เท่าไร ว่ากันไปครับ


//Loop Product
function loopproduct($min,$max)
{
 for ($i=$min; $i < $max; $i++) { 
  echo boxproduct($i);
 }
}

function relatedproduct()

function relatedproduct
function relatedproduct
เป็นอีกหนึ่ง function ที่ต้องดึงข้อมูลจาก function boxproduct() มาใช้ครับ ตัวนี้จะต่างจาก function loopproduct() ที่ว่า ตัวนี้ผมจะแรนดอม สินค้ามาแสดงครับ โดยใช้ function maxline() มาใช้ เพื่อให้กำหนดขอบเขตของการสุ่มจากไหนถึงไหนครับ โดยกำหนดค่า $loop ให้วนว่าจะแสดงกี่ชิ้นครับ เหมาะเอาไปใช้วางไว้ที่ใต้สินค้าครับ


//Related Product
function relatedproduct($loop)
{
 for ($i=0; $i < $loop; $i++) { 
  $id = rand(0,maxline());
  echo boxproduct($id);
 }
}

index.php

index.php
index.php
ลองเรียกมาใช้งานครับ โดยสร้างไฟล์ index.php มารองรับดูก่อนครับ ที่สำคัญคือ include ไฟล์ app.php มาด้วยนะครับ 
?? ทำไม บาง function ต้อง echo สังเกตที่ function นะครับ บางตัวมี echo ประกาศค่าเลย อันนี้ก้อไม่ต้องใส่ครับผม 

<?php 

//Include Function File
include 'app.php';

echo boxproduct('99');
echo maxline();

relatedproduct('6');

loopproduct('0','10');

?>

ผลลัพธ์ที่ได้
ดึงสินค้าจาก CSV
ดึงสินค้าจาก CSV


ดังนั้น บทที่ 2 ดึงสินค้าจาก CSV  ผมคงอธิบายไว้เพียงเท่านี้ก่อนนะครับ บทต่อไปมาแต่งหน้าตา index กันครับ ว่าจะให้ออกมาอย่างไร และ จะจัดให้สวยอย่างไร

{ หากบทความข้างต้นมีข้อผิดพลาดช่วยแจ้งด้วยครับ น้อมรับทุกแนวคิดและนำไปปรับปรุงครับ }


บทเรียนทั้งหมด