Получение информации из базы данных MYSQL & Codeigniter

предыдущий вопрос заключается в том, что вы, ребята, нуждались в другой информации:

Получение информации из базы данных

ДРУГОЕ ОБНОВЛЕНИЕ

Хотя все вы были очень полезны. Мне удалось получить результаты, но я по-прежнему очень смущен, и говорят, что я хочу сначала увидеть 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>&nbsp;</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 &nbsp; <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>&nbsp;</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 } ?>