0

I'm pretty new with PHP. I'm having trouble with a form I'm working with.

Here is my HTML

<form class="form-horizontal" action="submit.php">
    <div class="form-group">
        <label for="name" class="col-sm-2 control-label">Name:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="name" name = "name" placeholder="John Doe">
        </div>
    </div>
    <div class = "form-group">
        <label for="inputEmail3" class="col-sm-2 control-label">Email:</label>
        <div class="col-sm-10">
            <input type="email" class="form-control" id="email" name = "email" placeholder="name@domain.com">
        </div>
    </div>
    <div class="form-group">
        <label for="phoneNumber" class="col-sm-2 control-label">Phone:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="phoneNumber" name = "phoneNumber" placeholder="555-555-5555">
        </div>
    </div>

    <div class="form-group">
        <label for="major" class="col-sm-2 control-label">Major:</label>
        <div class="dropdown">
            <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" name = "major" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
                Dropdown
                <span class="caret"></span>
            </button>
            <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"></ul>
        </div>
    </div>

    <hr>

    <div class="form-group">
        <label for="itemForSale" class="col-sm-2 control-label">Item for Sale:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="itemForSale1" name = "itemForSale1" placeholder="My old video games, some chairs, some chicken, a pizza.">
        </div>
    </div>

    <div class="form-group">
        <label for="quantity" class="col-sm-2 control-label">Quantity:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id = "quantity1" name = "quantity1" placeholder="1,000,000">
        </div>
    </div>

    <div class="form-group">
        <label for="major" class="col-sm-2 control-label">Price:</label>
        <div class="col-sm-10">
            <input type="text" class="form-control" id="price1" name = "price1" placeholder="ex. $100.00">
        </div>
    </div>
</form>

Here is my PHP

<?php
    // Variables
    $name;
    $email;
    $phone;
    $major;
    $itemForSale1;
    $quantity1;
    $price1;
    $itemForSale2;
    $quantity2;
    $price2;
    $itemForSale3;
    $quantity3;
    $price3;

    ini_set('display_errors', 'On'); ini_set('html_errors', 0); error_reporting(-1);

    if (isset($_POST["submit"]))
    {
        // Initiate the variables
        $name         = $_POST["name"];
        $email        = $_POST["email"];
        $phone        = $_POST["phone"];
        $major        = $_POST["major"];
        $itemForSale1 = $_POST["itemForSale1"];
        $quantity1    = $_POST["quantity1"];
        $price1       = $_POST["price1"];
        $itemForSale2 = $_POST["itemForSale2"];
        $quantity2    = $_POST["quantity2"];
        $price2       = $_POST["price2"];
        $itemForSale3 = $_POST["itemForSale3"];
        $quantity3    = $_POST["quantity3"];
        $price3       = $_POST["price3"];

        // IF name is empty string
        if($name == "")
        {
            // Alert the user
            echo "Please enter your name.";
        }

        // IF email is invalid
        if (!filter_var($email, FILTER_VALIDATE_EMAIL) === true)
        {
            // Alert the user
            echo("$email is an invalid email address");
        }

        // Strip any occurrences of '-' in phoneNumber
        str_replace("-", "", $phoneNumber)

        // IF phoneNumber does not equal 10 characters
        if(strlen(phoneNumber) != 10)
        {
            // Alert the user
            echo "Invalid phone number. Ex. 315-555-5555";
        }

        // IF itemForSale is empty string
        if($itemForSale == "")
        {
            // Alert the user
            echo "You must enter at least one item.";
        }

        // IF quantity1 is less than 1
        if($quantity1 < 1)
        {
            // Alert the user
            echo "You can't sell anything less than one item.";
        }

        // Strip any occurrences of '$' in price
        str_replace("$", "", $phoneNumber)

        // IF price is less than 0.00
        if($price1 < 0)
        {
            echo "What's less than free?";
        }

        echo $name;
        echo $email;
        echo $phone;
        echo $major;
        echo $itemForSale1;
        echo $quantity1;
        echo $price1;

    }
?>

When I press submit on my form I get the 500 Internal Server Error. Any idea what might be causing this? I'm not very familiar with PHP sooo.

  • I've tried just inputting just the name and nothing else, and I still get it. –  Sep 24 '15 at 04:43
  • 3
    Error is here `str_replace("-", "", $phoneNumber)`. It's not displaying an error? – chris85 Sep 24 '15 at 04:48
  • ^ Also, why are you checking if a form element named 'submit' has been POSTed? You do not even have a form element with said name. – Brandon White Sep 24 '15 at 04:50
  • @chris85 Nope, this is all I get. https://gyazo.com/6f4b6332f899902d08693c3db1463264, –  Sep 24 '15 at 04:50
  • @BrandonWhite I trimmed the HTML, the button for submit is `` –  Sep 24 '15 at 04:52

2 Answers2

1

Some solutions for you-

1) give form method tag as - method="post"

2) Try changing

<input id="submit" name="submit" type="submit" value="submit" class="btn btn-primary">

to

<input id="btnsubmit" name="btnsubmit" type="submit" value="submit" class="btn btn-primary">

and access it as

isset($_POST["btnsubmit"])

3) also you have missed semi-colon after str_replace("$", "", $phoneNumber) and str_replace("-", "", $phoneNumber)

4) change if(strlen(phoneNumber) != 10) to if(strlen($phoneNumber) != 10)

5) You also have accessed many values with wrong names in PHP code like phone number, major etc. Please make them correct and your code should work.

Suyog
  • 2,472
  • 1
  • 14
  • 27
0

All your str_replace functions are incorrect. You never terminated the lines they are on and aren't setting the replacement anywhere (not replacing isn't an error, per say, but doesn't make sense to do if not using it).

You could do:

$phoneNumber =  str_replace(array('$', '-'), '', $phoneNumber);

Which will strip $s and -s from $phoneNumber.

Additionally your form is processing as a GET because you haven't told it to process as a POST.

Change:

<form class="form-horizontal" action="submit.php">

to

<form class="form-horizontal" action="submit.php" method="POST">

The default form method is GET, What is the default form HTTP method?.

So if (isset($_POST["submit"])) is never true and you just get a blank page. You can add an else to the end of that conditional if you want to test this.

Community
  • 1
  • 1
chris85
  • 23,846
  • 7
  • 34
  • 51
  • Thank you! Now that I changed it, I am no longer getting the 500 error. However, they are not outputing. –  Sep 24 '15 at 04:59
  • Have you checked your server/PHP logs? Just tested even the faulty code on two dev servers -- no reproduction of the 500 error. – Brandon White Sep 24 '15 at 05:02
  • Well I finally got the browser to post the errors! I fixed the majority of them. However, I'm having problems with this line of code `if($strlen[phone] != 10)` EDIT: I fixed it, it should be `if(strlen($phone) != 10)` –  Sep 24 '15 at 05:16
  • Your code here doesn't/didn't have `$strlen[phone]`. That would definitely be an issue. That is making an array with `phone` constant. – chris85 Sep 24 '15 at 11:09