x

Bab utama

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Panduan permulaan pantas - LimeSurvey 3.0+
  3. Pemasangan - LimeSurvey CE
  4. Cara mereka bentuk tinjauan yang baik (panduan)
  5. Bermula
  6. Mentadbir LimeSurvey
  7. Tinjauan - pengenalan
  8. Tetapan tinjauan
  9. Menu tinjauan
  10. Struktur tinjauan
  11. Soalan - pengenalan
  12. Kumpulan soalan - pengenalan
  13. Tinjauan - pengurusan
  14. Pilihan bar alat tinjauan
  15. Tinjauan berbilang bahasa
  16. Enjin ExpressionScript - Panduan mula pantas
  17. Ciri tidak dikategorikan dan ciri lanjutan
  18. Soalan Lazim Umum
  19. Penyelesaian Masalah
  20. Penyelesaian sementara
  21. Lesen
  22. Tukar log versi
  23. Pemalam
 Actions

Panduan Cara ExpressionScript

From LimeSurvey Manual

Halaman ini mungkin telah diterjemahkan oleh mesin dan mungkin mengandungi ralat. Papar teks asal bahasa Inggeris · Perbaiki terjemahan ini
This page is a translated version of the page ExpressionScript How-tos and the translation is 100% complete.


Gambaran keseluruhan perkara yang telah dijelaskan sebelum ini

Jika anda telah mengikuti struktur manual LimeSurvey setakat ini, bermakna anda sudah mengetahui istilah LimeSurvey. Seterusnya, kami telah membincangkan ungkapan dan pembolehubah untuk mempelajari cara menambah baik tinjauan kita. Pada bahagian berikutnya, kami beralih kepada jenis dan maksud penyerlahan sintaks untuk mempelajari cara membetulkan ralat sintaks.

Dengan nota asas ini telah dibincangkan, kita boleh beralih kepada contoh dan penjelasan tentang cara ungkapan berfungsi dalam LimeSurvey.


Penyerlahan Sintaks

Tangkapan skrin berikut memberikan contoh, tetapi tidak memaparkan nilai tip alat. Tip alat ialah kotak maklumat yang dipaparkan apabila anda menuding tetikus pada mana-mana perkataan berwarna yang ditebalkan.

Disebabkan penyerlahan sintaks ini, sangat mudah untuk menyusun ungkapan yang betul, malah yang rumit sekalipun. Walaupun pasukan LimeSurvey merancang untuk cuba membina GUI Expression Builder, anda boleh menggunakan penyerlahan sintaks sedia ada untuk mengenal pasti dan membetulkan kesalahan taip dengan pantas. Anda juga boleh menggunakan tip alat untuk mengesahkan ketepatan ungkapan anda (cth., sahkan bahawa anda telah memilih pembolehubah yang dikehendaki).

Dalam setiap contoh, terdapat tiga lajur:

  1. Sumber - ini ialah teks mentah yang anda masukkan ke dalam medan soalan LimeSurvey
  2. Paparan Cantik (Pretty Print) - ini ialah setara teks yang telah diserlahkan sintaksnya bagi apa yang anda masukkan
    • Perhatikan bahawa Ungkapan dipaparkan dengan latar belakang coklat cair, tetapi tidak dikelilingi oleh kurungan kerinting dalam penyerlahan ini.
    • Memandangkan EM menyokong penggantian rekursif, memaparkan kurungan kerinting dalam penyerlahan akan menyebabkan ralat sintaks
  3. Hasil - ini ialah output yang dijana apabila EM memproses sumber
    • Segala yang boleh diganti dengan betul akan diganti
    • Ungkapan yang mempunyai ralat dipaparkan sebaris, dengan penyerlahan sintaks. Ralat dikelilingi oleh kotak bergaris merah.


Sintaks yang Betul

