1

Hi guys I have this code and I am not sure what I am doing wrong, data is being defined as far as I can see, these are the errors I am getting:

A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: models/site_model.php

Line Number: 14
A PHP Error was encountered

Severity: Warning

Message: Cannot modify header information - headers already sent by (output started at /Applications/XAMPP/xamppfiles/htdocs/BLOCK/system/core/Exceptions.php:185)

Filename: core/Common.php

Line Number: 442
A Database Error Occurred

You must use the "set" method to update an entry.

Filename: /Applications/XAMPP/xamppfiles/htdocs/BLOCK/models/site_model.php

Line Number: 14

controller:

<?php
class Site extends CI_Controller {

function index(){

    $this->load->view('option_view');
}

function create(){

    $data = array(
        'subject' => $this->input->post('subject'),
        'body' => $this->input->post('body')
    );

    $this->Site_model->add_record($data);
    $this->index();

}

}


?>

model:

<?php

class Site_model extends CI_Model {

function get_records()

{
    $query = $this->db->get('items');
    return $query->result();
}

function add_record()
{
    $this->db->insert('items', $data);
    $return;
}

function update_record()
{
    $this->db->where('id', 1);
    $this->db->update('items', $data);

}

function delete_record()
{
    $this->db->where('id', $this->url->segment(3));
    $this->db->delete('items');

}

}





?>

and the view:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>

<title>option_view</title>
<style type="text/css" media="screen">
label {display:block;}
</style>
</head>

<body>
<h2>Create</h2>
<?php echo form_open('site/create'); ?>

<p>
    </label for="subject">Subject</label>
    <input type="text" name="subject" id="subject">
</p>

<p>
    </label for="body">Body</label>
    <input type="text" name="body" id="body">
</p>
<p>
<input type="submit" value="Submit">    
</p>
<?php echo form_close();?>
 </body>
 </html>

What do you guys reckon?

Much appreciated

0

3 Answers 3

3

You never pass $data to your methods. This is a scope issue.

function add_record()
{
    $this->db->insert('items', $data);
    $return;
}

In this case, add_record() has no idea what $data is (and treats it as null because it hasn't been defined.

Variable Scope

Sign up to request clarification or add additional context in comments.

Comments

2

The method in your models aren't expecting a parameter. For example:

Change:

function add_record()

to:

function add_record($data)

Comments

0

In these methods:

function add_record()
{
    $this->db->insert('items', $data);
    $return;
}

function update_record()
{
    $this->db->where('id', 1);
    $this->db->update('items', $data);

}

You have not passed data to the methods, so $data is undefined.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.