tags:

views:

387

answers:

12

I run a fantasy basketball league. My php website/sql database is designed to let the person running the team do everything through the website - they can waive a player, and the player automatically goes into the FA pool, etc.

Everything has worked perfectly until about a week ago. Anytime now that a team goes to sign a player, after clicking "Sign", they get a blank PHP page. I have no idea why - I have made no adjustments to any files. It just started happening. Below is the code for the blank PHP page - can someone help?

<?php

$username = "me";
$password = "mypassword";
$database = "mydatabase";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

$Team_Offering = $_POST['Team_Name'];
$Fields_Counter = $_POST['counterfields'];
$Roster_Slots = $_POST['rosterslots'];
$Healthy_Roster_Slots = $_POST['healthyrosterslots'];
$Type_Of_Action = $_POST['Action'];

$queryt="SELECT * FROM nuke_ibl_team_info WHERE team_name = '$Team_Offering' ";
$resultt=mysql_query($queryt);

$teamid=mysql_result($resultt,0,"teamid");

$Timestamp = intval(time());


// ADD TEAM TOTAL SALARY FOR THIS YEAR

$querysalary="SELECT * FROM nuke_iblplyr WHERE teamname = '$Team_Offering' AND retired = 0 ";
$results=mysql_query($querysalary);
$num=mysql_numrows($results);
$z=0;

while($z < $num)
    {
     $cy=mysql_result($results,$z,"cy");
     $cyy = "cy$cy";
     $cy2=mysql_result($results,$z,"$cyy");
     $TotalSalary = $TotalSalary + $cy2;
     $z++;
    }

//ENT TEAM TOTAL SALARY FOR THIS YEAR

$k=0;
$Salary=0;

while ($k < $Fields_Counter)
{
$Type=$_POST['type'.$k];
$Salary=$_POST['cy'.$k];
$Index=$_POST['index'.$k];
$Check=$_POST['check'.$k];
$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' ";
$resultn=mysql_query($queryn);
$playername=mysql_result($resultn,0,"name");
$players_team=mysql_result($resultn,0,"tid");

if ($Check == "on")
  {
  if ($Type_Of_Action == "drop")
    {
      if ($Roster_Slots < 4 and $TotalSalary > 7000)
     {

       echo "You have 12 players and are over $70 mill hard cap.  Therefore you can't drop a player! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.";

     }else{

       $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '1000', `droptime` = '$Timestamp' WHERE `pid` = '$Index' LIMIT 1;";
       $resulti=mysql_query($queryi);

       $topicid=32;
       $storytitle=$Team_Offering." make waiver cuts";
       $hometext="The ".$Team_Offering." cut ".$playername." to waivers.";

       // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 
       $timestamp=date('Y-m-d H:i:s',time());

       $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
       $resultcat=mysql_query($querycat);
       $WPMoves=mysql_result($resultcat,0,"counter");
       $catid=mysql_result($resultcat,0,"catid");

       $WPMoves=$WPMoves+1;

       $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
       $resultcat2=mysql_query($querycat2);

       $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
       $resultstor=mysql_query($querystor); 
       echo "<html><head><title>Waiver Processing</title>
      </head>
      <body>
      Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.
      </body></html>";
     }

    } else {
      if ($players_team == $teamid)
     {
       $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '800', `teamname` = '$Team_Offering', `tid` = '$teamid' WHERE `pid` = '$Index' LIMIT 1;";
       $resulti=mysql_query($queryi);
       $Roster_Slots++;

       $topicid=33;
       $storytitle=$Team_Offering." make waiver additions";
       $hometext="The ".$Team_Offering." sign ".$playername." from waivers.";

       // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 

       $timestamp=date('Y-m-d H:i:s',time());

       $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
       $resultcat=mysql_query($querycat);
       $WPMoves=mysql_result($resultcat,0,"counter");
       $catid=mysql_result($resultcat,0,"catid");

       $WPMoves=$WPMoves+1;

       $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
       $resultcat2=mysql_query($querycat2);

       $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
       $resultstor=mysql_query($querystor); 
       echo "<html><head><title>Waiver Processing</title>
      </head>
      <body>
      Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.
      </body></html>";

     } else {

       if ($Healthy_Roster_Slots < 4 and $TotalSalary + $Salary > 7000)
       {

        echo "You have 12 or more healthy players and this signing will put you over $70.  Therefore you can not make this signing. <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.";

       } elseif ($Healthy_Roster_Slots > 3 and $TotalSalary + $Salary > 7000 and $Salary > 103) {

        echo "You are over the hard cap and therefore can only sign players who are making veteran minimum contract! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.";

       } elseif ($Healthy_Roster_Slots < 1) {
        echo "You have full roster of 15 players.  You can't sign another player at this time! <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.";

       } else {

        $queryi = "UPDATE nuke_iblplyr SET `ordinal` = '800', `bird` = '0', `cy` = '1', `cy1` = '$Salary', `teamname` = '$Team_Offering', `tid` = '$teamid' WHERE `pid` = '$Index' LIMIT 1;";
        $resulti=mysql_query($queryi);
        $Roster_Slots++;

        $topicid=33;
        $storytitle=$Team_Offering." make waiver additions";
        $hometext="The ".$Team_Offering." sign ".$playername." from waivers.";

        // ==== PUT ANNOUNCEMENT INTO DATABASE ON NEWS PAGE 

        $timestamp=date('Y-m-d H:i:s',time());

        $querycat="SELECT * FROM nuke_stories_cat WHERE title = 'Waiver Pool Moves'";
        $resultcat=mysql_query($querycat);
        $WPMoves=mysql_result($resultcat,0,"counter");
        $catid=mysql_result($resultcat,0,"catid");

        $WPMoves=$WPMoves+1;

        $querycat2="UPDATE nuke_stories_cat SET counter = $WPMoves WHERE title = 'Waiver Pool Moves'";
        $resultcat2=mysql_query($querycat2);

        $querystor="INSERT INTO nuke_stories (catid,aid,title,time,hometext,topic,informant,counter,alanguage) VALUES ('$catid','Associated Press','$storytitle','$timestamp','$hometext','$topicid','Associated Press','0','english')";
        $resultstor=mysql_query($querystor); 
        echo "<html><head><title>Waiver Processing</title>
       </head>
       <body>
       Your waiver moves should now be processed.  <br>You will be automatically redirected to <a href=\"http://www.chibul.com/iblv2\"&gt;the main IBL page</a> in a moment.  If you are not redirected, click the link.
       </body></html>";

      }
     }
    }
  }
$k++;
}

