Form not saving to database

后端 未结 2 607
梦毁少年i
梦毁少年i 2021-01-22 08:23

I made a form for a 5K run where the user enters basic information about him/her (first name, last name, email, organization, whether they are attending the event, and checking

2条回答
  •  时光说笑
    2021-01-22 09:01

    There a basically two ways to use a form to send data to a database. First method is to let people fill out the form and send the data to an next page. You can add Java script to check if the filled out data meets your requirement and to imediatedly respond to . E.g. have all required field have been filled. The next page progresses the data and send the data to the MySQL server. Form methods you could use are POST / GET. Second method is to display the form on one page and do the prossesing of the data on the same page (PHP_SELF or by referencing the same page in you form action). The second method requires that code is very structured. If you need to check if the data has been submitted. Next you need to verify is valid. If the form was submitted and the input valid the data is submitted to the database and the visitor is displayed a text like "Thank your for submitting your form . We will contact you as soon as possible.". If the form was submitted and the data was not valid the visitor should stay on the same page en get an error messages like "The following fields need to be fill out: ...." and the form should be displayed. If the form was not submitted (on the first visit) the visitor should get the form displayed.

    The most easy method to setup would be the first method the second is the nicest I think, but I suggest you start out with the first method. Once the first method is working you could add things like Javascript and / or change it to method two.

    Try this:

    ".$row['name']."\n";
                    }
            }
            mysqli_close($link);
    }
    
    //Check if variables are post if so filter the input if not initiating variables for form
    IF (isset($_POST['firstname'])){  
         $firstname  = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING);    
    }
    ELSE {
        $firstname  = "";
    }
    
    IF (isset($_POST['lastname'])){
                $lastname   = filter_var($_POST['lastname'],FILTER_SANITIZE_STRING); 
    }
    ELSE {
        $lastname   = "";
    }
    
    IF (isset($_POST['org'])){
       $org = $_POST['org'];
    }
    ELSE {
        $org    = "";
    }
    
    IF (isset($_POST['email'])){
        $email  = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL);
    }
    ELSE {
        $email  = "";
    }
    
    IF (isset($_POST['attendant'])){
        $attendant  = filter_var(filter_var($_POST['attendant'],FILTER_SANITIZE_STRING));
    }
    ELSE {
        $attendant  = "";
    }
    IF (isset($_POST['waiver'])){
        $waiver = filter_var(filter_var($_POST['waiver'],FILTER_SANITIZE_STRING));
    }
    ELSE {
        $waiver  = "";
    }
    
    
    
    function submit_form(){
        $host = "localhost";
        $user = "user";
        $password = "password";
        $database = "database";   
    
        $firstname  = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 
        $lastname   = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING); 
        $org    = $_POST['org'];
        $email  = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL);
        $attendant  = $_POST['attendant'];
    
        // open connection to database
        $link = mysqli_connect($host, $user, $password, $database);
            IF (!$link){
                echo ("Unable to connect to database!");
            }
            ELSE {
               //INSERT VALUES INTO DATABASE
               $query = "INSERT INTO basicInfo (firstname,lastname,email,attendant,org,time) VALUES('".$firstname."', '".$lastname."', '".$email."', ".$attendant.", ".$org.", NOW())";
               return mysqli_query($link,$query);
    
            }
    //close connection to database
            mysqli_close($link);
    
        }
    
    
    
    //Warning messages initiation
    $warning_firstname  = "*Required";
    $warning_lastname   = "*Required";
    $warning_org  = "*Required";
    $warning_email   = "*Required";
    $warning_attendant   = "*Required";
    $warning_waiver      = "*Required";
    
    
    
    
    
    $formfirstpart = <<
        Form 5K RUN 
         
         
                

    We're excited to introduce the 5K Run to VIA-1! During this year's conference, Individuals can register to participate in the fun across University of Iowa's campus in order to raise money for this year's CPP


    $warning_firstname


    $warning_lastname


    $warning_email



    $warning_attendant



