[eluser]zebake[/eluser]
You guys have gotten me closer, but I'm still not quite there.
Error I am currently receiving:
Code: A PHP Error was encountered
Severity: Warning
Message: Invalid argument supplied for foreach()
Filename: views/student_directory_view.php
Line Number: 8
I've looked over all the advice here and this is how I have modified everything:
Database
Code: #
# Source for table parents
#
CREATE TABLE `parents` (
`parent_id` int(11) NOT NULL auto_increment,
`lname` varchar(255) default NULL,
`fname` varchar(255) default NULL,
`street` varchar(255) default NULL,
`city` varchar(255) default NULL,
`state` varchar(255) default NULL,
`zip` varchar(255) default NULL,
`email` varchar(255) default NULL,
`phone` varchar(255) default NULL,
`cell` varchar(255) default NULL,
PRIMARY KEY (`parent_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
#
# Dumping data for table parents
#
INSERT INTO `parents` VALUES (1,'Smith','Farrah','123 Sesame St.','Dallas','TX','75217','[email protected]','555-555-5555','555-555-5555');
INSERT INTO `parents` VALUES (2,'Smith','Gus',NULL,NULL,NULL,NULL,NULL,NULL,'555-555-5555');
INSERT INTO `parents` VALUES (3,'Jones','Lyndsey','456 Main St.','Dallas','TX','75216','[email protected]','555-555-5555','555-555-5555');
#
# Source for table students
#
CREATE TABLE `students` (
`student_id` int(11) NOT NULL auto_increment,
`lname` varchar(255) default NULL,
`fname` varchar(255) default NULL,
PRIMARY KEY (`student_id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
#
# Dumping data for table students
#
INSERT INTO `students` VALUES (1,'Smith','Abbey');
INSERT INTO `students` VALUES (2,'Smith','Jason');
INSERT INTO `students` VALUES (3,'Jones','Sarah');
#
# Source for table students_parents
#
CREATE TABLE `students_parents` (
`student_id` int(11) NOT NULL default '0',
`parent_id` int(11) NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
#
# Dumping data for table students_parents
#
INSERT INTO `students_parents` VALUES (1,1);
INSERT INTO `students_parents` VALUES (1,2);
INSERT INTO `students_parents` VALUES (2,1);
INSERT INTO `students_parents` VALUES (2,2);
INSERT INTO `students_parents` VALUES (3,3);
I think I am using the students_parents table (students_guardians as you have it) correctly...I added a row to associate each student_id with their respective parent_id(s). Is this correct?
student_directory_model.php
Code: <?php
class Student_directory_model extends Model {
function Student_directory_model()
{
// Call the Model constructor
parent::Model();
}
function get_all_students()
{
//Query the data table for ALL STUDENTS
$query = $this->db->select('students.*, parents.fname, parents.lname')
->join('students_parents', 'students_parents.student_id = students.student_id')
->join('parents', 'students_parents.parent_id = parents.parent_id')
->order_by('students.lname, students.fname')
->get('students')->result_array();
}
}
?>
student_directory_view.php
Code: <html>
<head>
<title><?=$page_title?></title>
</head>
<body>
<h1><?=$page_title?></h1>
<ul>
<?php foreach($students as $student)
{
echo $student['student_id'];
echo "<li>{$student['lname']}, {$student['fname']}</li>";
}
?>
</ul>
</body>
</html>
student_directory.php
Code: <?php
class Student_directory extends Controller{
function Student_directory()
{
parent::Controller();
$this->load->scaffolding('students');
}
function index()
{
$this->load->model('student_directory_model');
$data['students'] = $this->student_directory_model->get_all_students();
$data['page_title'] = "SJES Student Directory";
$this->load->view('student_directory_view',$data);
}
}
?>
I hope I'm not butchering your advice too badly.
|