Draw a ticket

delegUniversity = $delegUniversity; $this->delegAlias = $delegAlias; $this->partFirstName = $partFirstName; $this->partLastName = $partLastName; } } $conn = mysql_connect(DB_DSN, DB_USR, DB_PSW); mysql_select_db(DB_NAME, $conn); if ($conn == FALSE){ $errMsg = mysql_error(); die("Connect failed: " . $errMsg); } $tickets = array(); // to hold all tickets // Put one ticket per participant $query = "SELECT partFirstName, partLastName, delegUniversity, delegAlias FROM participants, delegations WHERE participants.delegId = delegations.delegId AND regIsCancelled = 0 AND delegUniversity NOT LIKE '%test%'"; $qTickets = mysql_query($query,$conn); $errMsg = mysql_error(); if ($errMsg != ""){ die("Query1 failed: " . $errMsg); } // add tickets $i = 0; while ($i < mysql_num_rows($qTickets)){ $curTicket = new ticket(mysql_result($qTickets, $i,"delegUniversity"), mysql_result($qTickets, $i,"delegAlias"), mysql_result($qTickets, $i,"partFirstName"), mysql_result($qTickets, $i,"partLastName")); $tickets[] = $curTicket; $i++; } // For each competition, add tickets to participants of that competition for the 3 top teams // Get all competitions and loop through them $query = "SELECT compId FROM competitions"; $comps = mysql_query($query,$conn); $errMsg = mysql_error(); if ($errMsg != ""){ die("Query2 failed: " . $errMsg); } $i = 0; while ($i < mysql_num_rows($comps)){ // Get the participants who won the competition and add tickets $query = "SELECT delegUniversity, delegAlias, partFirstName, partLastName, teamScore FROM compparts AS cp, delegations AS d, participants AS p, compscores AS cs WHERE cp.compId = ". mysql_result($comps, $i,"compId") ." AND cp.compId = cs.compId AND cs.delegId = d.delegId AND d.delegId = p.delegId AND p.partId = cp.partId ORDER BY teamScore DESC"; $winners = mysql_query($query,$conn); $errMsg = mysql_error(); if ($errMsg != ""){ die("Query3 failed: " . $errMsg); } $lastscore = -1; // used to detect ties $rank = 0; $j = 0; while ($j < mysql_num_rows($winners)){ // Only change the current rank if the score is different from the last $curScore = mysql_result($winners, $j,"teamScore"); if ($curScore != $lastScore) $rank++; $lastScore = $curScore; // only consider first 3 if ($rank > 3) break; // Determine number of tickets to add based on rank switch($rank){ case 1: $ticketsToGive = $FIRST_PLACE_TICKETS; break; case 2: $ticketsToGive = $SECOND_PLACE_TICKETS; break; case 3: $ticketsToGive = $THIRD_PLACE_TICKETS; break; } // Get the current winner's info $delegUniversity = mysql_result($winners, $j,"delegUniversity"); $delegAlias = mysql_result($winners, $j,"delegAlias"); $partFirstName = mysql_result($winners, $j,"partFirstName"); $partLastName = mysql_result($winners, $j,"partLastName"); // Give the right number of tickets for ($k = 0; $k < $ticketsToGive; $k++){ $curTicket = new ticket($delegUniversity, $delegAlias, $partFirstName, $partLastName); $tickets[] = $curTicket; } $j++; } $i++; } // select a ticket randomly and display it $ticketQty = sizeof($tickets); $winnerTicket = rand(0, $ticketQty-1); printf("Drew ticket number ". $winnerTicket ." out of ". $ticketQty ." tickets.

"); printf("

The winner is

". $tickets[$winnerTicket]->partFirstName ." ". $tickets[$winnerTicket]->partLastName ."

from ". $tickets[$winnerTicket]->delegUniversity ." (". $tickets[$winnerTicket]->delegAlias .")

"); ?>