?>
+2  A: 

Turn error reporting on for PHP in your php.ini file and see if any errors or warnings are reported. Also try removing the trailing whitespace at the end of the file before the last ?>, this has caused problems for me in the past.

Brandon
Where do I locate said file?
+10  A: 

Put the following right after the open PHP tag:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

If this doesn't work, there is a probably a parse error and then you'll need to check the error log.

You will also need to escape your values that you are putting in the queries. This maybe causing a MySQL query to fail. If someone puts a " in $_POST['Team_Name'] your first query may fail.

Another final possible problem: are you sure it can still connect to MySQL?

An option to find the problem is commenting out large portions of code and then piece by piece uncommenting sectons.

Edit: So your first problem is the mysql_connect line. It needs to be changed to, notice the quotes: mysql_connect('localhost',$username,$password); Also, the variable $result and $queryt are spelt wrong in this line and used in their correct spelling: $resultt=mysql_query($queryt); I haven't checked the rest, but there maybe other errors that will cause your script to break. Some of the errors list are important to fix, but won't break your script.

Escaping: Check out the following page: http://php.net/manual/en/function.mysql-escape-string.php This basically prevents people from deleting your entire database.

Check the sample code on this page to find out how to connect to MySQL and check to see if you are connected.

Another suggestion: Are you sure none of your queries are failing? You probably want to check if the result from query is false before continuing, like:

if ($resultcat2 === false) {
    trigger_error('query failed ' . $sql, E_USER_ERROR);
    echo 'Sorry, there was a problem processing your request. Please try again later.';
    exit;
}
Darryl Hein
When I added that, I received this:Notice: Use of undefined constant localhost - assumed 'localhost' in /home/chibul/public_html/iblv2/waivermove.php on line 8Notice: Undefined index: counterfields in /home/chibul/public_html/iblv2/waivermove.php on line 12Notice: Undefined index: rosterslots in /home/chibul/public_html/iblv2/waivermove.php on line 13Notice: Undefined index: healthyrosterslots in /home/chibul/public_html/iblv2/waivermove.php on line 14Notice: Undefined variable: TotalSalary in /home/chibul/public_html/iblv2/waivermove.php on line 37Other than that the page's blank
Also, what do you mean by "escape my values"? Sorry, I am EXTREMELY new at all of this...I actually inherited this code from someone and have been working to learn it. How would I test to see if it is connecting to MySQL?
Its safe to say that its connecting because you don't get a connection error spitting back at you.Also you would've seen this msg: "Unable to select database"
carwash
Tried all your suggestions...still no luck. I was connected, and nothing else made it work. I'm at a total loss.
How can I check the error log for a parse error, and what would I be looking for? (Again, newbie here)
Have you tried commenting out the entire page, putting an echo 'here'; before the commented out portion and seeing if the "here" shows up on the page?
Darryl Hein
Just tried that, and it did indeed show up.
A: 

