Whitena Cording
Whitena Cording

Reputation: 35

PHP Drop Down List Insert

I have a PHP system where the user will enter details into a form. Once text fields are entered it inserts my data into my database. However, I have drop down lists that do not insert into the database. Could anyone help on this matter as I am a moderate user and have not used PHP a lot. Thank you.

InsertDetails.php 
<div class="row">
    <div class="label">Adults 18+</div><!--end label-->
    <div class="input">
    <select name="adultsPlusEight" id="adultsPlusEight" class="detail" name="adultsPlusEight">

      <option value="1">1</option>
      <option value="2">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="8">8</option>
      <option value="9">9</option>
      <option value="10">10</option>         
    </select>
    </div><!--end input--> 
    <div class="context"> Choose how many people to book maximum of 10 per booking</div><!--end context-->              
    </div><!--end row-->


INSERT.PHP<?php
$link = mysqli_connect("localhost", "root", "", "loginsystem");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
// Escape user inputs for security
  $fName = mysqli_real_escape_string($link, $_POST['firstname']);
  $sName = mysqli_real_escape_string($link, $_POST['lastname']);
  $telNumb = mysqli_real_escape_string($link, $_POST['teleNumber']);
  $custEmail = mysqli_real_escape_string($link, $_POST['email']);
  $location = mysqli_real_escape_var_dump($link, $_POST['wlocation']);
  $adultPlus = mysqli_real_escape_integer($link, $_POST['adultsPlusEight']);
  $childPlus = mysqli_real_escape_integer($link, $_POST['childrenPlusTwo']);
  $addinfo = mysqli_real_escape_string($link, $_POST['additInform']);

// attempt insert query execution
  $sql = "INSERT INTO customerdragon (fName, sName, telNumb, custEmail,
  $location , adultPlus, childPlus, addinfo) VALUES ('$fName', '$sName', '$telNumb', '$custEmail', '$location', '$adultPlus', '$adultPlus', '$childPlus', '$addinfo',  )";
 if(mysqli_query($link, $sql)){
   echo "Records added successfully.";
} else{
   echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
// close connection
mysqli_close($link);
?>`

Upvotes: 1

Views: 74

Answers (1)

Funk Forty Niner
Funk Forty Niner

Reputation: 74220

That echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); should have thrown you an SQL error, something you didn't share with us.

Look at this in your VALUES

'$addinfo',
          ^
  • Remove the trailing comma.

This is the error I receive: Notice: Undefined index: wlocation in C:\xampp\htdocs\PHPLogInSystem\insert1.php on line 14"

You also have a $ in $location for your column name:

$sql = "INSERT INTO customerdragon (fName, sName, telNumb, custEmail,  $location
                                                                       ^
  • Remove the dollar sign. Make sure your column name is indeed called "location".

Remember the $ in $location in your column names (fName, sName, telNumb, custEmail, $location , adultPlus, childPlus, addinfo)?

That needs to read as:

(fName, sName, telNumb, custEmail, custLocation, adultPlus, childPlus, addinfo)

as per your DB schema.

Edit:

Also, you're repeating '$adultPlus', '$adultPlus', which would count as a miscount in data entry.

$sql = "INSERT INTO customerdragon 

(fName, sName, telNumb, custEmail, custLocation, adultPlus, childPlus, addinfo) 

VALUES 

  ('$fName', '$sName', '$telNumb', '$custEmail', '$location', '$adultPlus', '$childPlus', '$addinfo')";

Add error reporting to the top of your file(s) which will help find errors.

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

Sidenote: Error reporting should only be done in staging, and never production.

Upvotes: 0

Related Questions