I am trying to create a page where, you can submit a form and it update values based on what you select, I cannot see what I am doing wrong but at some point, I think I am erring with regards to the MySQL command.
The idea is you select a page(friendly name) on the top option-select, and on the bottom you set the ID to the value of another pageID.
The effect it should be achieving is that the user can change change what content is displayed on a particular page.
Question: According to the query return, the update runs, but nothing is changed in my page_routes table
My View, the values are pulled from the database, they populate correctly.
<form class="form-horizontal" action="<?php echo site_url('/view/updatepageid'); ?>" method="post">
<fieldset>
<!-- Form Name -->
<legend>Form Name</legend>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="friendly_name">Page</label>
<div class="controls">
<select id="friendlyname" name="friendlyname" class="input-xlarge">
<?php foreach($pageroutes as $key): ?>
<option value="<?php echo $key['friendly_name']; ?>"><?php echo $key['friendly_name']; ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="selectbasic">Change to:</label>
<div class="controls">
<select onchange="this.form.submit();" id="newid" name="newid">
<?php foreach($page_data as $key): ?>
<option value="<?php echo $key['id']; ?>"><?php echo $key['pagetitle']; ?></option>
<?php endforeach; ?>
</select>
</div>
</div>
</fieldset>
</form>
Which submits to here
function updatepageid(){
$this->load->model('view_model');
$friendlyname = $this->input->post('friendlyname');
$newid = $this->input->post('newid');
$query = $this->view_model->setpageid($friendlyname, $newid);
if($query == TRUE){
echo 'updated';
}else { echo 'failed'; }
var_dump($query);
}
and my Model view_model setpageid function
function setpageid($friendlyname, $newid){
$this->db->where('friendly_name', $friendlyname);
$query = $this->db->set('page_routes','pageid', $newid);
return $query;
}
If I var_dump($query) it returns
Object(CI_DB_mysql_driver)[14]
public 'dbdriver' => string 'mysql' (length=5)
public '_escape_char' => string '`' (length=1)
public '_like_escape_str' => string '' (length=0)
public '_like_escape_chr' => string '' (length=0)
public 'delete_hack' => boolean true
public '_count_string' => string 'SELECT COUNT(*) AS ' (length=19)
public '_random_keyword' => string ' RAND()' (length=7)
public 'use_set_names' => boolean false
public 'ar_select' =>
array (size=0)
empty
public 'ar_distinct' => boolean false
public 'ar_from' =>
array (size=0)
empty
public 'ar_join' =>
array (size=0)
empty
public 'ar_where' =>
array (size=1)
0 => string '`friendly_name` = 'aboutus'' (length=28)
public 'ar_like' =>
array (size=0)
empty
public 'ar_groupby' =>
array (size=0)
empty
public 'ar_having' =>
array (size=0)
empty
public 'ar_keys' =>
array (size=0)
empty
public 'ar_limit' => boolean false
public 'ar_offset' => boolean false
public 'ar_order' => boolean false
public 'ar_orderby' =>
array (size=0)
empty
public 'ar_set' =>
array (size=1)
'`page_routes`' => string ''pageid'' (length=8)
public 'ar_wherein' =>
array (size=0)
empty
public 'ar_aliased_tables' =>
array (size=0)
empty
public 'ar_store_array' =>
array (size=0)
empty
public 'ar_caching' => boolean false
public 'ar_cache_exists' =>
array (size=0)
empty
public 'ar_cache_select' =>
array (size=0)
empty
public 'ar_cache_from' =>
array (size=0)
empty
public 'ar_cache_join' =>
array (size=0)
empty
public 'ar_cache_where' =>
array (size=0)
empty
public 'ar_cache_like' =>
array (size=0)
empty
public 'ar_cache_groupby' =>
array (size=0)
empty
public 'ar_cache_having' =>
array (size=0)
empty
public 'ar_cache_orderby' =>
array (size=0)
empty
public 'ar_cache_set' =>
array (size=0)
empty
public 'ar_no_escape' =>
array (size=0)
empty
public 'ar_cache_no_escape' =>
array (size=0)
empty
public 'username' => string 'root' (length=4)
public 'password' => string '' (length=0)
public 'hostname' => string 'localhost' (length=9)
public 'database' => string 'cms' (length=3)
public 'dbprefix' => string '' (length=0)
public 'char_set' => string 'utf8' (length=4)
public 'dbcollat' => string 'utf8_general_ci' (length=15)
public 'autoinit' => boolean true
public 'swap_pre' => string '' (length=0)
public 'port' => string '' (length=0)
public 'pconnect' => boolean true
public 'conn_id' => resource(50, mysql link persistent)
public 'result_id' => resource(57, mysql result)
public 'db_debug' => boolean true
public 'benchmark' => float 0.00099992752075195
public 'query_count' => int 1
public 'bind_marker' => string '?' (length=1)
public 'save_queries' => boolean true
public 'queries' =>
array (size=1)
0 => string 'SELECT *
FROM (`sessions`)
WHERE `session_id` = '93072e3813e9ac20216c8cf6affc1d1b'
AND `user_agent` = 'Mozilla/5.0 (Windows NT 6.1; rv:26.0) Gecko/20100101 Firefox/26.0'' (length=171)
public 'query_times' =>
array (size=1)
0 => float 0.00099992752075195
public 'data_cache' =>
array (size=0)
empty
public 'trans_enabled' => boolean true
public 'trans_strict' => boolean true
public '_trans_depth' => int 0
public '_trans_status' => boolean true
public 'cache_on' => boolean false
public 'cachedir' => string '' (length=0)
public 'cache_autodel' => boolean false
public 'CACHE' => null
public '_protect_identifiers' => boolean true
public '_reserved_identifiers' =>
array (size=1)
0 => string '*' (length=1)
public 'stmt_id' => null
public 'curs_id' => null
public 'limit_used' => null
public 'stricton' => boolean false
Change your function to this:
function setpageid($friendlyname, $newid)
{
$this->db->where('friendly_name', $friendlyname);
$this->db->update('page_routes', array('pageid' => $newid));
return $this->db->affected_rows()>0 ? TRUE : FALSE;
}
This will update the page_routes
table, specifically the pageid
column, with the value of $newid
where friendly_name = $friendlyname
.
It will then return either boolean true or false, whether any rows were affected.
I hope this is what you mean?