Anda boleh melihat contoh sintaks yang betul di bawah:

  1. Nilai: menunjukkan bahawa pembolehubah yang dikenali dikodkan warna mengikut sama ada ia ditetapkan pada halaman semasa.
  2. Atribut soalan: menunjukkan bahawa tatatanda titik boleh mengakses beberapa sifat soalan
  3. Matematik: menunjukkan bahawa pengiraan asas dan kompleks disokong
  4. TextProcessing: menunjukkan beberapa fungsi pemprosesan teks yang tersedia
  5. Tarikh: menunjukkan dua daripada fungsi berkaitan tarikh yang tersedia
  6. Bersyarat: menunjukkan penggunaan fungsi if(). Pilihan boleh disarang.
  7. Perenggan yang disesuaikan: anda boleh menyesuaikan laporan sepenuhnya berdasarkan nilai terdahulu
  8. EM memproses dalam rentetan: menunjukkan bahawa ia boleh melakukan penggantian dalam rentetan. Contoh ini menjana nama imej yang disesuaikan.
  9. EM tidak memproses kurungan kerinting seperti ini: menunjukkan bahawa jika kurungan kerinting dilepaskan (escaped), atau terdapat ruang kosong antara ungkapan dan kurungan kerinting, ES mengabaikan ungkapan tersebut.


Sintaks EM yang Mengandungi Ralat

Berikut ialah contoh ralat biasa semasa menaip ungkapan ES. Perhatikan bahawa tip alat memberikan maklumat tambahan.

  1. JavaScript sebaris yang terlupa menambah ruang selepas kurungan kerinting
    • Memandangkan "document.write" muncul tepat selepas kurungan kerinting, EM menganggapnya sebagai ungkapan, dan meletakkan kotak merah pada "document" dan "write" kerana masing-masing ialah pembolehubah dan fungsi yang tidak ditakrif
  2. Pembolehubah, fungsi dan operator yang tidak diketahui/salah eja
    • Di sini kami terlupa bahawa kami menggunakan nama pembolehubah "gender" dan bukannya "sex", tetapi EM mengesan ralat itu. Ia juga meletakkan kotak merah pada '++', kerana itu bukan operator yang disokong.
  3. Memberi amaran jika menggunakan = dan bukannya eq, atau melakukan penetapan nilai
    • Perhatikan bahawa '=' dan '+=' berwarna merah dan bukannya hitam. Jika anda menuding tetikus pada kedua-duanya, anda akan melihat amaran bahawa anda sedang menetapkan nilai.
  4. Bilangan argumen yang salah untuk fungsi
    • if() menerima 3 argumen, tetapi diberi 4, jadi menuding pada "if" yang berkotak merah akan menjelaskan ralat dan menunjukkan sintaks yang disokong
    • sum() menerima bilangan argumen yang tidak terhad, tetapi terdapat koma di hujung sebelum kurungan penutup, jadi ia diberi kotak merah
  5. Kurungan tidak sepadan
    • Ini merupakan salah satu ralat yang paling biasa semasa menulis ungkapan.
    • Ini menunjukkan dua contoh kurungan penutup yang tertinggal, dan satu contoh kurungan penutup yang berlebihan.
  6. Sintaks tidak disokong
    • Jika anda menggunakan operator atau tanda baca yang tidak disokong oleh ES, ia akan diberi kotak merah.
  7. Penetapan tidak sah
    • Sesetengah pembolehubah ialah readWrite dan nilainya boleh diubah. Yang lain adalah baca sahaja.
    • Jika anda cuba mengubah nilai pembolehubah baca sahaja, anda tidak boleh. EM akan meletakkan kotak merah pada percubaan tersebut.
    • Jika anda cuba menetapkan nilai kepada persamaan atau rentetan, anda juga akan mendapat ralat



Contoh "langsung" Penyerlahan Sintaks dengan tip alat yang aktif

