I am new to the codeigniter and i am trying its tutorials from the user guide. But i just got stuck in one place. In the code of the form validations. I am trying its example for the set_value property but my user text box is not returning anything.
In my view i added the following code:
<?php echo validation_errors();?>
<?php echo form_open('form');?>
<table border="0">
<tr>
<td><h5>Username</h5></td>
<td><input type="text" name="username" value="" size="50" value="<?php echo set_value('username'); ?>" /></td>
</tr>
<tr>
<td><h5>Password</h5></td>
<td><input type="password" name="password" value="" size="50" accept=" <?php echo set_value('password'); ?>" /></td>
</tr>
<tr>
<td><h5>password Confirm</h5></td>
<td><input type="password" name="passconf" value="" size="50" /></td>
</tr>
<tr>
<td><h5>Email Addres</h5></td>
<td> <input type="text" name="email" value="" size="50" accept="<?php echo set_value('email'); ?>" /></td>
</tr>
<tr>
<td> </td>
<td><div><input type="submit" value="Submit" /></div></td>
</tr>
</table>
</form>
and in my controller i added the following code:
function index()
{
$this->load->helper(array('form', 'url'));
$this->load->library('form_validation');
$this->form_validation->set_rules('username','username','required|min_length[5]|max-length[10]|xss_clean');
$this->form_validation->set_rules('password','password','required');
$this->form_validation->set_rules('passconf','password confirmation','required');
$this->form_validation->set_rules('email','email','required');
if ($this->form_validation->run() == FALSE)
{
$this->load->view('myform');
}
else
{
$this->load->view('formsucces');
}
}
Thank You in advance.
There are two value attributes in your input type..
Try this...
<td><input type="text" name="username" size="50" value="<?php echo set_value('username'); ?>" /></td>
There are some problems with CI and form validation...
You need own helper where grabs a value from the POST array for the specified field so you can re-populate an input field or textarea. If form validation is active it retrieves the info from the validation class
if (!function_exists('set_value')) {
function set_value($field = '', $default = '') {
$OBJ = & _get_validation_object();
if ($OBJ === TRUE && isset($OBJ->_field_data[$field])) {
return form_prep($OBJ->set_value($field, $default));
} else {
if (!isset($_POST[$field])) {
return $default;
}
return form_prep($_POST[$field]);
}
}
}
This solution is working, best answer. By the way, what is the difference between
<?php echo set_value('field_name'); ?>
and
<?php echo #$_POST['field_name']; ?>
Related
I have a dynamic form to add rows. The form lets the users to add transactions and submit it. I want to validate only the transaction numbers before inserting them into DB. I have to check
If the transaction field is empty or not
If the transaction already exists in the transactions table (if yes : display message transaction already exists. Please remove row. If no: proceed to DB insertion)
View part:
<div class="row">
<div class="col-md-12 ">
<?php echo validation_errors(); ?>
<?php
echo form_error("Transaction_number[]");
?>
<?php echo form_open('payment_refund/refund_form/'); ?>
<script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<table id='tbl' class="table table-bordered table-hover table-striped">
<thead>
<tr>
<th>Transaction_number</th>
<th>Order_number</th>
<th>Amount_paid</th>
<th>Transaction_date</th>
<th>Remove</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type='text' name='Transaction_number[]' value="<?php echo set_value('Transaction_number[]'); ?>" /></td>
<td><input type='text' name='Order_number[]' value="<?php echo set_value('Order_number[]'); ?>" /></td>
<td><input type='number' name='Amount_paid[]' value="<?php echo set_value('Amount_paid[]'); ?>" /></td>
<td><input type='date' name='Transaction_date[]' value="<?php echo set_value('Transaction_date[]'); ?>" /></td>
<td><input type='button' value='Remove' class='rmv'></td>
</tr>
</tbody>
<tfoot>
<tr>
<td colspan='3'><input type='button' value='+Add Row' id='add_row'></td>
</tr>
</tfoot>
</table>
<script>
$(document).ready(function(){
$("#add_row").click(function(){
var row="<tr> <td><input type='text' name='Transaction_number[]'></td> <td><input type='text' name='Order_number[]'></td> <td><input type='number' name='Amount_paid[]'></td> <td><input type='date' name='Transaction_date[]'></td> <td><input type='button' value='Remove' class='rmv'></td> </tr>";
$("#tbl tbody").append(row);
});
$("body").on("click",".rmv",function(){
$(this).closest("tr").remove();
});
});
</script>
<!-- Insert a check to see if any transaction details are entered before submit -->
<input type="submit" name="submit" id="submit" value="submit" class="btn btn-primary" >
<?php echo form_close(); ?>
</div>
Controller Part:
class Refund_form extends MY_Controller
{
public function __construct()
{
parent::__construct(array('stu'));
$this->load->model('payment_refund/refund_form_model','',TRUE);
}
public function index()
{
$this->load->helper('form');
$this->load->helper(array('form', 'url'));
$this->load->helper('array');
$this->load->library('form_validation');
$Transaction_number = $this->input->post('Transaction_number');
for($i = 0; $i < count($Transaction_number); $i++)
{
$tran = $Transaction_number[$i];
$this->load->library('form_validation');
$this->form_validation->set_rules($tran, 'Transaction', 'required');
}
if ($this->form_validation->run() == TRUE)
{
echo "All went well <br/>"; // insertion into DB for all table data fetched from view is done here
}
else
{
echo "All is NOT well <br/>";
}
public function add()
{
$this->drawHeader("Refund form - Add");
$this->load->view('payment_refund/refund_form_view');
$this->drawFooter();
}
Other methods that i tried to validate the form
`$formrules = array(
array(
'field' => 'Transaction_number[]',
'label' => 'the transsaction field',
'rules' => 'required'
),
);
$this->form_validation->set_rules($formrules);
if ($this->form_validation->run() == true)
{return true; } //DB insertion
else
{ return false; } `
DB insertion is done as below
for($i=0;$i<count($Transaction_number);$i++){
$data[] = [
'tracking_id' => $tracking_id,
'trans_id' => $Transaction_number[$i],
'order_id' => $Order_number[$i],
'amount' => $Amount_paid[$i],
'date_of_trans' => $Transaction_date[$i],
];
}
//inser_batch
$response=$this->db->insert_batch('refund_transaction_details',$data);
if($response==true){
echo "Records Saved Successfully";
}
else{
echo "Insert error !";
}
this is the edit statement for edit users I would like to call the user data to edit it. Yet I am receiving some strange result which I do not expect.
NAME user2
EMAIL user2#mail.com
ROLE }">Administrator manager
How to edit the code so that I get the right message - recalling the role as Administrator or manager it depends on the old data.
controllers/Cpages.php
public function editusers() {
$user_id = $this->uri->segment(3);
$data['user'] = $this->Mpages->call_point_user($user_id);
$this->load->view('editusers', $data);
}
views/editusers.php
<table border="0" style="width: 100%; height: 90px;">
<tr>
<td>NAME</td>
<td><input type="text" name="name" value="<?php echo $user_item->username; ?>"></td>
</td>
<tr>
<td>EMAIL</td>
<td><input type="text" name="email" value="<?php echo $user_item->email; ?>"></td>
</td>
<tr>
<td>ROLE</td>
<td>
<select>
<optgroup>
<option value="<?if((echo $user_item->role;) == "administrator"){ echo "selected";?>}">Administrator</option>
<option value="<?if((echo $user_item->role;) == "manager"){ echo "selected";?>}">Manager</option>
</optgroup>
</select><?php echo $user_item->role; ?>
</td>
</td>
<tr>
<td></td>
<td><button type="button" class="edit" href="adminform.php">ADD</button></td>
</td>
</table>
Did u get your data " $user_item->role " from your model? if no, i think you can try :
<?php echo $user['role']; ?> //to get data role that u send from controller
but if " $user_item->role " right, i think u just wrong when write if statement, try this :
<?php echo ($user_item->role == "administrator" ? "selected" : ""); ?>
I wonder why I still having this error message appearing.
A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: views/editpages.php
Line Number: 48
Backtrace:
File: C:\Program Files (x86)\EasyPHP-DevServer-14.1VC9\data\localweb\masterlinkci2\application\admin\views\editpages.php
Line: 48
Function: _error_handler
controllers/Cpages.php
public function editpagesupdate() {
$data['pagessuccess'] = '';
$pages_id = $this->uri->segment(3);
$data['pages'] = $this->Mpages->update_pages($pages_id);
$this->load->view('editpages', $data);
}
models/Mpages.php
public function update_pages($pages_id)
{
$data = array(
'pages_name' => $this->input->post('pages_name'),
'create_date' => $this->input->post('create_date'),
'pages_order' => $this->input->post('pages_order'),
'pages_content' => $this->input->post('pages_content')
);
$this->db->where('pages_id', $pages_id);
$query = $this->db->update('pages', $data);
//return $query->result_array();
return $query;
}
views/editpages.php
<div class="widget-box">
<div class="widget-title"><h5>Pages</h5></div>
<div class="widget-content">
<?php echo form_open('cpages/editpagesupdate'); ?>
<table border="0" style="width: 100%; height: 90px;">
<tr>
<td>Pages Name</td>
<td><input type="text" name="pages_name" value="<?php echo $pages_item['pages_name']; ?>"></td>
</tr>
<tr>
<td>Create Date</td>
<td><input type="text" name="create_date" value="<?php echo $pages_item['create_date']; ?>"></td>
</tr>
<tr>
<td>Order</td>
<td><input type="text" name="pages_order" value="<?php echo $pages_item['pages_order']; ?>"></td>
</tr>
<tr>
<td>View Content</td>
<td><textarea rows="3" cols="20" name="pages_content"><?php echo $pages_item['pages_content']; ?></textarea></td>
</tr>
<tr>
<td></td>
<td><input type="submit" class="edit" name="submit" value="SUBMIT"></td>
</tr>
</table>
</div>
</div>
<?php endforeach; ?>
controllers/Cpages.php
public function editpagesupdate() {
$data['pagessuccess'] = '';
$pages_id = $this->uri->segment(3);
$update = $this->Mpages->update_pages($pages_id);
$data = array();
/* get updated pages here */
if($update){
$data['pages'] = $this->Mpages->get_pages();
}
$this->load->view('editpages', $data);
}
models/Mpages.php
public function get_pages()
{
$query = $this->db->get('pages');
return $query->result_array();
}
views/editpages.php
<div class="widget-box">
<div class="widget-title"><h5>Pages</h5></div>
<div class="widget-content">
<?php echo form_open('cpages/editpagesupdate'); ?>
<table border="0" style="width: 100%; height: 90px;">
<?php foreach($pages as $pages_item) : ?>
<tr>
<td>Pages Name</td>
<td><input type="text" name="pages_name" value="<?php echo $pages_item['pages_name']; ?>"></td>
</tr>
<tr>
<td>Create Date</td>
<td><input type="text" name="create_date" value="<?php echo $pages_item['create_date']; ?>"></td>
</tr>
<tr>
<td>Order</td>
<td><input type="text" name="pages_order" value="<?php echo $pages_item['pages_order']; ?>"></td>
</tr>
<tr>
<td>View Content</td>
<td><textarea rows="3" cols="20" name="pages_content"><?php echo $pages_item['pages_content']; ?></textarea></td>
</tr>
<?php endforeach; ?>
<tr>
<td></td>
<td><input type="submit" class="edit" name="submit" value="SUBMIT"></td>
</tr>
</table>
</div>
</div>
my code runs well but im getting this error Message: Undefined property: stdClass::$Date and i dont know where this error came from, as far as ive seen my codes are correct. The problem is in my foreach code
here's my controller below
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start();
class News_and_events extends CI_Controller {
public function __construct(){
parent::__construct();
$this->load->library('form_validation');
$this->load->model('admin_model', 'am');
}
public function index(){
if($this->session->userdata('logged_in')){
$this->data['title'] = 'News and Events | Spring Rain Global Consultancy Inc Admin Panel';
$this->data['logout'] = 'Logout';
$session_data = $this->session->userdata('logged_in');
$this->data['id'] = $session_data['id'];
$this->data['username'] = $session_data['username'];
$this->data['allData'] = $this->am->getAllData();
$this->load->view('pages/admin_header', $this->data);
$this->load->view('content/news_and_events', $this->data);
$this->load->view('pages/admin_footer');
}else{
redirect('login', 'refresh');
}
}
}
my model
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
Class Admin_model extends CI_Model{
public function saveData($array){
$this->db->insert('news_and_updates', $array);
}
public function getAllData(){
return $this->db->select(
'news_and_updates.Event',
'news_and_updates.Description',
'news_and_updates.Date'
)
->from('news_and_updates')
->order_by("Date", "desc")
->get()->result_object();
}
}
?>
and my views
<script type="text/javascript">
$(document).ready(function(){
$("#add_another").click(function(){
alert('test');
});
});
</script>
<div class="container" >
<br />
<br />
<br />
<ul id="nav">
<li><h4>Home</h4></li>
<li><h4>News and Events</h4></li>
<li><h4>Activities</h4></li>
</ul>
<div class="starter-template">
<h1>News And Events</h1>
<?php if($this->session->flashdata('add_another')):?>
<div id="add_another" style="float:left;">
<input type="button" value="Add Another" class="btn btn-primary" />
</div>
<?php else: ?>
<form action="<?php echo base_url().'news-and-events/add'?>" method="post">
<?php echo validation_errors('<div class="error">', '</div>');?>
<table class="table-striped">
<tr>
<td>Date: </td>
<td><input type="text" id="datepicker" name="date" value="<?php echo set_value('date');?>" /></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td >Event: </td>
<td ><input type="text" name="event" value="<?php echo set_value('event');?>" /></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td width="20%">Description: </td>
<td><textarea cols="30" rows="5" name="description" ><?php echo set_value('description');?></textarea></td>
</tr>
<tr>
<td width="20%"> </td>
<td><input type="submit" value="Add" class="btn btn-success" /></td>
</tr>
</table>
</form>
<?php endif; ?>
<br />
<br />
<table class="table" >
<tr>
<th>Date</th>
<th width="51%">Event</th>
<th>Description</th>
<th>Options</th>
</tr>
<?php foreach($allData as $x => $allDatas): ?>
<tr>
<td><?php echo $allDatas->Date; ?></td>
<td><?php echo $allDatas->Event; ?></td>
<td></td>
<td></td>
</tr>
<?php endforeach; ?>
</table>
</div>
</div><!-- /.container -->
<script>
var date = new Date();
var currentMonth = date.getMonth();
var currentDate = date.getDate();
var currentYear = date.getFullYear();
$('#datepicker').datepicker({
minDate: new Date(currentYear, currentMonth, currentDate),
dateFormat: "yy-mm-dd"
});
</script>
in my foreach code the error is this one $allDatas->Date; it says Message: Undefined property: stdClass::$Date
and that's the field name in my table Date
can someone help me figured this out??
any help is much appreciated! thanks! can't find the error
In your model or controller - after the getAllData method is executed:
echo the result of $this->db->last_query()
Manually execute the returned query in your database, then fix your query
As the comments started, The issue is that Date isn't generated from the query, which means something is wrong in that level, not the output itself.
Make sure the query is correct, dump it before you load the view directly from the controller to see what it gets, if it doesn't get a Date, your issue is elsewhere, probably in the query itself.
What I'm trying to say is: when you click dropdown or select, it will fetch the data of prod_temno, prod_desc,prod_selluom then populate to the textbox named: idesc and inventoryuom. I hope you can help me. Thanks in advance.
<table>
<tr><form name="form1">
<td>Item No:</td>
<td>
<select type="text" id="inventoryitemno" name="inventoryitemno" >
<?php
foreach($itemno as $row){
echo "<option id=".$row->prod_id.">".$row->prod_itemno."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Description:</td>
<td><input type="text" id="idesc" name="idesc"/></td>
</tr>
<tr>
<td>UOM:</td>
<td><input type="text" id="inventoryuom" name="inventoryuom" /></td>
</tr>
</table>
This is my products_model
public function view_product_itemno(){
$this->load->database();
$data = $this->db->query('select prod_id, prod_itemno, prod_desc, prod_inventoryuom from product;');
return $data->result();
}
I hope this is clear for you guys. Thanks.
is this what you want?
<?php
$itemno = array('0'=>'a','1'=>'b','2'=>'c');
?>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.min.js" ></script>
<table>
<tr><form name="form1">
<td>Item No:</td>
<td>
<select type="text" id="inventoryitemno" name="inventoryitemno" onchange="javascript:set_to(this.value);" >
<?php
foreach($itemno as $key=>$val){
echo "<option id=".$key.">".$val."</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td>Description:</td>
<td><input type="text" id="idesc" name="idesc"/></td>
</tr>
<tr>
<td>UOM:</td>
<td><input type="text" id="inventoryuom" name="inventoryuom" /></td>
</tr>
</table>
<script type="text/javascript">
function set_to(id)
{
$('#idesc').val(id);
}
</script>
You can also refer this link -> chaneg event
I am assuming that you have to call the function when someone change the select box. You have to call the model through ajax and then put reponse into textbox:-
$('#inventoryitemno').change(function()
{
// write ajax code and call your model and dump the result into your textbox
$.ajax({
type:"POST",
data:"value="+$(this).val(),
url:"your_controller_path",
success:function(msg)
{
$('#idesc').val(msg);
}
});
});
Your controller should be like this say controller name is product_controller :-
function product_details()
{
$value = $this->input->post('value'); // value from ajax
$this->products_model->products_model($value);
echo "response"; //return the result back to ajax success function
}
What about "<DATALIST>"?
<input type=text name='somename' list='somelist'>
<datalist id="somelist">
<option value=1>One</option>
.
.
<option value=99>Ninety-Nine</option>
</datalist>
You can even fill the list from a DB with mysql
<datalist = id=somelist>
<?
$sql="select * from my_table";
$rs=mysql_query($sql,$mysql_connection);
$row=mysql_fetch_assoc($rs);
do {
printf("<option value='%s'>",$row['some_field'])}
while($row=mysql_fetch_assoc($rs));
Hope that helps.