the previous question is here incase you guys needed a other information:
Fetching information from the database
ANOTHER UPDATE
Although all of you have been very helpful. I've managed to get outputs but i'm still really really confused lets say that I want to first see the outpurs so im disregarding the controller.
i'll make a controller after i see that my commands are correct :) i dont know why but thats kindo of how i get to understand the whole concept. anyway..
for my membership_model.php
function member_here()
{
$this->db->select('');
$this->db->from('membership');
$this->db->where('username',$this->input->post('username'));
$q=$this->db->get('');
if($q->num_rows() > 0) {
$data = array();
foreach($q->result() as $row) {
$data=$row;
}
return $data;
}
}
and my signup_view.php
<html>
<head>
<title></title>
</head>
<body>
<?php $this->load->view('includes/header')?>
<div align="right"><?php echo anchor('login/signin', 'Login');?></div>
<?php
$option1 = array(
'name' => 'What was your childhood nickname?',
'value' => 'What was your childhood nickname?'
);
$option2= array(
'name' => 'What is your pet\'s name?',
'value' => 'What is your pet\s name?'
);
$option3= array(
'name' => 'In what city were you born?',
'value' => 'In what city were you born?'
);
$option4= array(
'name' => 'What is the color of your eyes?',
'value' => 'What is the color of your eyes?'
);
$option5= array(
'name' => 'What is your favorite color?',
'value' => 'What is your favorite color?'
);
echo form_open('login/create_member');
echo "<table width=\"80%\ cellpadding=\"3px\">
<tr>
<td>User Information:</td>
</tr>
<tr>
<td> </td>
</tr>";
echo "<tr><td>First Name*: </td></tr>";
echo "<tr><td>";
echo form_input('first_name', set_value('first_name'));
echo "</tr></td>";
echo "<tr><td>Last Name*: </td></tr>";
echo "<tr><td>";
echo form_input('last_name', set_value('last_name'));
echo "</td></tr>";
echo "<tr><td>Email Address*: </td></tr>";
echo "<tr><td>";
echo form_input('email_address', set_value('email_address'));
echo "</tr></td>";
echo "<tr><td>Gender: </td></tr>";
echo "<tr><td>";
?>
<input type="radio" name="gender" value="Male" />Male
<input type="radio" name="gender" value="Female" />Female
<?php
echo "</tr></td>";
echo "<tr>
<td></td>
</tr>
</table>";
?>
<?php
echo "<table width=\"80%\ cellpadding=\"3px\">
<tr>
<td> Account Information:</td>
</tr>
<tr>
<td> </td>
</tr>";
echo "<tr><td>Userame*: </td></tr>";
echo "<tr><td>";
echo form_input('username', set_value('username'));
echo "</td></tr>";
echo "<tr><td>Password*: </td></tr>";
echo "<tr><td>";
echo form_password('password');
echo "</td></tr>";
echo "<tr><td>Password Confirmation*: </td></tr>";
echo "<tr><td>";
echo form_password('password2');
echo "</td></tr>";
echo "<tr><td>";
echo "Security Question*:";
echo "</td></tr>";
echo "<tr><td>";
?>
<select name = "security_question" value="security question">
<option value = "What was your childhood nickname?">What was your childhood nickname?</option>
<option value = "What is your pet's name?">What is your pet's name?</option>
<option value = "In what city were you born?">In what city were you born?</option>
<option value = "What is the color of your eyes?">What is the color of your eyes?</option>
<option value = "What is your favorite color?">What is your favorite color?</option>
</select>
<?php
echo "</td></tr>";
echo "<tr><td>";
echo "Security Answer*:";
echo "</td></tr>";
echo "<tr><td>";
echo form_input('security_answer');
echo "</td></tr>";
echo "<tr><td>";
echo form_submit('submit', 'Register');
echo form_reset('reset', 'Reset');
echo "</tr></td>";
echo form_close();
echo "<tr>
<td></td>
</tr>
</table>";
?>
<?php echo validation_errors('<p class="error">');?>
So, thats all my code. I'm trying to get the first_name, last_name, email_address and all the other information of the logged in user to come out from the database.
if i use $data[]=$row;
instead of $data=$row;
in my model an error occurs saying this:
Severity: Notice
Message: Trying to get property of non-object
Filename: views/members_area.php
Line Number: 20
So, what should I do. i'm coding without the controller. i'm just checking the results thanks!!
There are a few things that could be clarified:
model
is a entity that persists in the database. In your case: Membership controller
is in charge of load the model, and pass it to the view to be showed view
only should have html markup, no functions, no logic. Assuming that your database have the structure below.
+---------------+-----------+------------+--------------------+
| id_membership | username | name | email |
+---------------+-----------+------------+--------------------+
| 1 | Marishka | marishkapv | marishka@email.com |
| 2 | johndoe | John | john@doe.com |
| 3 | dennisv | Dennis | dennis@v.com |
+---------------+-----------+------------+--------------------+
You could build your model class Membership extends CI_Model
at /application/models/membership.php
file.
class Membership extends CI_Model {
function __construct()
{
parent::__construct();
}
function member_here()
{
$this->db->select('');
$this->db->from('membership');
$this->db->where('username',$this->input->post('username'));
$q = $this->db->get('');
if($q->num_rows() > 0)
{
$data = array();
foreach($q->result() as $row)
{
$data=$row;
}
return $data;
}
}
}
Supposing that your have a login page at example.com/index.php/login
, this should resides at /application/controllers/login.php
as below:
class Login extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('login_view');
}
public function result()
{
$this->load->model('membership');
$data['member'] = $this->membership->member_here();
$this->load->view('result_view', $data);
}
}
Look like the models is loaded throws this two lines:
//Load the model in make use of its functions
$this->load->model('membership');
//load the row whit the given username
//the result is assigned to array with the key "member", in the view you access this
//value with $member var
$data['member'] = $this->membership->member_here();
As you noted in controller code, there are two views files, login_view
and result_view
. The first one will show a html form where you can put the username in order to trigger a select query. The result_view
show the informacion of the member according to the selected membership
login_view.php
<html>
<head></head>
<body>
<form action="login/result" method="post">
Type your username: <input type="text" name="username" />
<input type="submit" value="Load from database" />
</form>
</body>
</html>
result_view.php
<h4>Details:</h4>
<p>
Id: <?=$member->id_membership?> <br />
Username: <?=$member->username?> <br />
Email: <?=$member->email?>
</p>
This can be very simple read the user guide for more simple examples
Model
Class Members Extends CI_Model
{
function __construct(){
parent::__construct();
}
function member_here()
{
$this->db->where('username',$this->input->post('username'));
$query = $this->db->get('membership');
if($query->num_rows() > 0)
{
return $query->result();
}
}
}
Controlelr
Class Login extends CI_Controller
{
function __construct()
{
parent::__construct();
}
public function index()
{
$this->load->view('login_view');
}
public function result()
{
$this->load->model('membership');
$data['member'] = $this->membership->member_here();
$this->load->view('result_view', $data);
}
}
And in View you can simple do it
<?php
foreach($member as $row){
?>
<option value="<?php echo $row->id?>"><?php echo $row->name?></option>
<?php
}
?>
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.