动态sql php页面上的死亡白屏

时间:2015-07-23 13:22:11

标签: php html mysql

我正在学习使用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();
}
}
?>

2 个答案:

答案 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)

抱歉,我还没有得到答案,但是想给你一个如何开始发现问题的提示。

当我得到没有报告错误的白屏时,我将开始尝试通过注释掉大量代码来缩小包含问题的代码部分,然后慢慢取消评论越来越多的代码来查看确切的位置发生错误。

例如,我可能会注释掉类中的所有函数。然后我会慢慢添加每个函数,直到错误发生。

这样,你会发现一小部分代码开始分拆。