'error','message'=>'ID tidak valid']); exit; } $kk_nama = esc($conn,$_POST['kk_nama'] ?? ''); $nik = esc($conn,$_POST['nik'] ?? ''); $alamat = esc($conn,$_POST['alamat'] ?? ''); $kecamatan = esc($conn,$_POST['kecamatan'] ?? ''); $kelurahan = esc($conn,$_POST['kelurahan'] ?? ''); $lat = (float)($_POST['lat'] ?? 0); $lng = (float)($_POST['lng'] ?? 0); $jumlah = max(1,(int)($_POST['jumlah_anggota'] ?? 1)); $valid_st = ['belum_dibantu','sudah_dibantu','menunggu_verifikasi']; $status = in_array($_POST['status_bantuan']??'',$valid_st) ? $_POST['status_bantuan'] : 'belum_dibantu'; $jenis_bantuan = esc($conn,$_POST['jenis_bantuan'] ?? ''); $tanggal = $_POST['tanggal_bantuan'] ?? ''; $tanggal_sql = ($tanggal && preg_match('/^\d{4}-\d{2}-\d{2}$/',$tanggal)) ? "'$tanggal'" : 'NULL'; if (!$kk_nama||!$alamat||!$lat||!$lng){echo json_encode(['status'=>'error','message'=>'Data tidak lengkap']);exit;} // Find nearest ibadah $ibadah_res = mysqli_query($conn,"SELECT id,lat,lng,radius FROM rumah_ibadah"); $nid=null;$ndist=PHP_FLOAT_MAX; while($row=mysqli_fetch_assoc($ibadah_res)){ $d=haversine($lat,$lng,(float)$row['lat'],(float)$row['lng']); if($d<=(float)$row['radius']&&$d<$ndist){$ndist=$d;$nid=$row['id'];} } if(!$nid){mysqli_data_seek($ibadah_res,0);while($row=mysqli_fetch_assoc($ibadah_res)){$d=haversine($lat,$lng,(float)$row['lat'],(float)$row['lng']);if($d<$ndist){$ndist=$d;$nid=$row['id'];}}} $jarak=$nid?round($ndist,2):'NULL';$ibadah_sql=$nid?$nid:'NULL';$jarak_sql=is_numeric($jarak)?$jarak:'NULL'; // Handle file upload $bukti_sql='bukti_file=bukti_file'; // keep existing if(!empty($_FILES['bukti_file']['name'])&&$_FILES['bukti_file']['error']===UPLOAD_ERR_OK){ $ext=strtolower(pathinfo($_FILES['bukti_file']['name'],PATHINFO_EXTENSION)); $allowed=['jpg','jpeg','png','webp','pdf','doc','docx']; if(in_array($ext,$allowed)&&$_FILES['bukti_file']['size']<=5*1024*1024){ $dir=__DIR__.'/../uploads/bukti/'; if(!is_dir($dir))mkdir($dir,0755,true); $fname='bukti_'.time().'_'.bin2hex(random_bytes(4)).'.'.$ext; if(move_uploaded_file($_FILES['bukti_file']['tmp_name'],$dir.$fname)){ $bukti_sql="bukti_file='".esc($conn,$fname)."'"; } } } $q="UPDATE penduduk_miskin SET kk_nama='$kk_nama',nik='$nik',alamat='$alamat',kecamatan='$kecamatan',kelurahan='$kelurahan',lat=$lat,lng=$lng,jumlah_anggota=$jumlah,rumah_ibadah_id=$ibadah_sql,jarak_meter=$jarak_sql,status_bantuan='$status',jenis_bantuan='$jenis_bantuan',tanggal_bantuan=$tanggal_sql,$bukti_sql WHERE id=$id"; if(!mysqli_query($conn,$q)){echo json_encode(['status'=>'error','message'=>mysqli_error($conn)]);exit;} // Update anggota mysqli_query($conn,"DELETE FROM anggota_keluarga WHERE penduduk_id=$id"); $anggota=json_decode($_POST['anggota']??'[]',true)?:[]; foreach($anggota as $a){ if(empty($a['nama']))continue; $an=esc($conn,$a['nama']);$ah=esc($conn,$a['hubungan']??'');$au=(int)($a['umur']??0);$ap=esc($conn,$a['pekerjaan']??'');$ak=esc($conn,$a['keterangan']??''); mysqli_query($conn,"INSERT INTO anggota_keluarga (penduduk_id,nama,hubungan,umur,pekerjaan,keterangan) VALUES ($id,'$an','$ah',$au,'$ap','$ak')"); } echo json_encode(['status'=>'success']);