# বাল্ক আপলোড সিস্টেম

স্কুল ম্যানেজমেন্ট সিস্টেমে একসাথে অনেক শিক্ষার্থী ও শিক্ষকের তথ্য CSV ফাইল দিয়ে আপলোড করার জন্য একটি সম্পূর্ণ বাল্ক আপলোড সিস্টেম তৈরি করা হয়েছে।

## ✅ সম্পন্ন ফিচারসমূহ

### 🗄️ **ডাটাবেস স্ট্রাকচার**
- **bulk_upload_logs** টেবিল - আপলোড হিস্টরি ট্র্যাকিং
- বিদ্যমান **students** ও **teachers** টেবিলের সাথে ইন্টিগ্রেশন

### 📊 **বাল্ক আপলোড হোম** (`bulk_upload/index.php`)
- সিস্টেম ওভারভিউ ও পরিসংখ্যান
- দ্রুত অ্যাক্সেস মেনু
- সাম্প্রতিক কার্যক্রম দেখানো
- টেমপ্লেট ডাউনলোড লিংক

### 👨‍🎓 **শিক্ষার্থী বাল্ক আপলোড** (`bulk_upload/students_upload.php`)
- CSV ফাইল দিয়ে একসাথে শত শত শিক্ষার্থী যোগ
- ডিফল্ট ক্লাস সেটিং
- ইউজার অ্যাকাউন্ট অটো তৈরি অপশন
- ডুপ্লিকেট চেক ও ভ্যালিডেশন
- রিয়েল-টাইম আপলোড রেজাল্ট

### 👨‍🏫 **শিক্ষক বাল্ক আপলোড** (`bulk_upload/teachers_upload.php`)
- CSV ফাইল দিয়ে একসাথে অনেক শিক্ষক যোগ
- যোগ্যতা ও অভিজ্ঞতার তথ্য সহ
- ইউজার অ্যাকাউন্ট অটো তৈরি
- ইমেইল ও ফোন ভ্যালিডেশন
- বেতন ও পদবী সেটিং

### 📋 **টেমপ্লেট সিস্টেম**
- **শিক্ষার্থী টেমপ্লেট** (`templates/students_template.csv`)
- **শিক্ষক টেমপ্লেট** (`templates/teachers_template.csv`)
- নমুনা ডেটা সহ
- সঠিক ফরম্যাট গাইড

## 🔧 **সেটআপ নির্দেশনা**

### ১. সিস্টেম সেটআপ
```
http://localhost/bidda/setup_bulk_upload.php
```

### ২. PHP কনফিগারেশন
নিম্নলিখিত সেটিংস নিশ্চিত করুন:
```ini
upload_max_filesize = 2M
post_max_size = 4M
max_execution_time = 300
memory_limit = 128M
```

### ৩. ডিরেক্টরি পারমিশন
নিশ্চিত করুন যে নিম্নলিখিত ডিরেক্টরিগুলো writable:
- `bulk_upload/uploads/`
- `bulk_upload/logs/`

## 📋 **ব্যবহারের নির্দেশনা**

### শিক্ষার্থী আপলোডের জন্য:

#### ধাপ ১: টেমপ্লেট ডাউনলোড
1. `bulk_upload/students_upload.php` পেজে যান
2. "টেমপ্লেট ডাউনলোড" বাটনে ক্লিক করুন
3. `students_template.csv` ফাইল ডাউনলোড হবে

#### ধাপ ২: ডেটা পূরণ
Excel বা Google Sheets এ ফাইল খুলুন এবং নিম্নলিখিত কলামে তথ্য পূরণ করুন:

| কলাম | ফিল্ড | আবশ্যক | উদাহরণ |
|-------|--------|---------|----------|
| A | Student ID | হ্যাঁ | 2024001 |
| B | First Name | হ্যাঁ | রহিম |
| C | Last Name | না | উদ্দিন |
| D | Email | না | rahim@email.com |
| E | Phone | না | 01712345678 |
| F | Date of Birth | না | 2010-01-15 |
| G | Gender | না | male/female |
| H | Address | না | ঢাকা, বাংলাদেশ |
| I | Guardian Name | না | করিম উদ্দিন |
| J | Guardian Phone | না | 01812345678 |
| K | Guardian Email | না | karim@email.com |
| L | Class ID | না | 1 |
| M | Roll Number | না | 01 |
| N | Admission Date | না | 2024-01-01 |

