หัดเขียนโค้ดเล่น โดยใช้วิชามึน



ผมขอทราบวิธีคิดหน่อยครับ คือผมมีปัญหาดังนี้

ฐานข้อมูลชื่อ company มีตารางอยู่ 3 ตาราง



ตารางที่ 1 ชื่อ ตาราง staff มีคีย์หลักเป็น staff_id ซึ่ง ID จะเป็นประมาณนี้ N8Q6bz1hT ไว้เก็บข้อมูลพนักงาน

เช่น ชื่อ นามสกุล ค่าแรงต่อวัน



ตารางที่ 2 ชื่อ ตาราง staff_day_work มีคีย์หลักเป็น report_id

มี field ชื่อ report_id staff_name

ไว้เก็บชื่อของพนักงานที่ทำงานในวันนั้น สมมุติว่าพนักงานทำงานรายวัน วันไหนไม่ทำงานก็คือไม่มีการจ่ายเงิน



ตารางที่ 3 ชื่อ ตาราง dayli_report มีคีย์หลักเป็น report_id

ตารางนี้ไว้เก็บรายการต่างๆ ที่เกิดขึ้น เช่น รายจ่ายค่ารถ จ่ายค่ากับข้าว

อยากให้ข้อมูลในตารางนี้สัมพันธ์กับ staff_day_work กล่าวคือในหนึ่งวันต้องมีคนทำงานมากกว่า 1 คน

จึงได้แยกชื่อพนักงานไว้ในอีกตาราง



คราวนี้มาถึงฟอร์มบันทึกข้อมูล ก่อนที่จะโหลดฟอร์มขึ้นมา ผมได้ทำการ query ข้อมูล 1 ครั้งเพื่อที่จะเอาข้อมูลจากตาราง

Staff ออกมาโดยดึงเอาชื่อของพนักงานออกมา ในฟอร์มนั้นสิ่งที่จะมีค่าเดียวเช่น ชื่อผู้บันทึก วันที่บันทึก ค่ารถ ค่ากับข้าว

เหล่านี้มันมีค่าเดียวผมเลยเอามันไว้นอก foreach ผมใช้ foreach loop เอาค่า staff_id staff_name

ไว้ใน checkbox

foreach($all_staff->result() as $row){

        ?>

        <input type='checkbox' name='staff_name[]'

        value='<?php echo $row->staff_name; ?>
' >

        <?php echo $row->staff_name;

        //ในฟอร์มมี checkbox และส่งชื่อพนักงานออกมาเฉพาะ checkbox ที่ถูกเลือก ?>

        <?php

}



ผมเอาข้อมูล บันทึกในตาราง dayli_report

ส่วน staff_day_work นั้นต้องการชื่อพนักงานและ id ของวันที่บันทึก

ผมไม่มีปัญหาในขั้นตอนนี้ แต่.....ถ้าสมมุติว่าผมผิดพลาด หมายถึงว่า พนักงานที่มีชื่อในตาราง staff_day_work ในวันนั้น

เค้าไม่ได้มาทำงาน แต่คนที่เค้ามา ผมไม่ได้คลิกเลือกไว้ งานเข้าสิครับผมต้องแก้ไขข้อมูลใหม่

โดย query เอาชื่อพนักงานจากตาราง staff , staff_day_work,dayli_report ออกมาเข้าในฟอร์มเพื่อแก้ไข

ถึงที่ตายแล้วครับ ผมจะเอา checkbox ออกมาได้ยังไงโดยที่ชื่อที่เลือกไว้ก่อนหน้ายังอยู่ และผมสามารถแก้ไขข้อมูลใหม่ได้



ผมใช้ codeigniter ครับ สิ่งที่ผมต้องการก็คือ

ผมสามารถเก็บข้อมูลการทำงานประจำวันและรายจ่ายของพนักงานได้ โดยชื่อพนักงานนั้นต้องมาจากฐานข้อมูล

และเก็บชื่อพนักงานที่มาทำงานในวันนั้นๆ ส่วนคนที่ไม่มาทำงาน จะต้องไม่มีชื่อในวันนั้นๆ และสามารถเรียกออกมาแก้ไขได้

ขอแนวคิดด้วยครับ ว่าถ้าผมอยากได้แบบนี้ผมจะต้องออกแบบฐานข้อมูลยังไง
04 มิ.ย. 2557 1 689

วิธีคิก็ถูกแล้วครับ แนะนำเพิ่มเติมว่า staff_id (key ทั้งหลาย) ควรเป็นตัวเลข เพราะมันเร็วที่สุด และจดจำง่าย (ในสายตามนุษย์ หากต้องการกวาดตาดูข้อมูล)



ส่วนแนวคิดการแก้ปัญหา ผมแนะนำแบบนี้



ปกติแล้วเราสามารถ query ข้อมูลออกมาเป็นรายวันได้ (ถ้าไม่มีก็คงต้องมีในหน้านี้) เช่นเพื่อดูว่าในวันนี้ มีใครมาทำงานบ้างและในเวลาเท่าไร เราก็สามารถใช้หน้านี้แหละครับในการตรวจสอบความถูกต้องหรือเพื่อแก้ไขข้อมูลได้ โดย ให้แสดงรายชื่อทั้งหมด (แทนที่แสดงเฉพาะ ข้อมูลคนที่มา) โดยอาจใช้ checkbox แทนคนที่มา (ขีดถูกหมายถึงมา) ทำให้เราสามารถตรวจสอบความถูกต้องของข้อมูลรายวันในหน้านี้ได้เลยครับ และ อาจรวมถึงอาจยอมให้มีการแก้ไขเวลาในหน้านี้ได้ด้วย



หมายเหตุ หน้านี้ควรเข้าถึงได้โดยผู้มีอำน่าจเท่านั้น และ แยกออกจากหน้ารายงาน เพื่อความสะดวกในการดู
#1
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 1024
^