Undefined property: stdClass alamat
in my view where I take ,
$this->data['prodi'] = $this->mprodi->get_all_prodi();
In my controller view I am getting this error. But when I am not take my select prodi is not shown.
This is my view :
<div class="field">
<label>Piih Prodi</label>
<input type="hidden" name="nama_prodi" value="<?php echo $data->nama_prodi;?>"><?php echo form_error('nama_prodi', '<div class="ui red pointing label">', '</div>'); ?>
<select name="prodi" id="select_prodi">
<?php foreach ($prodi as $prodi_data) :?>
<?php echo '<option value="'.$prodi_data->id_prodi.'">'.$prodi_data->nama_prodi.'</option>'; ?>
<?php endforeach; ?>
</select>
</div>
<div class="field">
<label>Fakultas</label>
<div class="ui small left icon input">
<input type="text" disabled="disabled" id="fakultas" class="fakultas" placeholder="fakultas" name="nama_fakultas">
<i class="text file outline icon"></i>
</div>
</div>
<div class="field">
<label>Alamat</label>
<textarea placeholder="text" name="alamat">
<?php echo $data->alamat;?>
</textarea><?php echo form_error('alamat', '<div class="ui red pointing label">', '</div>'); ?>
</div>
Controller :
function edit_anggota($nim='')
{
$this->form_validation->set_rules('nim', 'nim', 'required');
$this->form_validation->set_rules('email', 'email', 'required'););
$this->form_validation->set_rules('geup', 'Geup', 'required');
//$nim = $this->uri->segment(4);
$nim = $this->input->post('old_nim');
$this->data['prodi'] = $this->mprodi->get_all_prodi();
if (!empty($_POST))
{
$data['nim'] = $this->input->post('nim');
$data['email'] = $this->input->post('email');
$data['no_telp'] = $this->input->post('no_telp');
$data['tempat_lahir'] = $this->input->post('tempat_lahir');
$data['tanggal_lahir'] = $this->input->post('tanggal_lahir');
$data['tanggal_lahir'] = $this->input->post('tanggal_lahir');
$data['jenis_kelamin'] = $this->input->post('jenis_kelamin');
$data['angkatan'] = $this->input->post('angkatan');
$data['agama'] = $this->input->post('agama');
$data['id_prodi'] = $this->input->post('id_prodi');
$data['alamat'] = $this->input->post('alamat');
$data['sabuk'] = $this->input->post('sabuk');
$data['geup'] = $this->input->post('geup');
if ($this->form_validation->run() !== FALSE)
{
$config['upload_path'] = './images/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '5000';
$config['max_width'] = '10240';
$config['max_height'] = '7680';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile'))
{
if ($_FILES['userfile']['size']==0)
{
// echo "<pre>";
// print_r($_POST);
// print_r($_FILES);
// print_r($this->upload->display_errors());
// exit;
$this->mdaftar->update_daftar($nim,$data);
$this->session->set_flashdata('message', generateSuccessMessage('Data berhasil diupdate'));
redirect(site_url('anggota/profil/edit_anggota'));
}
else
{
$this->data['error']= $this->upload->display_errors();
$this->data['id_user'] = $this->session->userdata('user_id');
$this->data['orang'] = $this->mlogin->dataPengguna($this->session->userdata('username'));
$this->data['data'] = $this->mdaftar->get_daftar_detail($this->data['id_user']);
$this->data['contents'] = $this->load->view('anggota/edit_profil', $this->data, true);
$this->load->view('template/wrapper/mahasiswa/wrapper_sign',$this->data);
}
}
else
{
$datafoto=$this->upload->data();
$nm_file =$datafoto['file_name'];
$data['image']= $nm_file;
$this->mdaftar->update_daftar($nim,$data);
// print_r($this->mdaftar->update_daftar($nim,$data));
$this->session->set_flashdata('message', generateSuccessMessage('Data berhasil diupdate'));
redirect(site_url('anggota/profil/edit_anggota'));
}
}
else
{
$this->data['id_user'] = $this->session->userdata('user_id');
$this->data['detail'] = $this->mdaftar->get_daftar_detail($this->data['id_user']);
$this->data['orang'] = $this->mlogin->dataPengguna($this->session->userdata('username'));
$this->data['contents'] = $this->load->view('anggota/edit_profil', $this->data, true);
$this->load->view('template/wrapper/mahasiswa/wrapper_sign',$this->data);
}
}
else
{
$this->data['id_user'] = $this->session->userdata('user_id');
$this->data['data'] = $this->mdaftar->get_daftar_detail($this->data['id_user']);
$this->data['orang'] = $this->mlogin->dataPengguna($this->session->userdata('username'));
$this->data['contents'] = $this->load->view('anggota/edit_profil', $this->data, true);
$this->load->view('template/wrapper/mahasiswa/wrapper_sign',$this->data);
}
}
modal
function get_daftar_detail($id_user)//$limit = 10, $offset = 0)
{
//$this->db->order_by('id','asc');
//$this->db->limit($limit, $offset);
$this->db->select('*');
$this->db->join('prodi','prodi.id_prodi = mahasiswa.id_prodi','left');
$this->db->join('pendaftaran_anggota','pendaftaran_anggota.nim = mahasiswa.nim','left');
$this->db->join('anggota','anggota.id_anggota = pendaftaran_anggota.id_anggota','left');
$this->db->join('user','user.id_user = anggota.id_user','left');
$this->db->where('user.id_user',$id_user);
//$this->db->join('prodi','prodi.id_prodi = mahasiswa.id_prodi','join');
$data = $this->db->get('mahasiswa');
return $data->row();
}
function get_all_prodi()
{
$this->db->order_by('id_prodi','desc');
$data = $this->db->get($this->tbl_prodi);
return $data->result();
}
Please tell me what to do.
Thank you
It just because you have $data variable.
$this->data['data'] = $this->mdaftar->get_daftar_detail($this->data['id_user']);
And you use $data - foreach.
<?php foreach ($prodi as $data) :?>
You need change it.
<?php foreach ($prodi as $prodi_data) :?>
<div class="field">
<label>Piih Prodi</label>
<input type="hidden" name="nama_prodi" value="
<?php echo $data->nama_prodi;?>">
<?php echo form_error('nama_prodi', '
<div class="ui red pointing label">', '</div>'); ?>
<select name="prodi" id="select_prodi">
<?php
foreach ($prodi as $prodi_data)
{
echo '<option value="'.$prodi_data->id_prodi.'">'.$prodi_data->nama_prodi.'</option>';
}
?>
</select>
</div>
<div class="field">
<label>Fakultas</label>
<div class="ui small left icon input">
<input type="text" disabled="disabled" id="fakultas" class="fakultas" placeholder="fakultas" name="nama_fakultas">
<i class="text file outline icon"></i>
</div>
</div>
<div class="field">
<label>Alamat</label>
<?php
// We need to check $data.
// Please comment what the result. Paste in comment.
var_dump($data);
?>
<textarea placeholder="text" name="alamat">
<?php echo $data->alamat;?>
</textarea>
<?php echo form_error('alamat', '<div class="ui red pointing label">', '</div>'); ?>
</div>
This is because you have end your foreach loop before print that variable
try this one
<label>Piih Prodi</label>
<div>
<input type="hidden" name="nama_prodi" value="<?php echo $data->nama_prodi;?>"><?php echo form_error('nama_prodi', '<div class="ui red pointing label">', '</div>'); ?>
<select name="prodi" id="select_prodi">
<?php foreach ($prodi as $data) :?>
<?php echo '<option value="'.$data->id_prodi.'">'.$data->nama_prodi.'</option>'; ?>
// Other code ..
<div class="field">
<label>Alamat</label>
<textarea placeholder="text" name="alamat">
<?php echo $data->alamat;?>
<?php endforeach; ?>
</textarea><?php echo form_error('alamat', '<div class="ui red pointing label">', '</div>'); ?>
</div>
Related
I have the following code with the aim of saving images/upload to a temporary folder in my project root directory. It is expected that the path of the temporary folder be saved to database and the image saved to the temporary folder
I discover the images are not saving to temporary folder rather save directly to the database.
I am using CodeIgniter
Controller
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class ArticleController extends CI_Controller {
public function __construct(){
parent::__construct();
if (!$this->session->userdata('login_id'))
return redirect("LoginController");
$this->load->model('ArticleModel');
$this->load->model('CategoryModel');
$this->load->model('UserModel');
$data = array();
}
public function addarticle(){
$data['title'] = 'eBlog Admin Portal - Add Article';
$data['header'] = $this->load->view('include/header', $data, TRUE);
$data['sidebar'] = $this->load->view('include/sidebar', '', TRUE);
$data['categoryData'] = $this->CategoryModel->getCategory();
$data['userData'] = $this->UserModel->getuser();
$data['articleadd'] = $this->load->view('include/articleadd', $data, TRUE);
$data['footer'] = $this->load->view('include/footer', '', TRUE);
$this->load->view('addarticle', $data);
}
public function addArticleForm(){
//check whether user upload picture
if(!empty($_FILES['image_path']['upload_path'])){
$config['upload_path'] = 'uploads/images/';
$config['allowed_types'] = 'jpg|jpeg|png|gif|';
$config['file_name'] = $_FILES['image_path']['upload_path'];
//load upload library and initialize configuration
$this->load->library('upload',$config);
$this->upload->initialize($config);
if($this->upload->do_upload('image_path')){
$uploadData = $this->upload->data();
$image_path = $uploadData['file_name'];
}else{
$image_path = '';
}
}
$data['title'] = $this->input->post('title');
$data['content'] = $this->input->post('content');
$data['category_id'] = $this->input->post('category_id');
$data['written'] = $this->input->post('written');
$data['featured'] = $this->input->post('featured');
$data['image_path'] = $this->input->post('image_path');
$title = $data['title'];
$content = $data['content'];
$category_id = $data['category_id'];
$written = $data['written'];
$title = $data['featured'];
$image_path = $data['image_path'];
if (empty($title) && empty($content) && empty($category_id) && empty($written) && empty($featured) && empty($title)) {
$sdata = array();
$sdata['msg'] = '<span style="color:red">Filed must not be empty</span>';
$this->session->set_flashdata($sdata);
redirect("ArticleController/addarticle");
}else {
$this->ArticleModel->saveArticle($data);
$sdata = array();
$sdata['msg'] = '<span style="color:green">Article added successfully!</span>';
$this->session->set_flashdata($sdata);
redirect("ArticleController/addarticle");
}
}
}
Model
<?php
class ArticleModel extends CI_Model{
public function __construct(){
parent::__construct();
}
public function saveArticle($data){
$this->db->insert('articles', $data);
}
}
View
<h2>Add Article </h2>
<hr/>
<?php
$msg = $this->session->flashdata('msg');
if(isset($msg)){
echo $msg;
}
?>
<div class="panel-body" style="width:600px;">
<form action="<?php echo base_url(); ?>ArticleController/addArticleForm" method="post" 'enctype' = 'multipart/form-data'>
<div class="form-group">
<label>Title</label>
<input type="text" name="title" class="form-control span12" placeholder="Article Title" required="1">
</div>
<div class="form-group">
<label>Category</label>
<select name="category_id" class="form-control span12" required="1">
<option value="">Select Article Category</option>
<?php
foreach ($categoryData as $sdata) {
?>
<option value="<?php echo $sdata->id ; ?>"><?php echo $sdata->name; ?></option>
<?php } ?>
</select>
</div>
<div class="form-group">
<label>Written By</label>
<select name="written" class="form-control span12" required="1">
<option value="">Select Article Writer</option>
<?php
foreach ($userData as $udata) {
?>
<option value="<?php echo $udata->login_id; ?>"><?php echo $udata-> fullname; ?></option>
<?php } ?>
</select>
</div>
<div class="form-group">
<label>Featured</label>
<select name="featured" class="form-control span12" required="1">
<option value="">Select Article featured</option>
<?php
for($i = 0; $i <= 8; $i++) {
?>
<option value="<?php echo $i; ?>"><?php echo $i; ?></option>
<?php } ?>
</select>
</div>
<div class="form-group">
<label>Image</label>
<input type="file"name="image_path" class="form-control span12"placeholder="Chose Image" required="1">
</div>
<div class="form-group">
<label>Content</label>
<input type="text"name="content" class="form-control span12"placeholder="Article content" required="1">
</div>
<div class="form-group">
<input type="submit"class="btn btn-primary" value="Save">
</div>
</form>
</div>
Actually, I have saved all the data in database after i have show in front end,in my side issue is i have created upload image function to save database after i fetch and display the front end,upload function is taking to save full path like :C:/xampp/www/htdocs/rentozy/admin/images/media/rajkumar-1515559187/1.jpg. all the images saved folder also but in front end is coming like this only : C:/xampp/www/htdocs/rentozy/admin/images/media/rajkumar-1515559187/1.jpg please i need save database like this : (images/media/rajkumar-1499778784/19510.jpg) please help me how will resolve this this is my first sit is codeigniter please help how will pass like this url.
Here my code for controller:
function addNewMedia()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$this->load->library('form_validation');
$this->form_validation->set_rules('name','Name','trim|required|max_length[128]|xss_clean');
$this->form_validation->set_rules('event_image','Pg Image');
// $this->form_validation->set_rules('media_image','Image');
// $this->form_validation->set_rules('date_added','Date','trim|required');
if($this->form_validation->run() == FALSE)
{
$this->addNew();
}
else
{
$data = array(); $upload_data = array();
$this->load->library('upload');
$data['name'] = $this->input->post('name');
$folder_srting = $data['name']."-".time();
$data['name'] = $this->input->post('name');
// print_r($folder_srting);
$folder_string = str_replace(' ', '-', $folder_srting);// Replaces all spaces with hyphens.
$folder_string = preg_replace('/[^A-Za-z0-9\-]/', '', $folder_srting);// Removes special chars.
$folder_name = preg_replace('/-+/', '-', strtolower($folder_string));// Replaces multiple hyphens with single one.
print_r($folder_name);
//$data['name'] = $this->input->post('name');
//$pg_id = $this->input->post('pg_id');
if ($_FILES['event_image']['error'] != 4)
{
$folder = $this->checkdirectory($folder_name);
//print_r($folder_name);
$this->upload->initialize($this->set_upload_options($folder));
if ( ! $this->upload->do_upload('event_image'))
{
$error = array('error' => $this->upload->display_errors());
print_r($error); die;
}
else
{
$upload_data['banner_data'] = $this->upload->data();
//print_r($upload_data['banner_data']);die;
$upload_data['bannerfilepath'] = $upload_data['banner_data']['full_path'];
//print_r($upload_data['bannerfilepath']);die;
}
foreach($upload_data['banner_data'] as $bannerfilepath){
$data['banner_image_path'] = str_ireplace(FCPATH,"", $upload_data['banner_data']['full_path']);
//print_r($data['banner_image_path']);die;
}
$event_image = $data['banner_image_path'];
//print_r($event_image);die;
}
// $name = ucwords(strtolower($this->input->post('name')));
$event_image = $event_image;
//print_r($event_image);die;
$name = $this->input->post('name');
$address = $this->input->post('pg_address');
$incharge_name = $this->input->post('pg_incharge_name');
$incharge_mobile = $this->input->post('pg_incharge_mobile');
$email = $this->input->post('pg_email');
$mediaInfo = array('name'=>$name,'event_image'=>$event_image,'pg_address'=>$address,'pg_incharge_name'=>$incharge_name,'pg_incharge_mobile'=> $incharge_mobile,'pg_email'=>$email,'folder_name'=>$folder);
//echo "<pre>";print_r($mediaInfo);die;
$this->load->model('media_model');
//echo "<pre>";print_r($mediaInfo);die;
$result = $this->media_model->addNewMedia($mediaInfo);
if($result > 0)
{
$this->session->set_flashdata('success', 'New Pg created successfully');
}
else
{
$this->session->set_flashdata('error', 'Pg creation failed');
}
redirect('mediaListing');
}
}
}
function editMedia()
{
if($this->isAdmin() == TRUE)
{
$this->loadThis();
}
else
{
$this->load->library('form_validation');
$eventId = $this->input->post('pg_id');
$this->form_validation->set_rules('name','Name','trim|required|max_length[128]|xss_clean');
$this->form_validation->set_rules('event_image','Pg Image');
//$this->form_validation->set_rules('event_description','Event Description','required|max_length[200]');
// $this->form_validation->set_rules('start_date','Start Date','trim|required');
//$this->form_validation->set_rules('end_date','End Date','trim|required');
//$this->form_validation->set_rules('additional_images','Additional Images');
//$this->form_validation->set_rules('short_description','Short Description','required');
if($this->form_validation->run() == FALSE)
{
$this->editNew($eventId);
}
else
{
$data = array(); $upload_data = array();
$this->load->library('upload');
$existing_folder = $_POST['folder_name'];
//print_r($existing_folder);die;
if(isset($_POST['image_exists']) && $_POST['image_exists']!= '')
$temp_attachment = $_POST['image_exists'];
$folder = $this->checkdirectory($existing_folder);
if (isset($_FILES['event_image']['name']) && $_FILES['event_image']['error'][0] != 4 && $_FILES['event_image']['name']!='') {
$this->upload->initialize($this->set_upload_options($folder));
if ( ! $this->upload->do_upload('event_image'))
{
$error = array('error' => $this->upload->display_errors());
//print_r($error); die;
}
else
{
$upload_data['banner_data'] = $this->upload->data();
$upload_data['bannerfilepath'] = $upload_data['banner_data']['full_path'];
}
// GET REQUIRED BANNER IMAGES FILE PATH FROM FULL PATH
foreach($upload_data['banner_data'] as $bannerfilepath){
$data['banner_image_path'] = str_ireplace(FCPATH,"", $upload_data['banner_data']['full_path']);
print_r($data['banner_image_path']);die;
}
$event_image = $data['banner_image_path'];
//print_r($event_image);die;
}
else{
// echo "sfgjdf";
$event_image = $temp_attachment;
// print_r($event_image);die;
}
$event_image = $event_image;
$name = $this->input->post('name');
$pg_address = $this->input->post('pg_address');
$pg_incharge_name = $this->input->post('pg_incharge_name');
$pg_incharge_mobile = $this->input->post('pg_incharge_mobile');
$pg_email = $this->input->post('pg_email');
// $additional_images = $additional_images;
$mediaInfo = array('name'=>$name,'event_image'=>$event_image,'pg_address'=>$pg_address,'pg_incharge_name'=>$pg_incharge_name,'pg_incharge_mobile'=>$pg_incharge_mobile,'pg_email'=>$pg_email,'folder_name'=>$folder);
//echo "<pre>";print_r($mediaInfo);die;
$result = $this->media_model->editMedia($mediaInfo, $eventId);
if($result == true)
{
$this->session->set_flashdata('success', 'Pg updated successfully');
}
else
{
$this->session->set_flashdata('error', 'Pg updation failed');
}
redirect('mediaListing');
}
}
}
here my model:
function addNewMedia($mediaInfo)
{
$this->db->trans_start();
$this->db->insert('tbl_master_property', $mediaInfo);
$insert_id = $this->db->insert_id();
$this->db->trans_complete();
return $insert_id;
}
function getMediaInfo($eventId)
{
$this->db->select('pg_id, name,event_image,pg_address,pg_incharge_name,pg_incharge_mobile,pg_email,folder_name');
$this->db->from('tbl_master_property');
$this->db->where('status', 0);
$this->db->where('pg_id', $eventId);
$query = $this->db->get();
return $query->result();
}
function editMedia($mediaInfo, $eventId)
{
$this->db->where('pg_id', $eventId);
$this->db->update('tbl_master_property', $mediaInfo);
return TRUE;
}
here my view file code:
<?php
define("IMAGE_PATH", "http://localhost/rentozy/admin/");
$eventId = '';
$name = '';
$pg_address = '';
$pg_incharge_name = '';
$pg_incharge_mobile = '';
$pg_email ='';
$event_image = '';
$folder_name = '';
if(!empty($mediaInfo))
{
foreach ($mediaInfo as $ef)
{
$eventId = $ef->pg_id;
$name = $ef->name;
$pg_address = $ef->pg_address;
$pg_incharge_name = $ef->pg_incharge_name;
$pg_incharge_mobile = $ef->pg_incharge_mobile;
$pg_email = $ef->pg_email;
$event_image = $ef->event_image;
$folder_name = $ef->folder_name;
}
}
?>
<script type="text/javascript" src="http://js.nicedit.com/nicEdit-latest.js"></script> <script type="text/javascript">
//<![CDATA[
bkLib.onDomLoaded(function() { nicEditors.allTextAreas() });
//]]>
</script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="/resources/demos/style.css">
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>
<i class="fa fa-users"></i> Property Management
<small>Add / Edit Property</small>
</h1>
</section>
<section class="content">
<div class="row">
<!-- left column -->
<div class="col-lg-12 col-sm-12 col-md-12 col-xs-12">
<!-- general form elements -->
<div class="box box-primary">
<div class="box-header">
<h3 class="box-title">Enter Property Details</h3>
</div><!-- /.box-header -->
<!-- form start -->
<form role="form" action="<?php echo base_url() ?>editMedia" method="post" id="editEvent" role="form" enctype="multipart/form-data" files="true">
<div class="box-body">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label for="event_name">Name</label>
<input type="text" class="form-control" id="name" placeholder="Name" name="name" value="<?php echo $name; ?>" maxlength="128" readonly>
<input type="hidden" value="<?php echo $eventId; ?>" name="pg_id" id="eventId" />
<input type="hidden" value="<?php echo $folder_name; ?>" name="folder_name"/>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6" style="padding-bottom:15px;">
<div class="form-group">
<label for="description" class="pull-left">Pg Address</label>
<textarea rows="6" cols="50" name="pg_address" class="pull-left" style="width:100%;" value="<?php echo $pg_address;?>" id="pgaddress"><?php echo $pg_address;?></textarea>
</div>
</div>
<div class="col-md-6" style="padding-bottom:15px;">
<div class="form-group">
<label for="description" class="pull-left">Pg Incharge Name</label>
<div class="clearfix"></div>
<textarea rows="6" cols="50" name="pg_incharge_name" class="pull-left" style="width:100%;" value="<?php echo $pg_incharge_name;?>" id="pg_incharge_name" ><?php echo $pg_incharge_name;?></textarea>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="start-date">Pg Incharge Mobile</label>
<input type="text" class="form-control required pg_incharge_mobile" value="<?php echo $pg_incharge_mobile;?>" id="pg_incharge_mobile" name="pg_incharge_mobile">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label for="end-date">Pg Email</label>
<input type="text" class="form-control pg_email" value="<?php echo $pg_email;?>" id="pg_email" name="pg_email">
</div>
<div class="col-md-6">
<div class="col-md-6">
<div class="form-group">
<label for="event_image">Pg Image</label>
<input type="file" value="<?php echo $event_image; ?>" class="form-control file_change1" id="eventimage" name="event_image">
<img src="<?php echo IMAGE_PATH.$event_image;?>" width="100px" height="50px">
<input type="hidden" name="image_exists" value="<?php echo $event_image;?>" class="form-control" id="eventimage" placeholder="Enter Image Text" aria-describedby="fileHelp">
<div><?php echo $event_image;?></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
I don't know if you've thought about it, but you could easily use PHP's str_replace to do what you need.
<?php
$path = $upload_data['banner_data']['full_path'];
$dir = 'C:/xampp/www/htdocs/rentozy/admin/';
$url = str_replace( $dir, '', $path );
echo $url;
In CodeIgniter, if you are saving to a path that is a directory off of document root, you can use the FCPATH constant to make this easy. So if your path to your upload folder is in a directory named /uploads/, and /uploads/ is at document root, then:
<?php
$path = $upload_data['banner_data']['full_path'];
$dir = FCPATH . 'uploads/';
$url = str_replace( $dir, '', $path );
echo $url;
This is just an example, but it is easy
I have this edit page that has gets its id and status from uri segments. The problem is that if the user doesn't select an image or complete a part of the form, the page is supposed to reload and show the validation errors for the form. However that page reload causes the data in the form to go missing. Is there a way to solve this issue? Any help would be greatly appreciated. I attached my view, and controller
View
<?php if($edit == "false"){
echo form_open_multipart('Control/Products/ProductDetail/addProduct','class="productdetail"');
}else{
echo form_open_multipart('Control/Products/ProductDetail/editProduct','class="productdetail"');
}?>
<label for="inputproductname">Product Name</label>
<input type="text" class="form-control" id="inputproductname" name="inputproductname" placeholder="Name" value="<?php echo $name; ?>">
<label for="inputproductdescription">Product Description</label>
<textarea class="form-control" id="inputproductdescription" name="inputproductdescription" placeholder="Description" rows="7"
><?php echo $description; ?></textarea>
<label for="inputproductprice">Product Price</label>
<input type="price" class="form-control" id="inputproductprice" name="inputproductprice" placeholder="Price" value="<?php echo $price; ?>">
<label for="inputproductimage">Product Image</label>
<p><input type="file" class="form-control-file" name="upload" id="upload" aria-describedby="fileHelp"></p>
<input type="hidden" class="form-control" id="inputcurrentid" name="inputcurrentid" value="<?php echo $currentid; ?>">
<input type="hidden" class="form-control" id="inputcurrentstatus" name="inputcurrentstatus" value="<?php echo $currentstatus; ?>">
<button type="submit" class="btn btn-primary">
<?php if($edit == "false"){
echo "Add";
}else{
echo "Edit";
}?>
</button>
Cancel
<?php echo form_close(); ?>
<?php echo validation_errors(); ?>
<p><?php echo $this->session->flashdata('Form'); ?></p>
Controller
public function index(){
$productid = $this->uri->segment(5);
$editstatus = $this->uri->segment(6);
if($editstatus == "false"){
$data['name'] = '';
$data['description'] = '';
$data['price'] = '';
$data['edit'] = "false";
$data['message']='';
$data['currentid'] = '';
$data['currentstatus'] = '';
}else{
$product = $this->ProductsModel->getProduct($productid);
foreach ($product as $productdetail){
$data['name'] = $productdetail->name;
$data['description'] = $productdetail->description;
$data['price'] = $productdetail->price;
}
$data['edit'] = "true";
$data['message']='';
$data['currentid'] = $productid;
$data['currentstatus'] = $editstatus;
}
$this->load->view('control/controlMenu/navigationLink');
$this->load->view('control/controlProducts/productDetail',$data);
$this->load->view('control/controlMenu/navigationJquery');
}
public function editProduct(){
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
$this->form_validation->set_rules('inputproductname', 'Name', 'trim|required');
$this->form_validation->set_rules('inputproductdescription', 'Description', 'trim|required');
$this->form_validation->set_rules('inputproductprice', 'Price', 'trim|required');
if (empty($_FILES['userfile']['name']))
{
$this->form_validation->set_rules('upload', 'Image', 'required');
}
$inputproductname = $this->input->post('inputproductname');
$inputproductdescription = $this->input->post('inputproductdescription');
$inputproductprice = $this->input->post('inputproductprice');
$inputdateadded = date('Y-m-d');
$inputcurrentid = $this->input->post('inputcurrentid');
$inputcurrentstatus = $this->input->post('inputcurrentstatus');
$config['upload_path'] = $this->getProductImageFolderPath();
$config['allowed_types'] = 'jpg|jpeg|png';
$config['max_size'] = 3000;
$config['remove_spaces'] = TRUE;
$config['overwrite'] = TRUE;
$config['file_name'] = $inputproductname;
$this->load->library('upload', $config);
if($this->form_validation->run()==false){
redirect('/Control/Products/ProductDetail/index/'.$inputcurrentid.'/'.$inputcurrentstatus);
}else{
if(!$this->upload->do_upload('upload')){
$this->session->set_flashdata('Form',$this->upload->display_errors());
redirect('Control/'.$this->getCurrentModule().'/'.$this->getClassName());
}else{
$extension = $this->upload->data('file_ext');
$productdetails = array(
'name'=>$inputproductname,
'description'=>$inputproductdescription,
'price'=>$inputproductprice,
'imagePath'=>$config['upload_path'].$config['file_name'].$extension,
'dateAdded'=>$inputdateadded
);
$this->db->trans_start();
$this->ProductsModel->editProduct($productid,$productdetails);
$this->db->trans_complete();
if($this->db->trans_status()===false){
}else{
$this->session->set_flashdata('Form', $inputproductname . ' has been altered on the database');
redirect('/Control/Products/Products');
}
}
}
}
if($this->form_validation->run()==false){
redirect('/Control/Products/ProductDetail/index/'.$inputcurrentid.'/'.$inputcurrentstatus);
I think the problem with this redirect stmt don't use it instead you need to use load view so that it will preserves the errors array.
just do ths in your controller
if ($this->form_validation->run() == FALSE) {
$this->session->set_flashdata('field', form_error('field', '<span class="text-danger pl-3">', '</span>'));
redirect("url");
} else {
# code...
}
and in your redirect page use
<?= $this->session->flashdata('field'); ?>
I have a data table that I want to edit. I currently pass the id via the url to an edit page and provide a form that loads details from the database. However if there is any validation error, the form will reset and the details will disappear. I am thinking that if each row were a form, I could post the data and even with a refresh, the id would still remain. However I am afraid how slow it would make my table.
Does anyone have any other method that I may use? Thank you.
This is my code
View
<?php if($edit == "false"){
echo form_open_multipart('Control/Products/ProductDetail/addProduct','class="productdetail"');
}else{
echo form_open_multipart('Control/Products/ProductDetail/editProduct','class="productdetail"');
}?>
<label for="inputproductname">Product Name</label>
<input type="text" class="form-control" id="inputproductname" name="inputproductname" placeholder="Name" value="<?php echo $name; ?>">
<label for="inputproductdescription">Product Description</label>
<textarea class="form-control" id="inputproductdescription" name="inputproductdescription" placeholder="Description" rows="7"
><?php echo $description; ?></textarea>
<label for="inputproductprice">Product Price</label>
<input type="price" class="form-control" id="inputproductprice" name="inputproductprice" placeholder="Price" value="<?php echo $price; ?>">
<label for="inputproductimage">Product Image</label>
<p><input type="file" class="form-control-file" name="upload" id="upload" aria-describedby="fileHelp"></p>
<input type="hidden" class="form-control" id="inputcurrentid" name="inputcurrentid" value="<?php echo $currentid; ?>">
<input type="hidden" class="form-control" id="inputcurrentstatus" name="inputcurrentstatus" value="<?php echo $currentstatus; ?>">
<button type="submit" class="btn btn-primary">
<?php if($edit == "false"){
echo "Add";
}else{
echo "Edit";
}?>
</button>
Cancel
<?php echo form_close(); ?>
<?php echo validation_errors(); ?>
<p><?php echo $this->session->flashdata('Form'); ?></p>
Controller
public function index(){
$productid = $this->uri->segment(5);
$editstatus = $this->uri->segment(6);
if($editstatus == "false"){
$data['name'] = '';
$data['description'] = '';
$data['price'] = '';
$data['edit'] = "false";
$data['message']='';
$data['currentid'] = '';
$data['currentstatus'] = '';
}else{
$product = $this->ProductsModel->getProduct($productid);
foreach ($product as $productdetail){
$data['name'] = $productdetail->name;
$data['description'] = $productdetail->description;
$data['price'] = $productdetail->price;
}
$data['edit'] = "true";
$data['message']='';
$data['currentid'] = $productid;
$data['currentstatus'] = $editstatus;
}
$this->load->view('control/controlMenu/navigationLink');
$this->load->view('control/controlProducts/productDetail',$data);
$this->load->view('control/controlMenu/navigationJquery');
}
public function editProduct(){
$this->form_validation->set_error_delimiters('<p class="error">', '</p>');
$this->form_validation->set_rules('inputproductname', 'Name', 'trim|required');
$this->form_validation->set_rules('inputproductdescription', 'Description', 'trim|required');
$this->form_validation->set_rules('inputproductprice', 'Price', 'trim|required');
if (empty($_FILES['userfile']['name']))
{
$this->form_validation->set_rules('upload', 'Image', 'required');
}
$inputproductname = $this->input->post('inputproductname');
$inputproductdescription = $this->input->post('inputproductdescription');
$inputproductprice = $this->input->post('inputproductprice');
$inputdateadded = date('Y-m-d');
$inputcurrentid = $this->input->post('inputcurrentid');
$inputcurrentstatus = $this->input->post('inputcurrentstatus');
$config['upload_path'] = $this->getProductImageFolderPath();
$config['allowed_types'] = 'jpg|jpeg|png';
$config['max_size'] = 3000;
$config['remove_spaces'] = TRUE;
$config['overwrite'] = TRUE;
$config['file_name'] = $inputproductname;
$this->load->library('upload', $config);
if($this->form_validation->run()==false){
redirect('/Control/Products/ProductDetail/index/'.$inputcurrentid.'/'.$inputcurrentstatus);
}else{
if(!$this->upload->do_upload('upload')){
$this->session->set_flashdata('Form',$this->upload->display_errors());
redirect('Control/'.$this->getCurrentModule().'/'.$this->getClassName());
}else{
$extension = $this->upload->data('file_ext');
$productdetails = array(
'name'=>$inputproductname,
'description'=>$inputproductdescription,
'price'=>$inputproductprice,
'imagePath'=>$config['upload_path'].$config['file_name'].$extension,
'dateAdded'=>$inputdateadded
);
$this->db->trans_start();
$this->ProductsModel->editProduct($productid,$productdetails);
$this->db->trans_complete();
if($this->db->trans_status()===false){
}else{
$this->session->set_flashdata('Form', $inputproductname . ' has been altered on the database');
redirect('/Control/Products/Products');
}
}
}
}
my suggestion is, you make different method to add and edit or you can use ajax to call data and setInterval function to manage time you get the data
I need to display the form_error with set_value in form_dropdown for validation and it didn't work for me.
Here's the model (model_home.php):
public function get_dropdown() {
$result = $this->db->select('designation_id, designation')->get('designation')->result_array();
$dropdown = array();
foreach($result as $r) {
$dropdown[$r['designation_id']] = $r['designation'];
}
return $dropdown;
}
Here's the controller (home.php):
public function viewAddEmployeeForm() {
$this->load->model('Model_home');
$data = array();
$data['dropdown'] = $this->Model_home->get_dropdown();
$this->load->view('imports/header');
$this->load->view('imports/menu');
$this->load->view('emp_add', $data);
}
public function saveEmployee() {
$this->load->model('Model_home');
$data = array();
$data['dropdown'] = $this->Model_home->get_dropdown();
$rules = array(
array('field'=>'emp_desig','label'=>'Designation','rules'=>'trim|required')
);
$this->form_validation->set_rules($rules);
if($this->form_validation->run() == FALSE) {
$this->load->view('emp_add', $data);
} else {
$this->load->model('Model_home');
$p = new Model_home();
$p->designation_id = $this->input->post('emp_desi');
if($p->designation_id == 1) {
$p->user_type = 0;
} else {
$p->user_type = 1;
}
$result = $p->saveEmployee();
if (!$result) {
echo mysqli_error($result);
}
else {
redirect('home/goSettings', 'refresh');
}
}
}
Here's the view (emp_add.php):
<?php echo form_open('home/saveEmployee',array('class'=>'form-horizontal'));?>
<div class="form-group">
<label class="control-label col-md-3 col-sm-3 col-xs-12">Designation <span class="required"><font size="3" color="red">*</font></span>
</label>
<div class="col-md-6 col-sm-6 col-xs-12">
<?php echo form_dropdown('emp_desi', $dropdown, '', 'class="form-control" id="emp_desi" name="emp_desig" value="<?php echo set_value('emp_desig') ?>"'); ?>
<span style="color: red;"><?php echo form_error('emp_desig'); ?></span>
</div>
</div>
<div class="ln_solid"></div>
<div class="form-group">
<div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
<button type="submit" class="btn btn-success" name="emp_submit" id="emp_submit">Submit</button>
</div>
</div>
</form>
How will I display the form_error in form_dropdown especially for set_value? Thanks for your time.
Read the Form Helper doc. Your form_dropdown() was used incorrectly. You should pass in an array of options as the third parameter, rather than use set_value().