Jump to content

Blank rows submitted to database


VTXmom

Recommended Posts

I am trying to complete a class assignment of building a website, pretty much a final project, and I am having an issue with one of my pages. I created a form that a user fills out and submits to a mysql database. My issue is that it is adding a row to the database, but it is unpopulated. I will be the first to admit that I'm not sure what I am doing, and was wondering if someone could look at my code and tell me where I am going wrong. I've googled this issue and tried all the fixes that were posted but nogo. Thanks in advance for any help. Here is the code for my php script:

 

<?php
$link = mysqli_connect('localhost', '****', '******', 'pet_shop');

if($link === false) {
   die("ERROR: Could not connect. " . mysqli_connect_error());
}

  error_reporting(E_ALL ^ E_NOTICE);
 
$firstname = isset($link, $_POST['FirstName'])? $_POST['$firstame'] : '';
$lastname = isset($link, $_POST['LastName'])? $_POST['$LastName'] : '';
$address = isset($link, $_POST['Address'])? $_POST['$Address'] : '';
$city = isset($link, $_POST['City'])? $_POST['$City'] : '';
$state = isset($link, $_POST['State'])? $_POST['$State'] : '';
$zip = isset($link, $_POST['Zip'])? $_POST['$Zip'] : '';
$phonenumber = isset($link, $_POST['PhoneNumber'])? $_POST['$PhoneNumber'] : '';
$email = isset($link, $_POST['Email'])? $_POST['$Email'] : '';
$pettype = isset($link, $_POST['PetType'])? $_POST['$PetType'] : '';
$breed = isset($link, $_POST['Breed'])? $_POST['$Breed'] : '';
$petname = isset($link, $_POST['PetName'])? $_POST['$PetName'] : '';
$neuteredorspayed = isset($link, $_POST['NeuteredOrSpayed'])? $_POST['$NeuteredOrSpayed'] : '';
$petbirthday = isset($link, $_POST['PetBirthday'])? $_POST['$PetBirthday'] : '';

$sql = "INSERT INTO `pet_shop`.`grooming` (`FirstName`, `LastName`, `Address`,
`City`, `State`, `Zip`, `PhoneNumber`, `Email`, `PetType`, `Breed`, `PetName`,
`NeuteredOrSpayed`, `PetBirthday`) VALUES ('$firstname', '$lastname', '$address',
'$city', '$state', '$zip', '$phonenumber', '$email', '$pettype', '$breed',
'$petname', '$neuteredorspayed', '$petbirthday');";

if(mysqli_query($link, $sql)) {
   echo "A member of our staff will contact you to set up an appointment..";
}
else
{
   echo "ERROR: Could not execute $sql. " . mysqli_error($link);
}

mysqli_close($link);
?>
 

Link to comment
https://forums.phpfreaks.com/topic/294762-blank-rows-submitted-to-database/
Share on other sites

I can't see what's giving you trouble. It's difficult to read the code when it's not formatted. (I'm a noob too!) You should use the full editor when posting and select the "code-option" for better readability! But anyway, here is a basic set up for retrieving and sending values from an HTML form to your database. Maybe it will help.

<form method="POST" action="$_SERVER['PHP_SELF']">

     Name: <input type="text" name="my_name">
     Phone: <input type="number" name="my_phone">

     <input type="submit">

</form> 
<?php

$dbhost = "localhost";
$dbuser = "my_username";
$dbpass = "my_password";
$dbname = "my_database";

$dblink = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

$value1 = "$_POST['my_name']";
$value2 = "$_POST['my_phone']";

$query = "INSERT INTO table_name (column1, column2) VALUES ('$value1', '$value2');
mysqli_query($dblink, $query);

?>

Make sure your database is defined correctly, and see if you can get this basic set up to work. Then, expand one line of code at a time and you should be able to get where you want to be! :)

Your code:

$firstname = isset($link, $_POST['FirstName'])? $_POST['$firstame'] : '';

My Code:

$firstname = isset($_POST['FirstName']) ? mysqli_real_escape_string( $link, $_POST["FirstName"] ) : '';

From the ducumentation: For more information, visit here: http://php.net/manual/en/function.isset.php

isset — Determine if a variable is set and is not NULL
bool isset ( mixed $var [, mixed $... ] )

In $_POST after ? in your code, you have passed the variable which will return ''; And hence, you are not seeing that the values are inserted in the database.

 

So your code should look like this:

<?php

error_reporting(E_ALL ^ E_NOTICE);

$link = mysqli_connect( 'localhost', '****', '******', 'pet_shop');

if( !$link ) {
   die( "ERROR: Could not connect: " . mysqli_connect_error( $link ) );
}

//You need to use mysqli_real_escape_string() method to avoid sql injection;
// Refer this link for more information http://php.net/manual/en/mysqli.real-escape-string.php

$firstname = isset( $_POST['FirstName'] ) ? mysqli_real_escape_string( $link, $_POST['FirstName'] ) : '';
$lastname  = isset( $_POST['LastName'] ) ? mysqli_real_escape_string( $link, $_POST['LastName'] ) : '';
$address   = isset( $_POST['Address'] ) ? mysqli_real_escape_string( $link, $_POST['Address'] ) : '';
//and so on...

$sql = "INSERT INTO `pet_shop`.`grooming` (`FirstName`, `LastName`, `Address`, ... ) VALUES ( ' " . $firstname . " ', ' " . $lastname . " ',  ' " . $address . " ' , ...)";

$result = $mysqli_query( $link, $sql );

if( $result ) {
    // remove the echo line or else you will face a warning of cannot modify header.
    // You can create a new file and write the echo statement in that file
    // You can then call that file in the header function below.
    echo "A member of our staff will contact you to set up an appointment..";

    // To avoid twice insertion in the database on page refresh
    header("Location: /path/to/your/file.php");

    // To stop the execution of the current page.
    exit();
} else {
   echo "ERROR: Could not execute the query. " . mysqli_error( $link );
}

mysqli_close( $link );
?>

I can't see what's giving you trouble. It's difficult to read the code when it's not formatted. (I'm a noob too!) You should use the full editor when posting and select the "code-option" for better readability! But anyway, here is a basic set up for retrieving and sending values from an HTML form to your database. Maybe it will help.

 

<form method="POST" action="$_SERVER['PHP_SELF']">

     Name: <input type="text" name="my_name">
     Phone: <input type="number" name="my_phone">

     <input type="submit">

</form> 
<?php


Marius, thanks,  where do I find the full editor?

$dbhost = "localhost";
$dbuser = "my_username";
$dbpass = "my_password";
$dbname = "my_database";

$dblink = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);

$value1 = "$_POST['my_name']";
$value2 = "$_POST['my_phone']";

$query = "INSERT INTO table_name (column1, column2) VALUES ('$value1', '$value2');
mysqli_query($dblink, $query);

?>
Make sure your database is defined correctly, and see if you can get this basic set up to work. Then, expand one line of code at a time and you should be able to get where you want to be! :)

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.