Without going through your code in too much detail,I would suggest you look for any sections that may loop for a long time,without returning

Toby Allen
A: 

After enabling error reporting, make sure to put in else statements that correspond with all of your if-statements so you can determine if those statements are being triggered or not. Throw in some echos.

Joe Philllips
+2  A: 

Added comments to some of the above responses. Please try to dumb down for me as much as possible - I'm extremely new to this. I can't figure out why it would suddenly stop working, though, when I've made no changes at all to the code.

Something like the unquoted localhost may suddenly break. You may have want to change it to 127.0.0.1 (with quotes) as it's a bit more reliable in PHP.
Darryl Hein
Just tried that...no dice.
If this isn't an "answer" then please don't put it in the answer field.
Joe Philllips
+2  A: 

If you made no changes to any files and it just "broke" then that would indicate that either your webhost went thru a configuration change, your database got hosed somehow, or that someone else may've changed something.

To help spot the culprit, after every one of these

if{
else{
while{

or/and after every few statements (statements end with a semicolon ;) add this to the next line

print "<br> made it to this label: some_unique_label_name_here";

Where you should replace the label each time to help you trace the code. This will be your first step into debugging the script to figure out how far the code execution is reaching.

carwash
Did you try this method at all?Add a print statement to the second line, you should get that at the minimum.Also remove the '@' symbol from the mysql_select_db
carwash
This is where I got...everything after that line below, when I insert it, it doesn't show up.$k=0;$Salary=0;print "<br> made it to this label: some_unique_label_name_here";while ($k < $Fields_Counter){$Type=$_POST['type'.$k];$Salary=$_POST['cy'.$k];$Index=$_POST['index'.$k];$Check=$_POST['check'.$k];$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' ";$resultn=mysql_query($queryn);$playername=mysql_result($resultn,0,"name");$players_team=mysql_result($resultn,0,"tid");
Sorry, posting in the answers so it'll show more clearly.
A: 

Also, to clarify - I have probably three dozen PHP files on the site - this is the ONLY one that has stopped working.

A: 

This is where I got...everything below the print line wouldn't show up if I put the print line below it.

$k=0;
$Salary=0;

print "<br> made it to this label: some_unique_label_name_here";

while ($k < $Fields_Counter)

{

$Type=$_POST['type'.$k];

$Salary=$_POST['cy'.$k];

$Index=$_POST['index'.$k];

$Check=$_POST['check'.$k];


$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' ";
$resultn=mysql_query($queryn);

$playername=mysql_result($resultn,0,"name");

$players_team=mysql_result($resultn,0,"tid");
change that print line to:echo $k ." ". $Fields_Counter;maybe $Fields_Counter is 0, so that nothing happens.
Rich Bradshaw
When I tried that, instead of a blank page, I got simply '0'.
A: 

As an aside, you should change every variable from a get or post such as:

$Team_Offering = $_POST['Team_Name'];

to

$Team_Offering = mysql_real_escape_string($_POST['Team_Name']);

before using it in a mysql query, otherwise you are vunerable to SQL injection attacks.

Rich Bradshaw
A: 

So an update...nothing. lol

If you review this code:

$k=0;

$Salary=0;

print "
made it to this label: some_unique_label_name_here";

while ($k < $Fields_Counter)

{

$Type=$_POST['type'.$k];

$Salary=$_POST['cy'.$k];

$Index=$_POST['index'.$k];

$Check=$_POST['check'.$k];

$queryn="SELECT * FROM nuke_iblplyr WHERE pid = '$Index' "; $resultn=mysql_query($queryn);

$playername=mysql_result($resultn,0,"name");

$players_team=mysql_result($resultn,0,"tid");

If I put the print statement below while, the page goes blank and it doesn't show up. If the print statement is before while, the statement shows up but there's no action made on the page. The end result is that when running this page, the player selected on the previous page should be removed from Free Agents, added to the user's team, and a story should be posted on the front page announcing it. Obviously none of those are happening here.

A: 

Does anyone else have any suggestions?

A: 

I guess not?