user2898982
user2898982

Reputation: 3

PHP white screen when POST data submitted

I am writing a php script which does the following:

The trouble is I keep getting a white screen when I hit the form submit button on the previous page. It shows savearticle.php in the address bar but nothing else. It won't even print out error messages. I must have rewritten this about three times now so forgive any logic errors in the code but it should be working as far as I can see. I just want to make sure it's working in its present form before going any further.

The echo statements throughout the code are something I found useful for debugging in the past but it doesn't display a single one.

In the functions.php include I am just using the database connection information as I use this across multiple pages without issue.

Any help would be appreciated as this is getting pretty frustrating.

<?php
echo "start of file";
include_once 'functions.php';
echo "after include";
$title          = $_POST[ 'title' ];
$body           = $_POST[ 'body' ];
$folderselect   = $_POST[ 'folderselect' ];
$foldercreate   = $_POST[ 'foldercreate' ];
$newfolderflag  = 99;
echo "after variables";
if ($folderselect === "Create New Folder") {
    $folder = $foldercreate;
    $newfolderflag = 0; 
    } else if ($foldercreate == NULL && $folderselect === "Create New Folder"){
    $folder = "misc";
    echo "Nothing selected. Putting in Miscellaneous folder.\n\n";
    $newfolderflag = 0;
    } else {
        $folder = $folderselect;
        }

if ($newfolderflag === 0) {
    $query = "INSERT INTO folder ('name') VALUES ('$folder');";
    if (mysqli_query($db, $query) == TRUE) { echo "New folder created successfully!\n\n"};
}
echo "after if statements";
$query = "SELECT 'folderID' FROM folder WHERE name = $folder;";
$result = mysqli_query($db, $query);
$row = array();
$row = mysqli_fetch_array($result);
$folder = $row['0'];

$query  = "INSERT INTO article ( title, body, folderID, userID ) VALUES ('$title', '$body', '$folder', '$user');";
if (mysqli_query($db, $query) === TRUE) {
    echo "Article Saved!\r";
    echo "<a href="write.php">Back</a>";
    }
echo "after database stuff";

?>

Upvotes: 0

Views: 981

Answers (3)

MillaresRoo
MillaresRoo

Reputation: 3848

You need to change your select in order to surround $folder with quotes:

$query = "SELECT 'folderID' FROM folder WHERE name = '$folder';";

Upvotes: 1

Jeremy Kendall
Jeremy Kendall

Reputation: 2869

First, error reporting and display should be cranked all the way up in your dev environment. In your php.ini, you should have the following:

error_reporting = -1
display_errors = 1
display_startup_errors = 1

You can recreate those settings in your script for debugging purposes only by adding the following at the top of your current script (must be removed after debugging):

error_reporting(-1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

Now try again. If you still get nothing, then replace your first debugging echo with a die() statement. I usually use die('wtf?');. If wtf? shows up on the page, then cut and paste it farther down the page. Continue until the white screen reappears and you've found your problem.

Good luck!

Upvotes: 0

Machavity
Machavity

Reputation: 31654

A while screen means a Fatal error happened in parsing (which almost always means bad syntax, like a missing semicolon). Add the following line to the top of your script and see what the error is.

ini_set('display_errors', 1);

Also, using an IDE that color codes, like NetBeans, can help you tremendously by highlighting syntax issues.

Upvotes: 0

Related Questions