EODlastpart; IF(!IsSet($_POST['submit'])){ // Check if form is not send, if not display empty form. echo $formfirstpart; echo listform(); echo $formlastpart; } ELSEIF (IsSet($_POST['submit']) AND (isset($firstname) OR isset($lastname) OR isset($email) OR isset($org) OR isset($attendant))) { $warning_counter = 0; if ($firstname == "") { $warning_firstname = 'Please provide your first name and / or a valid name'; $warning_counter = + 1 ; } if ($firstname == "") { $warning_lastname = 'Please provide your last name and / or a valid name'; $warning_counter = + 1; } if ($email == "") { $warning_email = 'Please provide your email adress and / or a valid email adress'; $warning_counter = +1; } if ($org == " ") { $warning_org = 'Please select your organisation'; $warning_counter = +1; } if ($waiver == "") { $warning_waiver = 'You have to accept the waiver agreement the otherwise you cannot attend'; $warning_counter = +1; } if ($attendant == "") { $warning_attendant = 'Do you attend VIA-1?'; $warning_counter =+1; } if ($warning_counter>0){ $formfirstpart1 = << Form 5K RUN

We're excited to introduce the 5K Run to VIA-1! During this year's conference, Individuals can register to participate in the fun across University of Iowa's campus in order to raise money for this year's CPP


$warning_firstname


$warning_lastname


$warning_email




$warning_attendant


EODlastpart1; echo $formfirstpart1; echo listform(); echo $formlastpart1; } IF ($warning_counter == 0){ submit_form(); header('Location: submitted.php'); } } ?>

After you have completed the form you will be redirect to this page submitted.php


    Your form has been submitted
    
    

See you at the 5K run.

Your form has been submitted. Good luck with your training workouts

Click here to go back to the main page.

Table structure:

CREATE TABLE IF NOT EXISTS organisations (
  id_organisations int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  PRIMARY KEY (id_organisations)
) ENGINE=InnoDB;


CREATE TABLE IF NOT EXISTS basicinfo (
  id int(11) NOT NULL AUTO_INCREMENT,
  firstname varchar(30) NOT NULL,
  lastname varchar(50) NOT NULL,
  org int(11) NOT NULL,
  email varchar(100) NOT NULL,
  attendant int(11) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;

SQL FIDDLE

Important to note this is just a start. I haven't tested it so bear that in mind. I didn't understand some part of your code so I had to do some guess work.

EDIT: Removal of old database and import of structure and data:

DROP TABLE IF EXISTS basicinfo;
DROP TABLE IF EXISTS organisations;


CREATE TABLE organisations (
      id_organisations int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) DEFAULT NULL,
      PRIMARY KEY (id_organisations)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE basicinfo (
  id int(11) NOT NULL AUTO_INCREMENT,
  firstname varchar(30) NOT NULL,
  lastname varchar(50) NOT NULL,
  org int(11) NOT NULL,
  email varchar(100) NOT NULL,
  attendant int(11) NOT NULL,
  `time` datetime NOT NULL,
  PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


INSERT INTO `organisations` (`id_organisations`, `name`) VALUES
(1, 'Northeastern Illinois'),
(2, 'Illinois Institute of Technology'),
(3, 'Loyola'),
(4, 'Oberlin'),
(5, 'Northwestern'),
(6, 'Purdue'),
(7, 'IVSU'),
(8, 'UW-Madison'),
(9, 'UIllinois'),
(10, 'Iowa State University'),
(11, 'Michigan-Ann Arbor'),
(12, 'Marquette University'),
(13, 'Michigan State'),
(14, 'UIC'),
(15, 'Notre Dame'),
(16, 'VSAM'),
(17, 'Ohio State'),
(18, 'UCincinnati'),
(19, 'Northern Illinois'),
(20, 'Indiana-Bloomington'),
(21, 'University of Iowa'),
(22, 'St. Cloud');

Change UID into ID in the PHP code if your have changed it before. The above query will delete your table (basicinfo) and then recreate two new tables (basicinfo and organisations). This how you would apply it to your own database. Copy the SQL code above to phpmyadmin. Login into phpmyadmin -> select your database -> SQL -> Remove the default text and copy the code above into the window -> run the query (start).

If want to just alter your database you could use this query:

ALTER TABLE `basicinfo` 
CHANGE `uid` `id` INT auto_increment,
CHANGE `firstname` `firstname` varchar(30),
CHANGE `lastname` `lastname` varchar(50),
CHANGE `org` `org` INT,
CHANGE `email` `email` VARCHAR(100), 
ADD `time` datetime NOT NULL;

But you still need to create and populate the organisation database.

CREATE TABLE organisations (
      id_organisations int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(100) DEFAULT NULL,
      PRIMARY KEY (id_organisations)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `organisations` (`id_organisations`, `name`) VALUES
(1, 'Northeastern Illinois'),
(2, 'Illinois Institute of Technology'),
(3, 'Loyola'),
(4, 'Oberlin'),
(5, 'Northwestern'),
(6, 'Purdue'),
(7, 'IVSU'),
(8, 'UW-Madison'),
(9, 'UIllinois'),
(10, 'Iowa State University'),
(11, 'Michigan-Ann Arbor'),
(12, 'Marquette University'),
(13, 'Michigan State'),
(14, 'UIC'),
(15, 'Notre Dame'),
(16, 'VSAM'),
(17, 'Ohio State'),
(18, 'UCincinnati'),
(19, 'Northern Illinois'),
(20, 'Indiana-Bloomington'),
(21, 'University of Iowa'),
(22, 'St. Cloud');

SQL FIDDLE DEMO

FINAL EDIT:

".$row['name']."\n";
                }
        }
        mysqli_close($link);
}

