Tolong pilih kategori sesuai, jenis posting (diskusi atau bukan) dan sertakan tag/topik yang sesuai seperti komputer, java, php, mysql, dll. Promosi atau posting tidak pada tempatnya akan kami hapus!
- Bagi Anda yang ingin mendaftar, baca link berikut:
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1
http://diskusiweb.com/discussion/50491/how-to-registrasi-diskusiweb-com-baca-ini-terlebih-dahulu
- Cara menyisipkan kode program supaya tampil rapi dan terformat dengan baik di diskusiweb.com: http://www.diskusiweb.com/discussion/50415/cara-menyisipkan-kode-program-di-diskusiweb-com
- Cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1
Mendapatkan nilai true dari 2 tabel berbeda
Sore teman2..

saya ada masalah nich dengan pencocokan jawaban user dengan kunci jawaban. seperti gambar di bawah ini ada 2 buah tabel yaitu:
1) tabel kunci jawaban
2) tabel jawaban user

Dari tabel kunci jawaban terdapat satu pertanyaan dengan 2 jawaban yang background kuning. untuk mendapatkan nilai true kedua jawaban harus benar, dan jika hanya benar satu saja maka semua jawaban yg di background kuning salah.
Pertanyaannya gimana ya caranya agar diketahui jika satu saja jawaban salah yg background kuning maka tidak di hitung jawaban yang kedua walau misalnya jawabannya benar, atau sebaliknya.
Mohon pencerahaannya...
Comments
relasi nya dengan table jawaban user dengan field apa ?
b.username, b.id_pertanyaan
, GROUP_CONCAT( CONCAT ( a.ID_p2 , a.jawaban ) ORDER BY a.ID_p2 ASC SEPARATOR "" ) as kunci
, GROUP_CONCAT( CONCAT ( b.ID_p , b.jawaban_user ) ORDER BY b.ID_p ASC SEPARATOR "" ) as jawab
FROM tbl_jawab b
LEFT JOIN tbl_kunci a ON b.id_pertanyaan = a.id_pertanyaan AND b.ID_p = a.ID_p2
GROUP BY b.username,b.id_pertanyaan
ORDER BY b.username,b.id_pertanyaan
coba jalanin dolo query di atas, lihat hasilnya
coba dipikirkan gimana ambil keputusan TRUE nya
kalo beda ... tinggal coba aja napa ...
kan bisa dilihat sendiri hasilnya, sama atau beda dgn query situ
lalu dari hasil query yg gw tunjukin ...
masa ndak bisa menyimpulkan sendiri, nilai TRUE jika bagaimana ?
kalo ndak paham, posting kemari hasil query dr query yg gw tunjukin ...
kalo dr komen elo yg terakhir, gw cuma bisa menyimpulkan, query dr gw kagak elo coba
liat sendiri hasilnya
kalo query situ justru bikin masalah jadi panjang, kenapa gak dibongkar saja ?
nih snapshot ...
jangankan cuma 5 jawaban 1 pertanyaan
10 jawaban 1 pertanyaan aja, kalo 1 jawaban salah tau kalo FALSE
gini ajalah, mana table na ? posting kemari ...
lalu mana query yg dibuat ? posting kemari ...
b.user
, b.ID_quest
FROM ".Apt_Answer." b
LEFT JOIN ".Apt_Key." a ON b.ID_quest = a.ID_q AND b.ID_ob = a.ID_op
WHERE b.ID_user='".$id_user."' AND b.ID_cat='".$data_subcat->id."'
GROUP BY b.user,b.ID_quest
ORDER BY b.ID_quest
yg gw merahin, mana ada field itu di table nya ?
query nya tinggal benerin yg merah itu doang
kalo masalah tarik datanya ...
echo $qa['ID_jwbn'];
mana ada ID_jwbn ?
field itu di table emang ada, dipake di query emang iya ... tapi bukan OUTPUT query nya
output query yg gw biru-in
tolong, biar cepet dapet solusi, kalo masih bermasalah, selalu sertakan bagian query nya
SELECT
b.user
, b.ID_quest
FROM ".Apt_Answer." b
LEFT JOIN ".Apt_Key." a ON b.ID_quest = a.ID_q AND b.ID_ob = a.ID_op
WHERE b.ID_user='".$id_user."' AND b.ID_cat='".$data_subcat->id."'
GROUP BY b.user,b.ID_quest
ORDER BY b.ID_quest
yg gw hijau-in itu apa ya ?
concatenate variabel gak kaya gitu ... kalo itu nama table, ya ndak perlu di concat
Apt_Answer : tabel apt_answer
Apt_Key : tabel apt_key
iya mas boo itu nama tabel. berarti perintah sqlnya gak usah di isiin GROUP_CONCAT( CONCAT );
CONCATNYA gak perlu ya, soalnya saya baru pertama kali make prnth sql ini jadi bingung mas boo...
logikanya :
- CONCAT = gabungkan dulu sub_id dan kunci / jawaban nya, hasilnya semacam : 1A
- GROUP_CONCAT = lalu gabungkan seluruh kunci dgn nomer pertanyaan yg sama, hasilnya semacam : 1A2B3C
concat yg gw sebut di :
"... concatenate variabel gak kaya gitu ... kalo itu nama table, ya ndak perlu di concat ..."
itu lain cerita ...
- CONCAT yg di query itu CONCAT nya database
- concat / concatenate di script itu concat nya PHP
mana query nya ?
gw kan sudah bilang :
"tolong, biar cepet dapet solusi, kalo masih bermasalah, selalu sertakan bagian query nya"
biar masalahnya gak jadi bertele-tele
b.ID_user, b.ID_quest
, GROUP_CONCAT( DISTINCT a.ID_op , a.kunci ORDER BY a.ID_op ASC SEPARATOR '') as kunci
, GROUP_CONCAT( DISTINCT b.ID_ob , b.ID_jwbn ORDER BY b.ID_ob ASC SEPARATOR '') as jawab
FROM ".Apt_Answer." b
LEFT JOIN ".Apt_Key." a ON b.ID_quest = a.ID_q AND b.ID_ob = a.ID_op WHERE b.ID_user='".$id_user."' AND
ID_cat='".$data_subcat->id."'
GROUP BY b.ID_user,b.ID_quest
ORDER BY b.ID_user,b.ID_quest");
while($d=mysql_fetch_array($sql)){
} ?>
hasilnya spt gambar di bawah mas boo saya coba pake XAMMP:
tinggal bandingin doang, mana jawaban yg bener, mana yg salah ...
masa ndak bisa ?
logikanya :
IF kunci jawaban == jawaban user THEN nilai = 1 ELSE nilai = 0
lihat id pertanyaan 21
IF "522535" == "523533" THEN nilai = 1 ELSE nilai = 0
apa "522535" sama dengan "523533" ?
untuk id pertanyaan 21 :
jawaban user : 33
kunci jawaban: 24
mas untuk id pertanyaan 22 :
jawaban user : 33
kunci jawaban: 42
mas untuk id pertanyaan 23 :
jawaban user : D
kunci jawaban: C
Jadi tinggal di bandingkan ya mas dari hasil query di atas tanpa harus mencari spt yang saya buat cetak tebal di atas mas boo??
jawaban user : 33
kunci jawaban: 24
kok bisa ?
pan dari hasil query di atas :
jawaban user : 523533
kunci jawaban : 522535
itu kalo dibandingin, nilai harus keluar : 0 ... soalnya gak sama
33 dan 24 dari mana ?
b.ID_user, b.ID_quest,b.ID_cat
, GROUP_CONCAT( DISTINCT a.ID_op , a.kunci ORDER BY a.ID_op ASC SEPARATOR '/') as kunci
, GROUP_CONCAT( DISTINCT b.ID_ob , b.ID_jwbn ORDER BY b.ID_ob ASC SEPARATOR '/') as jawab
FROM ".Apt_Answer." b
LEFT JOIN ".Apt_Key." a ON b.ID_quest = a.ID_q AND b.ID_ob = a.ID_op where b.ID_user='".$id_user."' AND
b.ID_cat='".$data_subcat->id."'
GROUP BY b.ID_user,b.ID_quest
ORDER BY b.ID_user,b.ID_quest");misalnya pertanyaan 21 mempunyai 2 opsi jawaban yang benar mas boo
misalnya :
Pepaya mengandung vitamin ?
1) vit. A
2) vit C
3) vit D
dari pertanyaan di atas ada 2 jawaban yg benar
jawaban yang benar 1 dan 2.
saya simpan jawaban user ke tabel apt_answer:
ID pertanyaan | ID sub pertanyaan | Jawaban User | ID user login
21 1 1 10
21 2 3 10
Untuk kunci jawaban apt_key
ID pertanyaan | ID sub pertanyaan | Jawaban User
21 1 1
21 2 2
jika user memilih satu 1 dan 3 maka jawaban di anggap salah. Jadi hasil query di atas untuk pertanyaan 21 seharusnya berupa : 33 dan kunci jawaban 24.
Oya mas sya coba isi sparator untuk hasil querynya jadinya kayak gini dari pertanyaan 21 hasilx:
522/535-> hasil query kunci jawaban->
52=id sub pertanyaan 2 kunci jawaban pertama
53=id sub pertanyaan 5 kunci jawaban kedua
523/533-> hasil query jawaban user
52=id sub pertanyaan 3 kunci jawaban pertama
53=id sub pertanyaan 3 kunci jawaban kedua
OK mas boo tq bantuannya, saya ubah sedikit perintah sqlnya dan hasilnya sudah mau cocok...
Moga selalu memberikan solusi bg yg membutuhkan.. skl lagi trm kasih mas BOO...
lalu, di dalam while() :
$trueanswer[]=($nilaijawaban['kunci']==$nilaijawaban['jawab'])?1:0;
setelah while(), baru bisa pake array_sum()
bisa keluar hasil spt di gambar itu, koding yg dipake spt apa ?