#### ধাপ ৩: CSV হিসেবে সেভ
- File → Save As → CSV (UTF-8) নির্বাচন করুন
- ফাইল সেভ করুন

#### ধাপ ৪: আপলোড
1. `bulk_upload/students_upload.php` পেজে ফিরে যান
2. CSV ফাইল নির্বাচন করুন
3. ডিফল্ট ক্লাস নির্বাচন করুন (ঐচ্ছিক)
4. "ইউজার অ্যাকাউন্ট তৈরি করুন" চেক করুন (প্রয়োজনে)
5. "আপলোড করুন" বাটনে ক্লিক করুন

### শিক্ষক আপলোডের জন্য:

#### টেমপ্লেট ফরম্যাট:

| কলাম | ফিল্ড | আবশ্যক | উদাহরণ |
|-------|--------|---------|----------|
| A | Teacher ID | হ্যাঁ | T001 |
| B | First Name | হ্যাঁ | আহমদ |
| C | Last Name | না | হাসান |
| D | Email | না | ahmad@email.com |
| E | Phone | না | 01712345678 |
| F | Date of Birth | না | 1985-01-15 |
| G | Gender | না | male/female |
| H | Address | না | ঢাকা, বাংলাদেশ |
| I | Qualification | না | M.A in English |
| J | Experience | না | 5 years |
| K | Subject Specialization | না | English |
| L | Joining Date | না | 2024-01-01 |
| M | Salary | না | 25000 |
| N | Designation | না | Assistant Teacher |

## 🔒 **নিরাপত্তা ও ভ্যালিডেশন**

### ডেটা ভ্যালিডেশন:
- **আবশ্যক ফিল্ড চেক**: ID ও নাম আবশ্যক
- **ডুপ্লিকেট প্রতিরোধ**: একই ID দুইবার যোগ করা যাবে না
- **ইমেইল ভ্যালিডেশন**: সঠিক ইমেইল ফরম্যাট চেক
- **তারিখ ভ্যালিডেশন**: YYYY-MM-DD ফরম্যাট চেক
- **সংখ্যা ভ্যালিডেশন**: বেতন ও অন্যান্য সংখ্যা চেক

### ট্রানজেকশন নিরাপত্তা:
- **All-or-Nothing**: একটি ত্রুটি হলে কোন ডেটা যোগ হবে না
- **রোলব্যাক সাপোর্ট**: সমস্যা হলে পূর্বের অবস্থায় ফিরে যাবে
- **এরর লগিং**: সব ত্রুটি রেকর্ড করা হয়

## 📊 **ফিচার বিবরণ**

### অটো ইউজার অ্যাকাউন্ট তৈরি:
- **Username**: Student/Teacher ID
- **Password**: Student/Teacher ID (প্রথমবার)
- **Role**: student/teacher
- **Status**: active

### এরর হ্যান্ডলিং:
- **রিয়েল-টাইম ফিডব্যাক**: কোন রো-তে সমস্যা তা দেখানো
- **বিস্তারিত এরর মেসেজ**: কী সমস্যা তা স্পষ্ট করা
- **পার্শিয়াল সাকসেস**: কিছু সফল হলে তা দেখানো

### পারফরমেন্স অপটিমাইজেশন:
- **ব্যাচ প্রসেসিং**: একসাথে অনেক রেকর্ড প্রসেস
- **মেমরি ম্যানেজমেন্ট**: বড় ফাইলের জন্য অপটিমাইজড
- **টাইমআউট হ্যান্ডলিং**: দীর্ঘ প্রসেসের জন্য সময় বৃদ্ধি

## 🐛 **সমস্যা সমাধান**