//Check if variables are post if so filter the input if not initiating variables for form
IF (isset($_POST['firstname'])){  
     $firstname  = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING);    
}
ELSE {
    $firstname  = "";
}

IF (isset($_POST['lastname'])){
            $lastname   = filter_var($_POST['lastname'],FILTER_SANITIZE_STRING); 
}
ELSE {
    $lastname   = "";
}

IF (isset($_POST['org'])){
   $org = $_POST['org'];
}
ELSE {
    $org    = "";
}

IF (isset($_POST['email'])){
    $email  = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL);
}
ELSE {
    $email  = "";
}

IF (isset($_POST['attendant'])){
    $attendant  = filter_var(filter_var($_POST['attendant'],FILTER_SANITIZE_STRING));
}
ELSE {
    $attendant  = "";
}
IF (isset($_POST['waiver'])){
    $waiver = filter_var(filter_var($_POST['waiver'],FILTER_SANITIZE_STRING));
}
ELSE {
    $waiver  = "";
}



function submit_form(){
    $host  = "host";
$user = "username";
$password = "password";
$database = "databasename";

    $firstname  = filter_var($_POST['firstname'], FILTER_SANITIZE_STRING); 
    $lastname   = filter_var($_POST['lastname'], FILTER_SANITIZE_STRING); 
    $org    = $_POST['org'];
    $email  = filter_var(filter_var($_POST['email'],FILTER_SANITIZE_EMAIL),FILTER_VALIDATE_EMAIL);
    $attendant  = $_POST['attendant'];

    // open connection to database
    $link = mysqli_connect($host,$user, $password, $database);
        IF (!$link){
            echo ("Unable to connect to database!");
        }
        ELSE {
           //INSERT VALUES INTO DATABASE
           $query = "INSERT INTO basicinfo (firstname,lastname,email,attendant,org,time) VALUES('".$firstname."', '".$lastname."', '".$email."', ".$attendant.", ".$org.", NOW())";
           return mysqli_query($link,$query);

        }
//close connection to database
        mysqli_close($link);

    }



//Warning messages initiation
$warning_firstname  = "*Required";
$warning_lastname   = "*Required";
$warning_org  = "*Required";
$warning_email   = "*Required";
$warning_attendant   = "*Required";
$warning_waiver      = "*Required";





$formfirstpart = <<

    
        Form 5K RUN 
        
        

    
    

            
We're excited to introduce the 5K Run to VIA-1! During this year's conference, Individuals can register to participate in the fun across University of Iowa's campus in order to raise money for this year's CPP

$warning_firstname


$warning_lastname


$warning_email




$warning_attendant
EODlastpart; IF(!IsSet($_POST['submit'])){ // Check if form is not send, if not display empty form. echo $formfirstpart; echo listform(); echo $formlastpart; } ELSEIF (IsSet($_POST['submit']) AND (isset($firstname) OR isset($lastname) OR isset($email) OR isset($org) OR isset($attendant))) { $warning_counter = 0; if ($firstname == "") { $warning_firstname = 'Please provide your first name and / or a valid name'; $warning_counter = + 1 ; } if ($firstname == "") { $warning_lastname = 'Please provide your last name and / or a valid name'; $warning_counter = + 1; } if ($email == "") { $warning_email = 'Please provide your email adress and / or a valid email adress'; $warning_counter = +1; } if ($org == " ") { $warning_org = 'Please select your organisation'; $warning_counter = +1; } if ($waiver == "") { $warning_waiver = 'You have to accept the waiver agreement the otherwise you cannot attend'; $warning_counter = +1; } if ($attendant == "") { $warning_attendant = 'Do you attend VIA-1?'; $warning_counter =+1; } if ($warning_counter>0){ $formfirstpart1 = << Form 5K RUN
We're excited to introduce the 5K Run to VIA-1! During this year's conference, Individuals can register to participate in the fun across University of Iowa's campus in order to raise money for this year's CPP

$warning_firstname


$warning_lastname


$warning_email




$warning_attendant
EODlastpart1; echo $formfirstpart1; echo listform(); echo $formlastpart1; } IF ($warning_counter == 0){ submit_form(); header('Location: submitted.php'); } } ?>

提交回复
热议问题