SumberPaparan CantikHasil
Berikut ialah contoh sintaks yang betul dengan tip alat
Helo {if(gender=='M','Mr.','Mrs.')} {surname}, sekarang pukul {date('g:i a',time())}. Adakah anda tahu di mana {sum(numPets,numKids)} anak dan haiwan peliharaan anda berada?
Berikut ialah contoh sintaks yang betul dengan tip alat
Helo if(gender == 'M','Mr.','Mrs.') surname, sekarang pukul date('g:i a',time()). Adakah anda tahu di mana sum(numPets,numKids) anak dan haiwan peliharaan anda berada?
Berikut ialah contoh sintaks yang betul dengan tip alat
Helo Mr. Smith, sekarang pukul 6:07 am. Adakah anda tahu di mana 3 anak dan haiwan peliharaan anda berada?
Berikut ialah ralat biasa supaya anda dapat melihat tip alat
Pembolehubah digunakan sebelum diisytiharkan: {notSetYet}
Fungsi tidak diketahui: {iff(numPets>numKids,1,2)}
Pembolehubah tidak diketahui: {sum(age,num_pets,numKids)}
Bilangan parameter salah: {sprintf()},{if(1,2)},{date()}
Menetapkan pembolehubah baca sahaja:{TOKEN:ATTRIBUTE_1+=10},{name='Sally'}
Kurungan tidak seimbang: {pow(3,4},{(pow(3,4)},{pow(3,4))}
Berikut ialah ralat biasa supaya anda dapat melihat tooltip
Pemboleh ubah yang digunakan sebelum diisytiharkan: notSetYet
Fungsi tidak diketahui: iff(numPets > numKids,1,2)
Pemboleh ubah tidak diketahui: sum(age,num_pets,numKids)
Bilangan parameter salah: sprintf(),if(1,2),date()
Menetapkan nilai pemboleh ubah baca sahaja:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Tanda kurungan tidak seimbang: pow(3,4,(pow(3,4),pow(3,4))
Berikut ialah ralat biasa supaya anda dapat melihat tooltip
Pemboleh ubah yang digunakan sebelum diisytiharkan: notSetYet
Fungsi tidak diketahui: iff(numPets > numKids,1,2)
Pemboleh ubah tidak diketahui: sum(age,num_pets,numKids)
Bilangan parameter salah: sprintf(),if(1,2),date()
Menetapkan nilai pemboleh ubah baca sahaja:TOKEN:ATTRIBUTE_1+=10,name='Sally'
Tanda kurungan tidak seimbang: pow(3,4,(pow(3,4),pow(3,4))
Berikut ialah sebahagian sintaks yang tidak disokong
Tiada sokongan untuk '++', '--', '%',';': {min(++age, --age,age % 2);}
Juga tidak untuk '|', '&', '^': {(sum(2 | 3,3 & 4,5 ^ 6)}}
Juga tidak untuk tatasusunan: {name[2], name['mine']}
Berikut ialah sebahagian sintaks yang tidak disokong
Tiada sokongan untuk '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Juga tidak untuk '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Juga tidak untuk tatasusunan: name [ 2 ] ,name [ 'mine' ]
Berikut ialah sebahagian sintaks yang tidak disokong
Tiada sokongan untuk '++', '--', '%',';': min( ++ age, -- age,age % 2) ;
Juga tidak untuk '|', '&', '^': (sum(2 | 3,3 & 4,5 ^ 6)}
Juga tidak untuk tatasusunan: name [ 2 ] ,name [ 'mine' ]


Contoh Penyesuaian (Tailoring)

"Yang dihormati {Mr}/{Mrs} Smith..."

Gunakan fungsi if() untuk memilih secara bersyarat sama ada 'Mr.' atau 'Mrs.' dipaparkan.

Sintaksnya ialah if(test,do_if_true,do_if_false).

# Kod Soalan Jenis
1 gender Apakah jantina anda? Jantina
2 example1 Yang dihormati {if(gender=='M','Mr.','Mrs.')} Smith, ... Teks bebas panjang



Seperti yang dapat dilihat di bawah, "Mr" dan "Mrs" disesuaikan mengikut jawapan yang dipilih oleh responden bagi soalan "gender".



"Yang dihormati {Mr}/{Mrs} Smith..." dalam e-mel jemputan

Anda boleh menggunakan contoh di atas dalam e-mel jemputan dengan menggunakan atribut daripada jadual token. Gunakan fungsi if() untuk memilih sama ada 'Mr.' atau 'Mrs.' perlu digunakan dalam e-mel.


Sintaksnya ialah "if(test,do_if_true,do_if_false)".

# atribut nilai
1 Nama akhir Smith
2 Alamat e-mel test@test.com
3 ATTRIBUTE_2 M


Teks dalam e-mel jemputan:

Yang dihormati {if(ATTRIBUTE_2=='M','Mr','Mrs')} {LASTNAME},

anda telah dijemput untuk menyertai tinjauan:

https:/...



Paparan e-mel:


Contoh Pengiraan / Penilaian

Mengira nilai penilaian semasa runtime dan menyimpan keputusan dalam data tinjauan

Contoh ini menggunakan semua ciri EM, termasuk Kaitan, Penyesuaian (Tailoring) dan jenis soalan Persamaan.

Ia juga menunjukkan bahawa kesemuanya menyokong JavaScript, jadi jika anda menggunakan ciri-ciri ini pada sesebuah halaman, halaman tersebut akan berubah secara dinamik apabila responden menetapkan dan menukar jawapan mereka.

# Kod Soalan Jenis Kaitan
1 numKids Berapa orang anak yang anda ada? Input berangka 1
2 kid1 Berapakah umur anak pertama anda? Input berangka numKids >= 1
3 kid2 Berapakah umur anak kedua anda? Input berangka numKids >= 2
4 kid3 Berapakah umur anak ketiga anda? Input berangka numKids >= 3
5 kid4 Berapakah umur anak keempat anda? Input berangka numKids >= 4
6 sumKidAges {sum(kid1.NAOK,kid2.NAOK,kid3.NAOK,kid4.NAOK)} Persamaan 1
7 kidSummary Anda menyatakan bahawa anda mempunyai {numKids}. {if(numKids==1,'child','children')}. {if(numKids>1,implode(' ','The sum of ages of your first ',min(numKids,4),' kids is ',sumKidAges,'.'),' ')} Paparan teks 1


Untuk memuat turun contoh ini, sila klik pautan berikut: Assessments_survey_example.


Anda boleh melihat di bawah tangkapan skrin bagi soalan-soalan contoh. Seperti yang dapat dilihat, EM menyerlahkan sintaks bagi semua medan yang mungkin mengandungi penyesuaian (tailoring). Di sini, anda dapat melihat contoh penyerlahan sintaks bagi Kaitan, jenis soalan Persamaan, dan penggantian di dalam soalan. Anda juga boleh menggunakan penggantian dalam Bantuan, paparan pengepala kumpulan, Halaman pengenalan dan Akhir pesanan.

Dalam contoh seterusnya, memandangkan kaitan ialah {numKids >= 2), soalan hanya akan kelihatan jika responden menyatakan bahawa dia mempunyai sekurang-kurangnya dua orang anak.



Di bawah, anda dapat melihat bahawa setiap pemboleh ubah mempunyai akhiran .NAOK. Ini disebabkan cara EM menyokong kaitan berperingkat. Jika anda tidak menggunakan .NAOK, jumlah hanya akan dikira jika orang itu menyatakan dia mempunyai 4 orang anak (iaitu, jika semua pemboleh ubah berkaitan). Penggunaan .NAOK bermaksud kita mahu mengira jumlah walaupun semua atau sebahagian pemboleh ubah tidak berkaitan (iaitu, "Not Applicable" (NA) tidak mengapa (OK)).

Walau bagaimanapun, atribut .NAOK hanya memberi kesan kepada sama ada pemboleh ubah dihantar ke dalam EM. Jika responden pada mulanya menyatakan dia mempunyai 3 orang anak, memasukkan umur bagi setiap seorang, kemudian mengubah fikiran dan menyatakan dia mempunyai 2 orang, kita tidak mahu melihat jumlah bagi 3 nilai yang dimasukkan - kerana anak ketiga kini "tidak berkenaan" dalam kes kita:



Setiap ungkapan yang berasingan dikodkan warna dengan latar belakang tan. Seperti yang anda lihat, terdapat tiga ungkapan berasingan di sini. Yang terakhir mengandungi mesej yang dipaparkan secara bersyarat hanya jika orang itu mempunyai lebih daripada seorang anak.



Sekarang, berikut ialah tangkapan skrin tinjauan semasa digunakan.

Apabila anda mula-mula melawat halaman ini, anda akan melihat paparan ini. Perhatikan bahawa ia menyatakan "You have 0 children" dan bukannya "You have 0 child".



Jika saya menukar nilai bilangan anak kepada 1, paparan berubah serta-merta kepada yang berikut, walaupun masih pada halaman yang sama:



Perhatikan sekarang bahawa tatabahasanya betul: "You have 1 child".

Sekarang saya menukar nilai bilangan anak kepada 3, dan paparan berubah serta-merta kepada yang berikut.

Perhatikan bahawa anda kini melihat mesej bersyarat di bahagian bawah: "The sum of ages of your first 3 kids is 0.".



Sekarang saya akan memasukkan umur bagi anak-anak khayalan saya, dan saya mendapat paparan ini yang menjumlahkan umur mereka:



Sekali lagi, skor dan paparan dikemas kini serta-merta apabila saya memasukkan nilai, jadi anda boleh menggunakannya untuk menunjukkan jumlah terkumpul bagi Skor Penilaian.


Sekarang, saya menukar nilai bilangan anak kepada 2. Paparan telah berubah kepada yang berikut:



Perhatikan bahawa walaupun saya telah memasukkan nilai 5.5 bagi anak ketiga, laporan kini hanya menjumlahkan nilai bagi 2 anak pertama saya.

Sebabnya ialah nilai ketiga kini tidak berkaitan, dan nilai yang tidak berkaitan diabaikan secara aktif oleh EM.

Jika saya menukar bilangan anak kembali kepada 3, saya akan melihat semula nilai 5.5 yang telah saya masukkan. Jadi, saya tidak kehilangan sebarang maklumat yang saya masukkan pada halaman itu.

Walau bagaimanapun, jika saya pergi ke halaman Seterusnya atau Sebelumnya, semua nilai yang tidak berkaitan akan dijadikan NULL dalam sesi dan dalam pangkalan data. Jadi, jika saya mengekalkan nilai pada 2, pergi ke halaman seterusnya, kemudian kembali dan menyatakan bahawa saya sebenarnya mempunyai 3 orang anak, saya tidak akan lagi melihat umur 5.5.


Masukkan data dan lihat laporan yang berubah secara dinamik bagi data yang dimasukkan pada halaman yang sama

Contoh ini menunjukkan proses penyesuaian (Tailoring) dalam LimeSurvey.

Untuk memuat turun contoh ini, klik pautan berikut: Contoh tinjauan perubahan dinamik.

Beginilah rupa halaman pada mulanya. Anda hanya melihat soalan yang bertanya di bandar mana anda tinggal:



Apabila anda mula memasukkan jawapan, proses penyesuaian (tailoring) turut bermula:


Semasa anda memasukkan jawapan, jadual di bahagian bawah halaman dikemas kini untuk memaparkan kod jawapan dan nilai bagi respons anda.


Contoh Penyahpepijatan Lazim

Pernyataan if() Bersarang (Logik Bersyarat)

EM menyokong fungsi "if(test,do_if_true,do_if_false)" supaya anda boleh melaksanakan logik bersyarat atau penyesuaian (tailoring). Fungsi ini boleh disarangkan untuk melakukan yang setara dengan "if { } else if { } else { }". EM akan memberitahu anda jika tanda kurungan tidak seimbang (cth., anda tertinggal kurungan tutup kanan), atau jika terdapat kurungan kanan yang berlebihan. Anda disarankan mengira tanda kurungan semasa menulis pernyataan if bersarang yang panjang, simpan, semak ralat sintaks, dan betulkannya jika ada. Mari kita semak contoh di bawah bersama-sama.

Kumpulan soalan yang digunakan di bawah boleh diakses dari sini: Contoh tinjauan penyesuaian.lsg


Pertama, apabila tiada apa-apa dimasukkan, anda hanya melihat "Helo."



Jika anda memasukkan nama, ia memaparkan "Helo {name}."



Jika anda memasukkan umur, anda akan mendapat mesej yang disesuaikan, bergantung pada sama ada anda kanak-kanak pra-sekolah atau tidak:



Peringkat umur sekolah, remaja atau dewasa. Berikut ialah seorang remaja yang mahu kekal tanpa nama:



Berikut ialah fail logik bagi kumpulan tersebut. Seperti yang anda lihat pada soalan "berasaskan if", terdapat pernyataan if bersarang berdasarkan umur seseorang.



Semasa anda mula-mula mengedit soalan ini, besar kemungkinan pada satu ketika anda akan menggunakan bilangan kurungan yang salah. Ini yang berlaku jika kurungan terlalu sedikit:



Jika anda lalukan tetikus di atas perkataan "if" yang dikelilingi kotak merah, ia memaparkan "Parentheses not balanced". Dalam kes ini, sepatutnya terdapat empat kurungan tutup selepas "already an adult!", tetapi hanya ada tiga.

Sebaliknya, jika anda mempunyai kurungan kanan yang berlebihan, ia akan dikelilingi kotak merah, seperti ini:



Apabila anda sedang mengedit soalan tersebut, soalan itu kelihatan seperti ini: