วันจันทร์ที่ 8 กันยายน พ.ศ. 2557

การใช้ csv เป็น database


                การใช้ csv ไฟล์เป็น Database น่าจะเป็นอีกวิธีหนึ่งที่สามารถใช้แทน MySQL ในกรณีที่ข้อมูลไม่มาก นัก แต่ข้อดีก็คือไม่ต้องยุ่งยากกับการ set ค่า database หรือ การใช้ PhpMyAdmin อีกทั้งยังสามารถ run ได้โยไม่ต้องมี database server 
                การใช้งานจะต้องมี MyCSV.class สามารถD/L จาก http://maettig.com/?page=PHP/MyCSV หรือจาก  http://www.phpclasses.org/package/5594-PHP-Manage-CSV-files-like-database-tables.html โดยมีวิธีใช้ดังนี้

1.การแสดงข้อมูลตามเงื่อนไข(เหมือนกับคำสั่ง Select และ Where )
<?
$table = new MyCSV("sys_province.csv");   //เปิดไฟล์ข้อมูล
$tbname=$table->tablename();    //ชื่อตารางข้อมูล
$numrow=$table->num_rows();   //จำนวน record
echo $tbname.'<br>';                   //แสดงชื่อตาราง
while ($row = $table->each()) {
        if($row['GEO_ID']=='6'){   //แทนคำสั่ง Where
                 echo $row['id'] . "-";
                 echo $row['PROVINCE_ID']. "-";
                 echo $row[',PROVINCE_CODE']. "-";
                 echo $row['PROVINCE_NAME']. "-";
                 echo $row['GEO_ID']. "-";
                 echo "<br>";
          }
}
echo $numrow.'<br>';   //แสดงจำนวน record
?>


2.การ Join ตารางข้อมูล
การ join ข้อมูลในตาราง thing.csv ฟิวดฺ์รหัสสี โดยดึงรหัสสีจากตาราง color.csv มีโครงสร้างและข้อมูลดังนี่
1.ไฟล์ color.csv
id,color
1,red
2,yellow
3,green

2.ไฟล์ thing.csv
id,thing,color_id
1,book,2
2,pen,1
3,table,3
4,ruller,2
5,chair,2

<?
$colorTable = new MyCSV('color.csv');     //เปิดตารางรหัสสี
$thingTable = new MyCSV('thing.csv');     //เปิดตารางข้อมูล
$thingTable->join($colorTable, "color_id");
while ($row = $thingTable->each()) {
    echo $row['thing'] . " is " . $row['color'] . "<br>"; 
}
//$row['thing']  เป็นฟิวด์จากตาราง thing.csv 
//และ $row['color'] เป็นฟิวด์จากตาราง color.csv
?>

ไม่มีความคิดเห็น: