Loading ...

Feedback

This page demonstrates how to store the feedback into database with xajax in Code Igniter. One each callback, all feedback is queried from database and sent back with pagination. Please do not abuse the database, thank you.

* Title:
* Name:
* Comments:
 

TitleNamePost Date/TimeComments
mr s 2007-07-11 10:47:36fgsg
West coast is the best! Ali-G 2007-07-11 02:52:28hehe
VSB SFBFS 2007-07-11 01:51:21OK
what is this. tanvir. 2007-07-11 01:12:59testing ajax.
dd dd 2007-07-10 09:34:42dd
‹ First  < 471 472 473 474 475 >  Last ›

Model: feedback_model.php

<?php
class feedback_model extends Model 
{
    function 
feedback_model()
    {
        
parent::Model();
    }

    function 
get_row_count()
    {
        return (
$this->db->count_all('feedback'));
    }

    function 
get_feedbacks($per_page$offset)
    {
        
$this->db->use_table('feedback');
        
$this->db->orderby('post_dt''desc');
        
$this->db->limit($per_page);
        if (isset(
$offset))
        {
            
$this->db->offset($offset);
        }
        
$query $this->db->get();

        return (
$query);
    }

    function 
insert_feedback($title$name$comments)
    {
        
$data = array(
            
'title' => $title,
            
'name' => $name,
            
'comments' => $comments,
            
'post_dt' => date("Y-m-d G:i:s")
        );

        
$this->db->insert('feedback'$data);
    }
}
?>

Controller: feedback.php

<?php
class feedback extends Controller
{
    var 
$ROW_PER_PAGE 5;
    var 
$TITLE_WORD_WRAP 25;

    function 
feedback()
    {
        
parent::Controller();

        
$this->load->helper(array('text''typography'));

        
$this->load->library('pagination');

        
$this->load->model('feedback_model''feedback_model'true);
    }

    function 
index()
    {
        
// XAJAX
        
$this->load->library('xajax');
        
$this->xajax->registerFunction(array("process_form_data", &$this"process_form_data"));
        
$this->xajax->processRequests();
        
$data['xajax_js'] = $this->xajax->getJavascript(null'/js/xajax.js');

        
// load views
        
$data['head_title'] = WEBSITE_NAME " - Examples: Feedback";
        
$data['highlighted_controller'] = highlight_file("feedback.php"TRUE);

        
// get offset
        
$offset $this->uri->segment(3'');

        
// all_feedbacks
        
$data['all_feedbacks'] = $this->_get_feedbacks($this->ROW_PER_PAGE$offset);

        
// load example MVC
        
$example = new example('feedback'true);
        
$data['highlighted_model'] = $example->model;
        
$data['highlighted_view'] = $example->view;

        
$data['subheader'] = $this->load->view('examples_subheader'$datatrue);
        
$data['sidebar'] = $this->load->view('examples_sidebar'$datatrue);
        
$data['body_content'] = $this->load->view('feedback_tpl'$datatrue);        
        
$this->load->view('site_layout'$data);
    }

    function 
process_form_data($form_data)
    {
        
// get offset
        
$offset $this->uri->segment(3'');

        
$objResponse = new xajaxResponse();
        
        
$insert_ok $this->_insert_feedback($form_data['txt_title'], $form_data['txt_name'], $form_data['txt_comments']);

        if (
$insert_ok
        {
            
$result "Add feedback successfully!";
        }
        else
        {
            
$result "Fail to add feedback!";
        }

        
$result .= "<br/><br/>" $this->_get_feedbacks($this->ROW_PER_PAGE$offset);

        
$objResponse->addAssign("div_result""innerHTML"$result);
        return 
$objResponse;
    }

    function 
_insert_feedback($title$name$comments)
    {
        if (isset(
$title) && !empty($title))
        {
            
$this->feedback_model->insert_feedback($title$name$comments);
            return (
true);
        }

        return (
false);
    }

    function 
_get_feedbacks($per_page$offset)
    {
        
$result "";

        
$query $this->feedback_model->get_feedbacks($per_page$offset);

        if (
$query->row() > 0)
        {
            
$result .= "<table class='comments'>";
            
$result .= "<thead>";
            
$result .= "<tr>";
            
$result .= "<th width='10%'>Title</th>";
            
$result .= "<th width='10%'>Name</th>";
            
$result .= "<th width='15%'>Post Date/Time</th>";
            
$result .= "<th>Comments</th>";
            
$result .= "</tr>";
            
$result .= "</thead>";
            
$result .= "<tbody>";

            foreach (
$query->result() as $row)
            {
                
$result .= "<tr>";
                
$result .= "<td>" word_wrap($row->title$this->TITLE_WORD_WRAP) . "</td>";
                
$result .= "<td>" word_wrap($row->name$this->TITLE_WORD_WRAP) . "</td>";
                
$result .= "<td>" $row->post_dt "</td>";
                
$result .= "<td>" nl2br_except_pre(word_wrap($row->comments)) . "</td>";
                
$result .= "</tr>";
            }

            
$result .= "</tbody>";
            
$result .= "</table>";

            
// set pagination
            
$config['base_url'] = '/feedback/index/';
            
$config['total_rows'] = $this->feedback_model->get_row_count();
            
$config['per_page'] = $per_page;
            
$this->pagination->initialize($config); 

            
$result .= $this->pagination->create_links();
        }

        return (
$result);
    }
}
?>

View: feedback_tpl.php

<style>
table.comments 
{
    
color:           inherit;
    
background:      inherit;    /* Don't make tables transparent */
    
border-collapsecollapse;
    
border-spacing:  0;
    empty-
cells:     show;
    
margin:          0.5em 2.5em;
    
padding:         0;
    
border:          1px solid #999999;
}

table.comments th 
{
    
font-weight:     bold;
    
color:           inherit;
    
background:      #F0F0F0;
    
text-align:      left;
    
vertical-align:  left;
    
margin:          0;
    
padding:         0.25em 0.5em;
    
border:          1px solid #999999;
}

table.comments td 
{
    
text-align:      left;
    
vertical-align:  top;
    
margin:          0;
    
padding:         0.25em 0.5em;
    
border:          1px solid #999999;
}
</
style>
<
script type="text/javascript">
<!--
    
xajax.loadingFunction = function(){xajax.$('loading_message').style.display='block';};
    
xajax.doneLoadingFunction = function(){xajax.$('loading_message').style.display='none';};
// -->
</script>
<script type="text/javascript">
function do_submit()
{
    if (xajax.$('txt_title').value == '' || xajax.$('txt_name').value == '' || xajax.$('txt_comments').value == '')
    {
        alert("Please enter title, name, and comments!");
    }
    else 
    {
        xajax_process_form_data(decodeURIComponent(xajax.getFormValues('form_feedback')));
        xajax.$('txt_title').value = '';
        xajax.$('txt_name').value = '';
        xajax.$('txt_comments').value = '';
    }
}
</script>
<div id="loading_message" class="loadingMessage">Loading ...</div>
<h1 id="introduction">Feedback</h1>

<p>
This page demonstrates how to store the feedback into database with <?=XAJAX_LINK_POPUP?> in <?=CODE_IGNITER_LINK_POPUP?>. One each callback, all feedback is queried from database and sent back with <a href="http://www.codeigniter.com/user_guide/libraries/pagination.html" target="_new">pagination</a>. Please do not abuse the database, thank you. 
</p>

<form id="form_feedback" name="form_feedback">
<table>
<tr>
    <td valign="top">* Title: </td>
    <td><input type="text" id="txt_title" name="txt_title" size="40" maxlength="100" /></td>
</tr>
<tr>
    <td valign="top">* Name: </td>
    <td><input type="text" id="txt_name" name="txt_name" size="40" maxlength="100" /></td>
</tr>
<tr>
    <td valign="top">* Comments: </td>
    <td><textarea id="txt_comments" name="txt_comments" rows="6" cols="40" maxlength="255"></textarea></td>
</tr>
<tr>
    <td>&nbsp;</td>
    <td><input type="button" id="btn_submit" value="Submit" onclick="do_submit()" /></td>
</tr>
</table>
</form>
<br/>

<div id="div_result"><?=$all_feedbacks?></div>

<h1 id="introduction">Model: feedback_model.php</h1>
<p><?=$highlighted_model?></p>

<h1 id="introduction">Controller: feedback.php</h1>
<p><?=$highlighted_controller?></p>

<h1 id="introduction">View: feedback_tpl.php</h1>
<p><?=$highlighted_view?></p>