предыдущий вопрос заключается в том, что вы, ребята, нуждались в другой информации:
Получение информации из базы данных
ДРУГОЕ ОБНОВЛЕНИЕ
Хотя все вы были очень полезны. Мне удалось получить результаты, но я по-прежнему очень смущен, и говорят, что я хочу сначала увидеть outpurs, чтобы я не обращал внимания на контроллер.
я сделаю контроллер после того, как увижу, что мои команды верны 🙂 Я не знаю, почему, но это не так, как я понимаю всю концепцию. так или иначе..
для моего членства_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; } }
и мой 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">');?>
Так вот, весь мой код. Я пытаюсь получить first_name, last_name, email_address и всю другую информацию зарегистрированного пользователя, чтобы выйти из базы данных.
если я использую $data[]=$row;
вместо $data=$row;
в моей модели возникает ошибка:
Severity: Notice
Message: Trying to get property of non-object
Filename: views/members_area.php
Line Number: 20
И что же мне делать. Я кодирую без контроллера. я просто проверяю результаты благодаря!
Есть несколько вещей, которые можно прояснить:
model
– это объект, который сохраняется в базе данных. В вашем случае: членство controller
отвечает за загрузку модели и передает ее в представление, которое будет показано view
только должна быть разметка html, нет функций, нет логики. Предполагая, что ваша база данных имеет структуру ниже.
+---------------+-----------+------------+--------------------+ | id_membership | username | name | email | +---------------+-----------+------------+--------------------+ | 1 | Marishka | marishkapv | marishka@email.com | | 2 | johndoe | John | john@doe.com | | 3 | dennisv | Dennis | dennis@v.com | +---------------+-----------+------------+--------------------+
Вы можете создать свой модельный class Membership extends CI_Model
в файле /application/models/membership.php
.
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; } } }
Предположим, что у вас есть страница входа в example.com/index.php/login
, она должна /application/controllers/login.php
в /application/controllers/login.php
как /application/controllers/login.php
ниже:
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); } }
Похоже, что загруженные модели загружают эти две строки:
//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();
Как вы отметили в коде контроллера, есть два файла представлений, login_view
и result_view
. Первая из них отобразит html-форму, в которой вы можете поместить имя пользователя для запуска запроса выбора. Результат result_view
показывает информацию члена в соответствии с выбранным членством
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>
Это может быть очень просто прочитать руководство пользователя для более простых примеров
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 } ?>