### সাধারণ সমস্যা:

#### ১. "ফাইল আপলোড করতে সমস্যা"
- **সমাধান**: ফাইল সাইজ চেক করুন (2MB এর কম)
- **চেক করুন**: PHP upload_max_filesize সেটিং

#### ২. "CSV পড়তে সমস্যা"
- **সমাধান**: ফাইল UTF-8 এনকোডিং এ সেভ করুন
- **চেক করুন**: CSV ফরম্যাট সঠিক কিনা

#### ৩. "ডুপ্লিকেট ID এরর"
- **সমাধান**: CSV এ একই ID দুইবার আছে কিনা চেক করুন
- **চেক করুন**: ডাটাবেসে ID ইতিমধ্যে আছে কিনা

#### ৪. "তারিখ ফরম্যাট এরর"
- **সমাধান**: YYYY-MM-DD ফরম্যাট ব্যবহার করুন
- **উদাহরণ**: 2024-01-15

### ডিবাগিং টিপস:
- PHP error logs চেক করুন
- Browser developer console দেখুন
- ছোট ব্যাচে টেস্ট করুন
- টেমপ্লেট ফরম্যাট অনুসরণ করুন

## 📁 **ফাইল স্ট্রাকচার**

```
bulk_upload/
├── index.php                    # মূল হোম পেজ
├── students_upload.php          # শিক্ষার্থী আপলোড
├── teachers_upload.php          # শিক্ষক আপলোড
├── templates/
│   ├── students_template.csv    # শিক্ষার্থী টেমপ্লেট
│   └── teachers_template.csv    # শিক্ষক টেমপ্লেট
├── uploads/                     # আপলোডকৃত ফাইল
└── logs/                        # লগ ফাইল
```

## 🔗 **গুরুত্বপূর্ণ লিংক**

- **বাল্ক আপলোড হোম**: `http://localhost/bidda/bulk_upload/`
- **শিক্ষার্থী আপলোড**: `http://localhost/bidda/bulk_upload/students_upload.php`
- **শিক্ষক আপলোড**: `http://localhost/bidda/bulk_upload/teachers_upload.php`
- **সেটআপ**: `http://localhost/bidda/setup_bulk_upload.php`

## 🎯 **ভবিষ্যতের উন্নতি**

### পরবর্তী ভার্সনে যোগ হতে পারে:
- Excel ফাইল সরাসরি সাপোর্ট
- ক্লাস ও বিষয় বাল্ক আপলোড
- ইমেজ বাল্ক আপলোড (ছবি)
- আপলোড প্রগ্রেস বার
- ব্যাকগ্রাউন্ড প্রসেসিং
- ইমেইল নোটিফিকেশন
- আপলোড হিস্টরি ও রিপোর্ট
- ডেটা এক্সপোর্ট ফিচার

## 💡 **বেস্ট প্র্যাকটিস**

### আপলোডের আগে:
1. **ব্যাকআপ নিন**: ডাটাবেসের ব্যাকআপ রাখুন
2. **ছোট টেস্ট**: প্রথমে ৫-১০ টি রেকর্ড দিয়ে টেস্ট করুন
3. **ডেটা যাচাই**: CSV এ সব তথ্য সঠিক কিনা চেক করুন
4. **ডুপ্লিকেট চেক**: একই ID দুইবার নেই তো?

### আপলোডের পর:
1. **ফলাফল যাচাই**: আপলোড রেজাল্ট দেখুন
2. **ডেটা চেক**: কয়েকটি রেকর্ড ম্যানুয়ালি চেক করুন
3. **লগইন টেস্ট**: নতুন ইউজার লগইন করতে পারে কিনা
4. **রিপোর্ট দেখুন**: সিস্টেম রিপোর্টে নতুন ডেটা দেখা যাচ্ছে কিনা

এই বাল্ক আপলোড সিস্টেম ব্যবহার করে আপনি সহজেই শত শত শিক্ষার্থী ও শিক্ষকের তথ্য একসাথে যোগ করতে পারবেন!