Fungsi foreach mengalami kegagalan

Risonly Simbolon · Feb 6, 2013
Dear Pak ellyx
Saya mengalami sedikit masalah pada fungsi looping foreach seperti yang sudah Bapak paparkan beberapa waktu yang lalu. apda beberapa form, fungsi ini berjalan dengan baik tanpa masalah. Akan tetapi ada satu form yang tidak dapat menjalankan fungsi ini. Selalu menghasilkan
Warning: Invalid argument supplied for foreach()
Berikut script yang sudah saya buat:
Script input.
<?
 if ($jenisnilai=='Bulanan1' and $bidangstudi=='Agama_Katolik')
 {
 $marquery=mysql_query("SELECT * FROM siswa WHERE tahunpelajaran='$tahunpelajaran' AND kelas='$kelas' AND subkelas='$subkelas' ORDER BY siswa.id ASC",$jou);
 if (!$marquery){
 die ("Gagal menampilkan daftar nama!! ".mysql_error()); }
 $hitung=mysql_num_rows($marquery);
 echo "Jumlah data: ".$hitung."<br />";
 $i=0;

 echo "DAFTAR NILAI MATA PELAJARAN ".$bidangstudi." UNTUK NILAI ".$jenisnilai;
 echo "<th>T/P</th><th colspan=\"2\">KELAS</th><th>SEMESTER</th><th>NAMA SISWA</th><th>UB1</th>";
 while ($row=mysql_fetch_array($marquery)){
 echo "<tr><td><input type=\"text\" size=\"9\" name=\"tahunpelajaran[$i]\" id=\"tahunpelajaran\" readonly=\"readonly\" value=\"".$row['tahunpelajaran']."\"/></td>
 <td><input type=\"text\" size=\"3\" name=\"kelas[$i]\" id=\"kelas\" readonly=\"readonly\" value=\"".$row['kelas']."\"/></td>
 <td><input type=\"text\" size=\"3\" name=\"subkelas[$i]\" id=\"subkelas\" readonly=\"readonly\" value=\"".$row['subkelas']."\"/></td>
 <td><input type=\"text\" size=\"8\" name=\"semester[$i]\" id=\"semester\" readonly=\"readonly\" value=\"".$semester."\"/></td>
 <td><input type=\"text\" size=\"40\" name=\"namasiswa[$i]\" id=\"namasiswa\" readonly=\"readonly\" value=\"".$row['nama_siswa']."\"/></td>
 <td><input type=\"text\" maxlength=\"3\" size=\"9\" name=\"bulanan1[$i]\" id=\"bulanan1\" tabindex=\"1\"/></td></tr>";
 $i++;
 }
 ?>

Dan ini adalah scrip action-nya:
<?php
foreach($_POST['bulanan1'] as $i => $bulanan1){
$kelas = $_POST['kelas'][$i];
$subkelas = $_POST['subkelas'][$i];
$semester = $_POST['semester'][$i];
$tahunpelajaran = $_POST['tahunpelajaran'][$i];
$namasiswa = $_POST['namasiswa'][$i];

$marquery=mysql_query("INSERT INTO daftar_agama (tahunpelajaran, kelas, subkelas, semester, namasiswa, ub1)
VALUES ('$tahunpelajaran', '$kelas', '$subkelas', '$semester', $bulanan1'",$jou);

if(!$marquery){die ("Gagal ".mysql_error());}

}
?>

Saya coba buka referensi ttg ini, dan ada informasi yang mengatakan bahwa ini kemungkinan terjadi karena saya menjalankan foreach BUKAN pada array atau object. Padahal pada form inputnya khan itu sudah menghasilkan array.
Berhari2 saya bingung dan mencari informasi, tapi tetap buntu.
Mohon bantuannya, Pak ellyx.
Terima kasih.
Silahkan login untuk menjawab!
0
Loading...
Ellyx Christian · Feb 6, 2013 · 0 Suka · 0 Tidak Suka
coba tambahkan:

echo '<pre>';
var_dump($_POST);
var_dump($_POST);
echo '</pre>';
die('debug');

sebelum foreach, dan lihat apa hasilnya setelah tombol submit ditekan
0
Loading...
Risonly Simbolon · Feb 7, 2013 · 0 Suka · 0 Tidak Suka
Setelah saya masukkan script yang bapak berikan, saya menemukan bahwa array-nya kosong.
Saya mencoba mencari sendiri mengapa array saya kosong, dan sekarang sudah ketemu.
Terima kasih, Pak Ellyx.