Baca File Format Aiken (Moodle) dengan PHP
Format Aiken merupakan salah satu format file yang sangat sederhana yang dapat digunakan untuk membuat pertanyaan jenis pilihan ganda (multiple choice) di aplikasi Moodle (sebuah aplikasi e-learning open source). Format Aiken memiliki kelebihan yaitu dapat dibuat dengan bantuan aplikasi pengolah teks biasa seperti Notepad, WordPad, GEdit dan sebagainya. Kelemahannya memang tidak bisa mengimport pertanyaan yang memiliki gambar. Untuk lebih jelasnya mengenai format AIKEN ini dapat dilihat di dokumentasi resmi Moodle.
Pada tutorial ini, saya iseng-iseng bikin program PHP sederhana untuk membaca format Aiken tersebut dan memasukannya menjadi sebuah array. Sebenarnya program ini saya perlukan untuk melengkapi sistem pembelajaran online di D3 Unggulan, Fakultas Teknologi Informasi, Universitas Budi Luhur yang pernah saya buat. Dengan demikian, bank-bank soal yang sudah saya buat dengan format Aiken untuk keperluan kuliah online di sistem elearning S1 dapat digunakan dengan cara import langsung, tanpa perlu mengentri satu-satu lagi.
Berikut ini source code program tersebut.
- <html>
- <head><title>Moodle's Aiken Format Importer</title></head>
- <body>
- <h1>Choose file to import</h1>
- <form action="" method="post" enctype="multipart/form-data">
- <input type="file" name="file"/>
- <input type="submit" name="Import" value="Import"/>
- </form>
- <?php
- //upload
- //read file
- if ($handle) {
- continue;
- }
- //echo strip_tags($baris)."<br/>";
- }
- }
- } else {
- }
- } else {
- }
- //
- foreach($questions as $question) {
-
- //get the first member
- //get the last member
- //the options
- for($i=0; $i<count($question); $i++) {
-
- $options[$i]['right_answer'] = false;
- $options[$i]['right_answer'] = true;
- }
- }
-
- $tmp['options'] = $options;
-
- }
-
- }
- ?>
- </body>
- </html>
Dan berikut ini alternatif parsing file Format Aiken yang dibuat oleh Konglie Huang (terima kasih atas masukannya, begitu indahnya berbagi pengetahuan….)
- <?php
- /*
- SOURCE: http://docs.moodle.org/22/en/Aiken_format
-
- a. The question must be all on one line.
- b. Each answer must start with a single uppercase letter,
- c. followed by a period '.' or a bracket ')', then a space.
- d. The answer line must immediately follow, starting with "ANSWER: " (NOTE the space after the colon)
- and then giving the appropriate letter.
-
- NOTE: script dibawah mengabaikan syarat b
- */
- function parseAikenFormat($file)
- {
-
- return FALSE;
-
- return FALSE;
-
- $start = true;
- foreach($lines as $line)
- {
- if($line == "") continue;
-
- if($start)
- {
- 'question' => $line, // syarat a
- );
- $start = false;
- }
- {
- //syarat d, starting with "ANSWER: "
- $question['answer'] = $answer;
- $result[] = $question;
- $start = true;
- }
- else
- {
- // syarat c '.' atau ')'
- }
- }
-
- return $result;
- }
-
- $aikenFile = "aiken-example.txt";
- $parsed = parseAikenFormat($aikenFile);
-
Semoga contoh program PHP tersebut dapat bermanfaat bagi kita semua.




saya sering bermasalah tentang tata peletakan scripnya gan . .
alhamdulillah bermanfaat sekali gan. makasih udah bagi2 inpoh
mas mau tanya neh apabila formatnya dini mas
contoh gini
id tanggal jam
123 03 Maret 2012 10.30
dan seterusnya pake array gimana mas cara misahkan line dan spacenya
harus jelas dulu, delimiter antar kolomnya pake apa? sepertinya kalo data bentuknya spt itu, delimiternya pake “tab”. Coba pelajari tutorial ini: http://achmatim.net/2010/03/09/baca-tulis-file-csv-dengan-php/ dan tinggal ganti delimiternya pake karakter “tab”.
oke mas terima kasih nanti sy coba
oh ya melanjutkan yg tadi, itu datanya kan berada di notepad extensi txt maupun dat… memang soal diatas antara record tidak menggunakan koma, titik koma, maupun titik, dan biasanya di notepad kan jarang spasi ada yg jauh dan ada dekat tapi semua data array bisa masuk sesuai data yg ada mas… data ini dimaksudkan buat data absensi fingersprint
Masih belum ngerti mas…
Scriptnya mana mas disertai dengan sistem upload filenya php, sy butuh nih buat import soalnya…hehehe
diatas kan ada script-nya mas.