我正在学习使用MySQL创建网页的php。 想要运行脚本,但我失败了。 我得到死亡白屏。 你能看看代码并告诉我该做什么以及我应该去哪个方向。 谢谢你的时间。
<?php
include 'include.php';
// PHP Class bracket
// Bracket builder for GotGames
// Author Benjamin Thomas
// October 2009
class bracket {
//Bring In Database Details From Include.PHP
var $username = DB_USER;
var $password = DB_PASS;
var $database = DB_NAME;
//Init Class Variables
var $tournament_name;
var $tournament_size;
var $tournament_format;
var $tournament_id;
var $result_servers;
var $result_stvs;
var $result_matches;
var $result_teams;
//*************************************************************************************
// schedule bracket
// Input - The tournament ID used to identify which tournament we are scheduling for
// Operation - This constructor reads the required information from the databas and assigns the following class values:
// tournament_name;
// tournament_size;
// tournament_format;
// tournament_id;
// result_servers;
// result_stvs;
// result_matches;
// result_teams;
//*************************************************************************************
function bracket($tourn_id) {
//Save the Tournament ID
$this->tournament_id = $tourn_id;
//Collect All Required Information To Draw a Bracket
mysql_connect('localhost',$this->username,$this->password);
@mysql_select_db($this->database) or die( "Unable to select database");
$query = "SELECT * FROM tms_tournament WHERE id = ".$tourn_id;
$result_tournament = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_assoc($result_tournament);
$this->tournament_name = $row['name'];
$this->tournament_size = $row['size'];
$this->tournament_format = $row['format'];
mysql_free_result($result_tournament);
//read and save information from database
$query = "SELECT * FROM tms_servers WHERE id_tournament = ".$tourn_id;
$this->result_servers = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_stvs WHERE id_tournament = ".$tourn_id;
$this->result_stvs = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_matches WHERE id_tournament = ".$tourn_id;
$this->result_matches = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_teams_".$tourn_id." WHERE id_tournament = ".$tourn_id;
$this->result_teams = mysql_query($query) or die('Error, query failed');
}
//*************************************************************************************
// Function draw
// Operation - Called to display a single elimination bracket
//*************************************************************************************
function draw() {
$total_rounds = log($this->tournament_size,2)+1; //total rounds
$row = array();
$col = array($row); //create a data type to hold our bracket information
//Generate a datastructure to hold all the information required to layout the bracket
for($i = 1; $i <= $total_rounds; $i++) {
$round_matches = $this->getmatches($i);
$matches = pow(2,$total_rounds-$i); //calc how many matches for this round
$interval = pow(2,$i); // calc the interval for layout spacing
$offset = pow(2,$i-1); // each round is offset by a differnt amount to form the bracket pyramid
for($c = 1; $c <= ($this->tournament_size*2)+1; $c++) {
if ($c < $offset) { // blank space
$col[$i][$c] = 0;
} elseif ($c > (($this->tournament_size*2)+1)-$offset) { // blank space
$col[$i][$c] = 0;
} elseif ($c==$offset) {
if ($i==$total_rounds) { //No match but tournament winner
$col[$i][$c] = "Champion";
}else { //print a team here
$tmp_array=array_shift($round_matches);
$col[$i][$c] = $tmp_array['print_team'];
}
} elseif ((($c-$offset) % $interval) == 0) { //print a team here
$tmp_array=array_shift($round_matches);
$col[$i][$c] = $tmp_array['print_team'];
} elseif ($c==($offset*2)) { //print match here
$col[$i][$c] = "Match".$tmp_array['id'];
} elseif ((($c-$offset*2) % ($interval*2)) == 0) { //print match here
$col[$i][$c] = "Match".$tmp_array['id'];
} else {
$col[$i][$c] = 0; // blank space
}
print("<br>");
}
// layout the bracket using html tables and the data struct created above: col
print("<table width='100%' border='5'>");
print("<tr>");
for($i = 1; $i <= $total_rounds-1; $i++) {
print("<th>Round ".(string)$i."</th>");
}
print("</tr>");
for($c=1;$c<=($this->tournament_size*2);$c++) {
print("<tr>");
for($i = 1; $i <= $total_rounds+1; $i++) {
if (strcmp(substr($col[$i][$c],0,5),"Match")==0) {
$tmp_array = $this->getmatch(substr($col[$i][$c],5));
$datetime = new DateTime($tmp_array['timestamp']);
print("<td align='center' bgcolor='#FFE4E1'><table><tr><td
align='center'>".$datetime->format("D, jS F Y gA")."</td></tr><tr><td align='center'>stv - ".$this->getstvdetails($tmp_array['id_stv'])."</td></tr></table> </td>");
} elseif (strcmp(substr($col[$i][$c],0,5),"Teams")==0) {
print("<td align='center' bgcolor='#dddddd'>".$this->getteamname(substr($col[$i] [$c],5))."</td>");
} elseif ($col[$i][$c]) {
print("<td align='center' bgcolor='#dddddd'>".$col[$i][$c]."</td>");
} else {
print("<td height='40'></td>");
}
}
print("</tr>");
}
print("</table>");
}
}
//*************************************************************************************
// Function getmatch
// Input - match_id
// Operation - Retrives all the information saved for the parsed match_id
//*************************************************************************************
function getmatch($match_id) {
$query = "SELECT * FROM tms_matches WHERE id = ".(string)$match_id;
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
mysql_free_result($result);
return $row;
}
//*************************************************************************************
// Function getteamname
// Input - team_id
// Operation - Returns the name of the team with the parsed team ID
//*********************************************************************************** **
function getteamname($team_id) {
$query = "SELECT name FROM tms_teams_".(string)$this->tournament_id." WHERE id = ".(string)$team_id;$result = mysql_query($query) or die('Error, query failed');
return mysql_result($result, 0);
}
//*************************************************************************************
// Function getstvdetails
// Input - stv_id
// Operation - Returns the IP Address of the parsed stv id
//*************************************************************************************
function getstvdetails($stv_id) {
$query = "SELECT address FROM tms_stvs WHERE id = ".(string)$stv_id;
$result = mysql_query($query);
return mysql_result($result, 0);
}
//*************************************************************************************
// Function getmatches
// Input round_no
// Operation - Returns an array of all the matches for the parse round. The array is sorted by the position field.
//*************************************************************************************
function getmatches($round_no) {
$matches_avail = array();
$tmp_row = array();
$query = "SELECT * FROM tms_matches WHERE id_tournament = ".$this->tournament_id."
AND round = ".(string)$round_no." ORDER BY position";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
$tmp_row = $row;
if ($row['status'] == 1) {
$row = array_merge($row,array("print_team"=>"Winner of
".$row['id_match_parent_a']));
} else {
$row =
array_merge($row,array("print_team"=>"Teams".$row['id_team_a']));//team A
}
$matches_avail[] = $row;
$row = $tmp_row;
if ($row['status'] == 1) {
$row = array_merge($row,array("print_team"=>"Winner of
".$row['id_match_parent_b']));
} else {
$row =
array_merge($row,array("print_team"=>"Teams".$row['id_team_b']));//team B
}
$matches_avail[] = $row;
unset($tmp_row);
}return $matches_avail;
}
//*************************************************************************************
// destructor
// Operation - Frees memory held by SQL result sets
//*************************************************************************************
function __destruct() {
mysql_free_result($this->result_servers);
mysql_free_result($this->result_stvs);
mysql_free_result($this->result_matches);
mysql_free_result($this->result_teams);
mysql_close();
}
}
?>
答案 0 :(得分:0)
我找不到任何问题,但我清理了你的代码,也许这会帮助别人找到你的问题。
<?php
include('include.php');
// PHP Class bracket
// Bracket builder for GotGames
// Author Benjamin Thomas
// October 2009
class bracket
{
//Bring In Database Details From Include.PHP
var $username = DB_USER;
var $password = DB_PASS;
var $database = DB_NAME;
//Init Class Variables
var $tournament_name;
var $tournament_size;
var $tournament_format;
var $tournament_id;
var $result_servers;
var $result_stvs;
var $result_matches;
var $result_teams;
//*************************************************************************************
// schedule bracket
// Input - The tournament ID used to identify which tournament we are scheduling for
// Operation - This constructor reads the required information from the databas and assigns the following class values:
// tournament_name;
// tournament_size;
// tournament_format;
// tournament_id;
// result_servers;
// result_stvs;
// result_matches;
// result_teams;
//*************************************************************************************
function bracket($tourn_id)
{
//Save the Tournament ID
$this->tournament_id = $tourn_id;
//Collect All Required Information To Draw a Bracket
mysql_connect('localhost', $this->username, $this->password);
@mysql_select_db($this->database) or die("Unable to select database");
$query = "SELECT * FROM tms_tournament WHERE id = " . $tourn_id;
$result_tournament = mysql_query($query) or die('Error, query failed');
$row = mysql_fetch_assoc($result_tournament);
$this->tournament_name = $row['name'];
$this->tournament_size = $row['size'];
$this->tournament_format = $row['format'];
mysql_free_result($result_tournament);
//read and save information from database
$query = "SELECT * FROM tms_servers WHERE id_tournament = " . $tourn_id;
$this->result_servers = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_stvs WHERE id_tournament = " . $tourn_id;
$this->result_stvs = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_matches WHERE id_tournament = " . $tourn_id;
$this->result_matches = mysql_query($query) or die('Error, query failed');
$query = "SELECT * FROM tms_teams_" . $tourn_id . " WHERE id_tournament = " . $tourn_id;
$this->result_teams = mysql_query($query) or die('Error, query failed');
}
//*************************************************************************************
// Function draw
// Operation - Called to display a single elimination bracket
//*************************************************************************************
function draw( )
{
$total_rounds = log($this->tournament_size, 2) + 1;
//total rounds
$row = array( );
$col = array(
$row
);
//create a data type to hold our bracket information
//Generate a datastructure to hold all the information required to layout the bracket
for($i = 1; $i <= $total_rounds; $i++)
{
$round_matches = $this->getmatches($i);
$matches = pow(2, $total_rounds - $i);
//calc how many matches for this round
$interval = pow(2, $i);
// calc the interval for layout spacing
$offset = pow(2, $i - 1);
// each round is offset by a differnt amount to form the bracket pyramid
for($c = 1; $c <= ($this->tournament_size * 2) + 1; $c++)
{
if($c < $offset)
{
// blank space
$col[$i][$c] = 0;
} //$c < $offset
elseif($c > (($this->tournament_size * 2) + 1) - $offset)
{
// blank space
$col[$i][$c] = 0;
} //$c > (($this->tournament_size * 2) + 1) - $offset
elseif($c == $offset)
{
if($i == $total_rounds)
{
//No match but tournament winner
$col[$i][$c] = "Champion";
} //$i == $total_rounds
else
{
//print a team here
$tmp_array = array_shift($round_matches);
$col[$i][$c] = $tmp_array['print_team'];
}
} //$c == $offset
elseif((($c - $offset) % $interval) == 0)
{
//print a team here
$tmp_array = array_shift($round_matches);
$col[$i][$c] = $tmp_array['print_team'];
} //(($c - $offset) % $interval) == 0
elseif($c == ($offset * 2))
{
//print match here
$col[$i][$c] = "Match" . $tmp_array['id'];
} //$c == ($offset * 2)
elseif((($c - $offset * 2) % ($interval * 2)) == 0)
{
//print match here
$col[$i][$c] = "Match" . $tmp_array['id'];
} //(($c - $offset * 2) % ($interval * 2)) == 0
else
{
$col[$i][$c] = 0;
// blank space
}
print("<br>");
} //$c = 1; $c <= ($this->tournament_size * 2) + 1; $c++
// layout the bracket using html tables and the data struct created above: col
print("<table width='100%' border='5'>");
print("<tr>");
for($i = 1; $i <= $total_rounds - 1; $i++)
{
print("<th>Round " . (string) $i . "</th>");
} //$i = 1; $i <= $total_rounds - 1; $i++
print("</tr>");
for($c = 1; $c <= ($this->tournament_size * 2); $c++)
{
print("<tr>");
for($i = 1; $i <= $total_rounds + 1; $i++)
{
if(strcmp(substr($col[$i][$c], 0, 5), "Match") == 0)
{
$tmp_array = $this->getmatch(substr($col[$i][$c], 5));
$datetime = new DateTime($tmp_array['timestamp']);
print("<td align='center' bgcolor='#FFE4E1'><table><tr><td
align='center'>" . $datetime->format("D, jS F Y gA") . "</td></tr><tr><td align='center'>stv - " . $this->getstvdetails($tmp_array['id_stv']) . "</td></tr></table> </td>");
} //strcmp(substr($col[$i][$c], 0, 5), "Match") == 0
elseif(strcmp(substr($col[$i][$c], 0, 5), "Teams") == 0)
{
print("<td align='center' bgcolor='#dddddd'>" . $this->getteamname(substr($col[$i][$c], 5)) . "</td>");
} //strcmp(substr($col[$i][$c], 0, 5), "Teams") == 0
elseif($col[$i][$c])
{
print("<td align='center' bgcolor='#dddddd'>" . $col[$i][$c] . "</td>");
} //$col[$i][$c]
else
{
print("<td height='40'></td>");
}
} //$i = 1; $i <= $total_rounds + 1; $i++
print("</tr>");
} //$c = 1; $c <= ($this->tournament_size * 2); $c++
print("</table>");
} //$i = 1; $i <= $total_rounds; $i++
}
//*************************************************************************************
// Function getmatch
// Input - match_id
// Operation - Retrives all the information saved for the parsed match_id
//*************************************************************************************
function getmatch($match_id)
{
$query = "SELECT * FROM tms_matches WHERE id = " . (string) $match_id;
$result = mysql_query($query);
$row = mysql_fetch_assoc($result);
mysql_free_result($result);
return $row;
}
//*************************************************************************************
// Function getteamname
// Input - team_id
// Operation - Returns the name of the team with the parsed team ID
//*********************************************************************************** **
function getteamname($team_id)
{
$query = "SELECT name FROM tms_teams_" . (string) $this->tournament_id . " WHERE id = " . (string) $team_id;
$result = mysql_query($query) or die('Error, query failed');
return mysql_result($result, 0);
}
//*************************************************************************************
// Function getstvdetails
// Input - stv_id
// Operation - Returns the IP Address of the parsed stv id
//*************************************************************************************
function getstvdetails($stv_id)
{
$query = "SELECT address FROM tms_stvs WHERE id = " . (string) $stv_id;
$result = mysql_query($query);
return mysql_result($result, 0);
}
//*************************************************************************************
// Function getmatches
// Input round_no
// Operation - Returns an array of all the matches for the parse round. The array is sorted by the position field.
//*************************************************************************************
function getmatches($round_no)
{
$matches_avail = array( );
$tmp_row = array( );
$query = "SELECT * FROM tms_matches WHERE id_tournament = " . $this->tournament_id . "
AND round = " . (string) $round_no . " ORDER BY position";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result))
{
$tmp_row = $row;
if($row['status'] == 1)
{
$row = array_merge($row, array(
"print_team" => "Winner of
" . $row['id_match_parent_a']
));
} //$row['status'] == 1
else
{
$row = array_merge($row, array(
"print_team" => "Teams" . $row['id_team_a']
));
//team A
}
$matches_avail[ ] = $row;
$row = $tmp_row;
if($row['status'] == 1)
{
$row = array_merge($row, array(
"print_team" => "Winner of
" . $row['id_match_parent_b']
));
} //$row['status'] == 1
else
{
$row = array_merge($row, array(
"print_team" => "Teams" . $row['id_team_b']
));
//team B
}
$matches_avail[ ] = $row;
unset($tmp_row);
} //$row = mysql_fetch_assoc($result)
return $matches_avail;
}
//*************************************************************************************
// destructor
// Operation - Frees memory held by SQL result sets
//*************************************************************************************
function __destruct( )
{
mysql_free_result($this->result_servers);
mysql_free_result($this->result_stvs);
mysql_free_result($this->result_matches);
mysql_free_result($this->result_teams);
mysql_close();
}
}
?>
答案 1 :(得分:0)
抱歉,我还没有得到答案,但是想给你一个如何开始发现问题的提示。
当我得到没有报告错误的白屏时,我将开始尝试通过注释掉大量代码来缩小包含问题的代码部分,然后慢慢取消评论越来越多的代码来查看确切的位置发生错误。
例如,我可能会注释掉类中的所有函数。然后我会慢慢添加每个函数,直到错误发生。
这样,你会发现一小部分代码开始分拆。