บทที่ 2 ดึงสินค้าจาก CSV
ดึงสินค้าจาก CSV |
บทที่ 2 ดึงสินค้าจาก CSV
หลังจากที่ผมมีเจตนารมที่อยากจะเขียนอะไรเพื่อให้หลายๆคนได้อ่านแล้วนะครับ ซึ่งน่าจะมีประโยชน์แหละครับ ซึ่งเป็นเรื่องของ เขียนสคริป ทำ im ไม่รู้ว่าหลายคนสนใจกันไหมนะครับ
แต่ด้วยว่าผมมีความตั้งใจแล้วจึงต้องทำให้ดีที่สุดและทำให้จบครับผม ซึ่งบทความก่อนหน้านี้ ผมก็ได้อธิบายถึง บทที่ 1 วางแผนสคริป im เป็นเรื่องน้ำซะมากกว่า ก็เขียนไปแหละครับ การทำงานต้องวางแผนมีเป้าก่อนไม่งั้นไม่รู้ทิศทาง
ในบทที่ 2 นี้ผมจะมาลองเขียนการดึงสินค้าจากไฟล์ CSV กันครับ ซึ่งผมจะดึงออกมาเป็น กล่องๆทีละชิ้นๆครับ
หลายๆคนอาจจะคุ้นตาไปแล้วแหละครับ ไปเว็บสินค้าเว็บไหนก็จะเจอแนวนี้ทั้งนั้น หรือไม่ก็เจอจากเว็บของเพื่อนๆ im เรานี่แหละครับ
ดึงสินค้าจาก CSV |
ผมจะใช้การดึงโดยใช้ function เอานะครับซึ่งเป็นครั้งแรกแหละครับที่ผมใช้ function เขียนดึงเอาครับ
เริ่มจากที่ผมจะเขียน ไฟล์เก็บ function ทั้งหมดไว้ก่อนนะครับ จะได้เป็นศูนย์รวมไว้ดึงมาใช้งานได้ครับ
ไฟล์ app.php ตัวนี้ ขอโผล่ขึ้นมาใหม่นะครับ แผนมีเปลี่ยนเล็กน้อยเพื่อความสะดวกครับ โดยไฟล์นี้ อย่างที่กล่าวไว้ว่าผมจะเป็นที่รวมของ function ไว้สำหรับดึงมาใช้นะครับ มาเริ่มเขียน function ตัวแรกกันดีกว่าครับ หากผมเขียนอารายผิดช่วยแจ้งด้วยนะครับ เดินไปพร้อมๆกันครับ แนวนี้ก็เพิ่งเริ่มเขียน
เป็น function ที่ใช้กำหนดค่าต่างๆนะครับ ซึ่งผมจะเขียนเป็น array ไว้เรียกค่าได้หลายๆค่า ผมไม่รู้ว่าวิธีนี้เวิคไหมนะ ลองกันดูครับ มีไอเดียดีกว่านี้แจ้งได้ครับ
เริ่มจากที่ผมจะเขียน ไฟล์เก็บ function ทั้งหมดไว้ก่อนนะครับ จะได้เป็นศูนย์รวมไว้ดึงมาใช้งานได้ครับ
ไฟล์ app.php |
function setting()
function setting |
//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 ตัวนี้ผมจะเขียนดึงข้อมูลออกมาเป็นกล่องๆครับ ดึงจะใช่ค่า 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() |
//Check Max Line File data.csv
function maxline()
{
$maxline = count(file(setting('file')))-1;
return $maxline;
}
function loopproduct()
function loopproduct |
//Loop Product
function loopproduct($min,$max)
{
for ($i=$min; $i < $max; $i++) {
echo boxproduct($i);
}
}
function relatedproduct()
function relatedproduct |
//Related Product
function relatedproduct($loop)
{
for ($i=0; $i < $loop; $i++) {
$id = rand(0,maxline());
echo boxproduct($id);
}
}
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 |
ดังนั้น บทที่ 2 ดึงสินค้าจาก CSV ผมคงอธิบายไว้เพียงเท่านี้ก่อนนะครับ บทต่อไปมาแต่งหน้าตา index กันครับ ว่าจะให้ออกมาอย่างไร และ จะจัดให้สวยอย่างไร
{ หากบทความข้างต้นมีข้อผิดพลาดช่วยแจ้งด้วยครับ น้อมรับทุกแนวคิดและนำไปปรับปรุงครับ }
บทเรียนทั้งหมด
12 ความคิดเห็น
http://tempkaew.blogspot.com/2014/09/sublime-package.html
Package ชื่อว่า Sublime Alignment แล้วใช้คีย์ลัด Ctrl+Alt+A ครับ
ช่วยได้อยู่ครับ
ไม่เข้าใจบรรทัดนี้คับ ช่วยอธิบายให้หน่อยคับ
$file = file(data.csv);
แต่ด้วยที่ว่า ผม ได้สร้าง function ให้เรียกข้อมูลเบื้องต้นไว้หรือว่า สร้างตัวแปรไว้ให้เรียกค่าง่ายๆ
setting() ครับ
ซึ่งเมื่อ เรียก setting('file') มันจะส่งค่ากลับมาเป็น data.csv ครับ ตามที่เรากำหนด
อย่างถ้าผมเรียก 'api' => 'xxxxx' // setting('api') มันจะส่งค่า xxxxx กลับมาครับ ตาม setting() ที่ตั้งไว้ครับ
พอเข้าใจไหมครับ ถามได้ครับ