レベル:初心者
ユーザーが更新できるように、javascriptファイルのajaxを使用してデータベースからhtmlページにユーザープロファイルデータを表示しようとしました。プロファイルをajaxで表示し、javascriptで更新できます。ただし、ラジオボタン付きの情報は変更できません。別の値を選択すると、「複数の値」が選択されるため、null値が含まれているとのことで更新できません。
データベースの更新で複数の値やエラーが発生することなく、ラジオボタン(jeniskelaminとgolongandarah)の値を編集/変更するにはどうすればよいですか?
何が悪いのかわかりません。私たちを手伝ってくれますか?これが私のコードです。
ありがとうございました。
サーバー側の私のphpコード:コントローラーとしてのnewpass.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class newpass extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->model('newpass_model','npmod');
}
//to get the user profile
public function read() {
$iduser = $this->session->userdata('id');
if(isset($iduser))
echo json_encode($this->npmod->getByIdUser($iduser));
}
//to edit the user profile
public function update() {
$s = $this->npmod->update();
echo $s;
}
}
?>
サーバー側の私のphpコード:モデルとしてのnewpass_model.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class newpass_model extends CI_Model {
//to get the user profile
function getByIdUser($iduser) {
$iduser = intval( $iduser );
$query = $this->db->where('iduser',$iduser)->limit( 1 )->get('pasien');
if( $query->num_rows() > 0 ) {
//return $query->row();
$row = $query->row();
$tgl = $row->tgllahir;
$myDateTime = DateTime::createFromFormat('Y-m-d', $tgl);
$newDateString = $myDateTime->format('d-m-Y');
$data = array(
'nama' => $row->nama,
'tempatlahir' => $row->tempatlahir,
'tgllahir' => $newDateString,
'jeniskelamin' => $row->jeniskelamin,
'tinggi_badan' => $row->tinggi_badan,
'berat_badan' => $row->berat_badan,
'goldarah' => $row->goldarah,
'kontak' => $row->kontak,
'nokontak_kel' => $row->nokontak_kel,
'email_kel' => $row->email_kel
);
return $data;
} else {
return array();
}
}
//to edit the user profile
public function update() {
$iduser = $this->session->userdata('id');
$tgl = $this->input->post('tanggal');
$myDateTime = DateTime::createFromFormat('d-m-Y', $tgl);
$newDateString = $myDateTime->format('Y-m-d');
$jkl = $this->input->post('jeniskelaminL');
$jkp = $this->input->post('jeniskelaminP');
if($jkl==''){
$jk=$jkp;
}else{
$jk=$jkl;
}
$golA = $this->input->post('golonganA');
$golB = $this->input->post('golonganB');
$golAB = $this->input->post('golonganAB');
$golO = $this->input->post('golonganO');
if($golA!=''){
$gol=$golA;
}else if($golB!=''){
$gol=$golB;
}else if($golAB!=''){
$gol=$golAB;
}else {
$gol=$golO;
}
$data = array(
'nama' => $this->input->post('nama'),
'tempatlahir' => $this->input->post('tempat'),
'tgllahir' => $newDateString,
'jeniskelamin' => $jk,
'tinggi_badan' => $this->input->post('tinggi'),
'berat_badan' => $this->input->post('berat'),
'goldarah' => $gol,
'kontak' => $this->input->post('kontak'),
'nokontak_kel' => $this->input->post('kontak_kel'),
'email_kel' => $this->input->post('kontak_em')
);
if($this->input->post('nama')=='' || $this->input->post('tempat')=='' || $newDateString=='' || $jk=='' ||
$this->input->post('tinggi')=='' || $this->input->post('berat')=='' || $gol=='' || $this->input->post('kontak')=='' ||
$this->input->post('kontak_kel')=='' || $this->input->post('kontak_em')=='')
{
echo "0";
}
else
{
$this->db->where('iduser',$iduser);
$this->db->update('pasien',$data);
if ($this->db->affected_rows() >= '1')
{
echo "1";
}else{
echo "0";
}
}
}
}
?>
クライアント側のJavaScriptコード:editprofile.js
/*Don't forget to add set_ip.js and jquery before you use this script in HTML page to make it work*/
var urlini = seturl();
var part= 'newpass/';
var readUrl = urlini+part+'read';
$( function() {
readUsers();
}); //end document ready
//to update profile
function update_profile() {
alert("click tombol simpan");
name = /^([-a-z0-9_-]{5,50})+$/i.test($("#nama").val());
bb = /^([-0-9_-])+$/i.test($("#berat").val());
var form_reg = $("input").val();
if(form_reg == "")
{
alert("Semua data harus diisi.");
}
else if(!name || !bb)
{
alert("Terdapat kesalahan atau data kosong pada pengisian data.\nPastikan password Anda sesuai.");
}
else
{
$.post(urlini+part+'update',
$('#edit_profile').serialize(),function(msg){
if(msg == '1')
{
alert("Data berhasil disimpan!");
window.location="home.html";
}
else if(msg == '0')
{
alert("Masih ada data yang kosong.");
}
});
}
}
function readUsers() {
$.ajax({
url: readUrl,
dataType: 'json',
type: 'GET',
success: function( response ) {
$( '#nama' ).val( response.nama);
$( '#tempat' ).val( response.tempatlahir);
$( '#tanggal' ).val( response.tgllahir);
if(response.jeniskelamin=="L"){
$('input:radio[name=jeniskelaminL]')[0].checked = true;
}else{
$('input:radio[name=jeniskelaminP]')[0].checked = true;
}
$( '#tinggi' ).val( response.tinggi_badan);
$( '#berat' ).val( response.berat_badan);
if(response.goldarah=='A'){
$('input:radio[name=golonganA]')[0].checked = true;
}else if(response.goldarah=='B'){
$('input:radio[name=golonganB]')[0].checked = true;
}else if(response.goldarah=='AB'){
$('input:radio[name=golonganAB]')[0].checked = true;
}else{
$('input:radio[name=golonganO]')[0].checked = true;
}
$( '#kontak' ).val( response.kontak);
$( '#kontak_kel' ).val( response.nokontak_kel);
$( '#kontak_em' ).val( response.email_kel);
//--- assign id to hidden field ---
$( '#userId' ).val( response.iduser );
}
});
} // end readUsers
クライアント側の私のhtmlコード:settings.html
<!DOCTYPE HTML>
<html>
<head>
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
<link rel="stylesheet" type="text/css" href="css/style1.css" />
<link href="date/kendo.common.min.css" rel="stylesheet">
<link href="date/kendo.default.min.css" rel="stylesheet">
<script src="date/js/jquery.min.js"></script>
<script src="date/js/kendo.web.min.js"></script>
<script src="date/js/console.js"></script>
<script src="jq/proses/set_ip.js"></script>
<script src="jq/proses/editprofile/editprofile.js"></script>
<script src="jq/proses/script.js"></script>
<script>
$(document).ready(function() {
// create DatePicker from input HTML element
$("#tanggal").kendoDatePicker({
start: "date",
depth: "year",
format: "dd/MM/yyyy",
});
});
</script>
<title>edc - e diabet consult</title>
</head>
<body>
<h1 align="center">Edit Profile</h1>
<p align="center" class="navigation">
<a href="home.html" title="Kembali ke CPanel">
<img src="ico/home.png">
</a>
<a href="pengaturan.html" title="Change Password">
<img src="ico/pass.png">
</a>
<a href="ranges.html" title="Set Target Range">
<img src="ico/setting.png">
</a>
</p>
<div id="updateDialog">
<form id="edit_profile" action="">
<p width="50%" align="center">
<strong>Nama Pasien</strong><br>
<input type="text" maxlength="350" id="nama" name="nama"><br>
<strong>Tempat Lahir</strong><br>
<input type="text" maxlength="350" id="tempat" name="tempat"><br>
<strong>Tanggal Lahir</strong><br>
<input type="text" maxlength="350" id="tanggal" name="tanggal" value="01-02-2013"><br>
<br>
<strong>Jenis Kelamin</strong><br>
<input class="float" type="radio" id="jeniskelaminL" name="jeniskelaminL" value="L">Laki-Laki
<input class="float" type="radio" id="jeniskelaminP" name="jeniskelaminP" value="P">Perempuan<br><br>
<strong>Tinggi Badan (cm)</strong><br>
<input type="text" id="tinggi" name="tinggi"><br>
<strong>Berat Badan (kg)</strong><br>
<input type="text" id="berat" name="berat" value=''><br>
<strong>Golongan Darah</strong><br>
<input class="float" type="radio" id="golonganA" name="golonganA" value="A">A
<input class="float" type="radio" id="golonganB" name="golonganB" value="B">B
<input class="float" type="radio" id="golonganAB" name="golonganAB" value="AB">AB
<input class="float" type="radio" id="golonganO" name="golonganO" value="O">O<br>
<br>
<strong>Kontak Pasien</strong><br>
<input type="text" id="kontak" name="kontak" value=''><br>
<strong>Kontak Keluarga</strong><br><br>
<strong>No.Telepon</strong><br>
<input type="text" id="kontak_kel" name="kontak_kel" value=''><br>
<strong>Email</strong><br>
<input type="text" id="kontak_em" name="kontak_em" value=''><br>
<input type="button" value="Simpan" onclick="update_profile()" id="simpan" class="button"/>
<input type="reset" value="Reset" class="button">
</p>
<br><br/>
</form>
</div>
</body>
</html>