On 04/02/07, Michael Sullivan <[EMAIL PROTECTED]> wrote: > > --- In php-list@yahoogroups.com, "Michael Sullivan" <[EMAIL PROTECTED]> wrote: > > > > --- In php-list@yahoogroups.com, "Michael Sullivan" <michael@> wrote: > > > > > > I have a problem. I'm working on an auto-schedular for my college's > > > Music Festivals. I just started on this tonight. I'm starting by > > > reading all the information into variables. For starters, I have a > > > School class. The script should read data from the database into > > > School objects for later use. I've never used objects in PHP before, > > > but I've used them in several other languages. I read data from the > > > database into the School objects using a loop, with a loop invariant > > > called $schoolCount. I created a print statement so that I could see > > > if the data was being correctly assigned to the School objects, but I > > > think it's printing the value of the loop invariant instead of the > > > school name like I want. I'm not sure why. Here's my code: > > > > > > <? > > > //Now for some database stuff. > > > $db = "NEO_Music_Festival"; > > > $user = "festival"; > > > $pass = [CENSORED]; > > > //Let's connect > > > $link = mysql_connect ("localhost", $user, $pass); > > > if (!$link) die ("Could not connect to database server."); > > > mysql_select_db ($db, $link) or die ("Could not connect to database"); > > > > > > class School > > > { > > > var $directorid; > > > var $beginTimeReq; > > > var $endTimeReq; > > > var $schoolname; > > > var $schoolid; > > > var $accompanist = Array(); > > > } > > > > > > class Accompanist > > > { > > > var $directorid; > > > var $accid; > > > var $accname; > > > var $soloCount; > > > var $ensembleCount; > > > var $choirCount; > > > var $showChoirCount; > > > } > > > > > > class Room > > > { > > > var $roomNumber; > > > var $entryTypeAccepted; //Solo-ensemble, choir, or show choir > > > var $time = Array(); //Array of times > > > } > > > > > > //Time to get started. > > > > > > $schoolCount = 0; > > > $school = array(); > > > > > > $query = "SELECT director_id, school_id, school_name, > > > choir_beg_time_req, choir_end_time_req FROM School ORDER BY > school_id;"; > > > $schoolresult = mysql_query($query, $link) or die ("Could not access > > > database: ".mysql_error()); > > > while ($school_row = mysql_fetch_array($schoolresult, MYSQL_ASSOC)) > > > { > > > $school[$schoolCount] = new School(); > > > $school[$schoolCount]->$directorid = $school_row['director_id']; > > > $school[$schoolCount]->$begTimeReq = > > $school_row['choir_beg_time_req']; > > > $school[$schoolCount]->$endTimeReq = > > $school_row['choir_end_time_req']; > > > $school[$schoolCount]->$schoolname = $school_row['school_name']; > > > $school[$schoolCount]->$schoolid = $school_row['school_id']; > > > print "School Name: ".$school[$schoolCount]->$schoolname."<br>\n"; > > > > > > $schoolCount++; > > > } > > > > > <trimmed> > > > > My wife just pointed something out to me; Some of the numbers in > > sequence are missing (like 4 and 10). This shows to me that what's > > being printed is not in fact the loop invariant, but instead the value > > of $school_row['school_id']. Why is it doing that when I asked to > > print $school[$schoolCount]->$schoolname and this variable is supposed > > to be set to $school_row['school_name'} as reflected in the above > code??? > > > > No matter what member of $school[$schoolCount] I ask to have printed > out, it always prints out the last value assigned to a variable of > $school[$schoolCount]. Why would it do that? >
Hi Michael, I think you have a small typo in all of your code. You should not follow the -> with a $ as this will look for a variable in the current scope and treat that as the property you wish to access. Instead of > $school[$schoolCount]->$schoolid consider > $school[$schoolCount]->schoolid and so on throughout your code. Phill