Now I'm having a problem with foreach.  I have my local array $school
of type School.  Type School contains an array of accompanists.  I'm
trying to print off some school information, with accompanist
information printed off in an inner loop.  PHP is giving me the error:

Warning: Invalid argument supplied for foreach() in
/home/festival/webspace/html/schedulefestival.php on line 92

Line 92 is the beginning of the inner loop.  Here's the inner and
outer loops:

foreach ($school as $field)
{
   print "School Name: ".$field->schoolname."<br>\n";
   print "School Time Request: ".$field->begTimeReq." -
".$field->endTimeReq."<br>\n";
   foreach ($school->accompanist as $field)
   {
      print "Accompanist Name: ".$field->accname."<br>\n";
      print "Solo Count: ".$field->soloCount."<br>\n";
      print "Ensemble Count: ".$field->ensembleCount."<br>\n";
      print "Choir Count: ".$field->choirCount."<br>\n";
      print "Show Choir Count: ".$field->showChoirCount."<br><br>\n";
   }
   print "<br><br><br><br>\n";

}

And here's the full code:

<?
//Now for some database stuff.
$db = "NEO_Music_Festival";
$user = "festival";
$pass = "466573746976616C";
//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'];

   $accCount = 0;
   
   $query = "SELECT acc_id, accompanist_name from Accompanist where
director_id='".$school[$schoolCount]->directorid."';";
   $accresult = mysql_query($query, $link) or die ("Could not access
database:  ".mysql_error());
   while ($acc_row = mysql_fetch_array($accresult, MYSQL_ASSOC))
   {
      $school[$schoolCount]->accompanist[$accCount] = new Accompanist();
      $school[$schoolCount]->accompanist[$accCount]->directorid =
$school[$schoolCount]->directorid;
      $school[$schoolCount]->accompanist[$accCount]->accname =
$acc_row['accompanist_name'];
      $school[$schooCount]->accompanist[$accCount]->accid =
$acc_row['acc_id'];

      $query = "SELECT * FROM Entry WHERE
acc_id='".$accompanist[$accCount]."' AND entry_type='Solo';";
      $soloresult = mysql_query($query, $link) or die("Could not
access database:  ".mysql_error());
      $school[schoolCount]->ccompanist[$accCount]->soloCount =
mysql_num_rows($soloresult);

      $query = "SELECT * FROM Entry WHERE
acc_id='".$accompanist[$accCount]."' AND entry_type='Ensemble';";
      $ensembleresult = mysql_query($query, $link) or die("Could not
access database:  ".mysql_error());
      $school[schoolCount]->accompanist[$accCount]->ensembleCount =
mysql_num_rows($ensembleresult);
      
      $query = "SELECT * FROM Entry WHERE
acc_id='".$accompanist[$accCount]."' AND entry_type='Choir';";
      $choirresult = mysql_query($query, $link) or die("Could not
access database:  ".mysql_error());
      $school[$schoolCount]->accompanist[$accCount]->choirCount =
mysql_num_rows($choirresult);

      $query = "SELECT * FROM Entry WHERE
acc_id='".$accompanist[$accCount]."' AND entry_type='Show Choir';";
      $scresult = mysql_query($query, $link) or die("Could not access
database:  ".mysql_error());
      $school[schoolCount]->accompanist[$accCount]->showChoirCount =
mysql_num_rows($scresult);

      $accCount++;
   }
   
   
   $schoolCount++;
}

foreach ($school as $field)
{
   print "School Name: ".$field->schoolname."<br>\n";
   print "School Time Request: ".$field->begTimeReq." -
".$field->endTimeReq."<br>\n";
   foreach ($school->accompanist as $field)
   {
      print "Accompanist Name: ".$field->accname."<br>\n";
      print "Solo Count: ".$field->soloCount."<br>\n";
      print "Ensemble Count: ".$field->ensembleCount."<br>\n";
      print "Choir Count: ".$field->choirCount."<br>\n";
      print "Show Choir Count: ".$field->showChoirCount."<br><br>\n";
   }
   print "<br><br><br><br>\n";

}

?>

What's wrong with my loop?  The Accompanist objects in the
School->accompanist array have all been initialized and assigned
values (I think)...

Reply via email to