Я сделал форму для запуска в 5K, где пользователь вводит основную информацию о нем (имя, фамилия, адрес электронной почты, организация, независимо от того, посещают ли они мероприятие, и проверили флажок после просмотра формы отказа.
Я положил кнопку отправки в конце. У меня возникли проблемы с подключением моей формы к моей базе данных. Я уже пытался подключиться и сделать таблицу в mySql под названием «basicInfo». Я новичок в кодировании, поэтому я ценю всю помощь, которую я могу получить, и я застрял на ней.
Это мой код до сих пор
index.php (EDITED)
<?php // Event name $event = "2013 VIA-1 5K Run Fundraiser"; // Orgs See table organisations // $orgs = array('', 'Northeastern Illinois','Illinois Institute of Technology', 'Loyola', 'Oberlin', 'Northwestern', 'Purdue', 'IVSU', 'UW-Madison', 'UIllinois','Iowa State University', 'Michigan-Ann Arbor','Marquette University', 'Michigan State', 'UIC', 'Notre Dame', 'VSAM', 'Ohio State', 'UCincinnati', 'Northern Illinois', 'Indiana-Bloomington', 'University of Iowa', 'St. Cloud'); // asort($orgs); // Registration fees for attendees and non-attendees $fee_attendee = 10; $fee_nonAttendee = 15; $paypal_email = 'payment@example.com '; // Registration closing date (will go until 11:59 PM Central Standard Time of this day) $close_month = 03; $close_day = 08; $close_year = 2013; // $time = time(); Easier to use the build in now function of MySQL. function clean($in) { $out = trim(strip_tags($in)); $out = addslashes($out); return $out; } function listform(){ $host = "local"; $user = "user"; $password = "password"; $database = "database"; // open connection to databse $link = mysqli_connect($host, $user, $password, $database); IF (!$link){ echo ("Unable to connect to database!"); } ELSE { //Get organisations from table organisations $query = "SELECT * FROM organisations ORDER BY name ASC"; $result = mysqli_query($link, $query); while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ echo "<option value=".$row['id_organisations'].">".$row['name']."</option>\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 = "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 = <<<EODformfirspart <HTML> <head><title>Form 5K RUN </title></head> <body style="background-color:gold"> <tbody> <p>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</p> <div class='row'> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class='column grid_5'> <label for='first'>First Name:</label><br /> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname"><span class="warning">$warning_firstname</span><br><br> <label for='first'>Last Name:</label><br /> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span><br /><br /> <label for='email'>E-mail:</label><br /> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span><br /><br /> <label for="org">Organization:</label><br /> <select id="org" name="org" tabindex="5" form="registration"> EODformfirspart; $formlastpart = <<<EODlastpart </SELECT> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label>$warning_attendant<br /><br /> <input type='checkbox' class='radio' name='waiver' id='waiver' value=1 /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> </div> <br></br> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /></form> </div> </tbody> </div> </div> </body> </html> 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 = <<<EODformfirspart1 <HTML> <head><title>Form 5K RUN </title></head> <body style="background-color:gold"> <tbody> <p>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</p> <div class='row'> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class='column grid_5'> <label for='first'>First Name:</label><br /> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname"><span class="warning">$warning_firstname</span><br><br> <label for='first'>Last Name:</label><br /> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span><br /><br /> <label for='email'>E-mail:</label><br /> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span><br /><br /> <label for="org">Organization:</label><br /> <select id="org" name="org" tabindex="5" form="registration"> EODformfirspart1; $formlastpart1 = <<<EODlastpart1 </select> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label><br />$warning_attendant<br /> <input type='checkbox' class='radio' name='waiver' id='waiver' value=1 /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> </div> <br></br> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /> </div> </form> </tbody> </table> </div> </div> </font> </body> </html> EODlastpart1; echo $formfirstpart1; echo listform(); echo $formlastpart1; } IF ($warning_counter == 0){ submit_form(); header('Location: submitted.php'); } } ?>
это для submit.php (следующая страница)
<html> <head><title>Your form has been submitted</title></head> <body> <h1>See you at the 5K Run/walk for Memo.</h1> <p class="content">Your form has been submitted.</p> <p class="content">Click <a href="index.php">here</a> to go back to the main page.</p> </body> </html>
Существует два способа использования формы для отправки данных в базу данных. Первый метод – позволить людям заполнить форму и отправить данные на следующую страницу. Вы можете добавить Java-скрипт, чтобы проверить, соответствуют ли заполненные данные вашему требованию, и для немедленного ответа. Например, все поля заполнены. Следующая страница обрабатывает данные и отправляет данные на сервер MySQL. Способы формы, которые вы можете использовать, – POST / GET. Второй метод состоит в том, чтобы отобразить форму на одной странице и выполнить просчет данных на одной странице (PHP_SELF или путем ссылки на ту же страницу в вашем виде действия). Второй метод требует, чтобы код был очень структурирован. Если вам нужно проверить, были ли данные отправлены. Далее вам нужно подтвердить, что это действительно. Если форма была отправлена, и ввод действителен, данные передаются в базу данных, а посетителю отображается текст «Спасибо за отправку формы. Мы свяжемся с вами как можно скорее». Если форма была отправлена, а данные недействительны, посетитель должен оставаться на одной странице и получать сообщения об ошибках типа «Следующие поля должны быть заполнены: ….», и форма должна отображаться. Если форма не была отправлена (при первом посещении), посетитель должен получить форму.
Самый простой способ настройки – это первый метод, второй – самый приятный, я думаю, но я предлагаю вам начать с первого метода. Как только первый метод работает, вы можете добавить такие вещи, как Javascript, и / или изменить его на метод два.
Попробуй это:
<?php // Event name $event = "2013 VIA-1 5K Run Fundraiser"; // Orgs See table organisations // $orgs = array('', 'Northeastern Illinois','Illinois Institute of Technology', 'Loyola', 'Oberlin', 'Northwestern', 'Purdue', 'IVSU', 'UW-Madison', 'UIllinois','Iowa State University', 'Michigan-Ann Arbor','Marquette University', 'Michigan State', 'UIC', 'Notre Dame', 'VSAM', 'Ohio State', 'UCincinnati', 'Northern Illinois', 'Indiana-Bloomington', 'University of Iowa', 'St. Cloud'); // asort($orgs); // Registration fees for attendees and non-attendees $fee_attendee = 10; $fee_nonAttendee = 15; $paypal_email = 'payment@example.com '; // Registration closing date (will go until 11:59 PM Central Standard Time of this day) $close_month = 03; $close_day = 08; $close_year = 2013; // $time = time(); Easier to use the build in now function of MySQL. function clean($in) { $out = trim(strip_tags($in)); $out = addslashes($out); return $out; } function listform(){ $host = "localhost"; $user = "user"; $password = "password"; $database = "database"; // open connection to databse $link = mysqli_connect($host, $user, $password, $database); IF (!$link){ echo ("Unable to connect to database!"); } ELSE { //Get organisations from table organisations $query = "SELECT * FROM organisations ORDER BY name ASC"; $result = mysqli_query($link, $query); while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ echo "<option value=".$row['id_organisations'].">".$row['name']."</option>\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 = <<<EODformfirspart <HTML> <head><title>Form 5K RUN </title></head> <body style="background-color:gold"> <tbody> <p>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</p> <div class='row'> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class='column grid_5'> <label for='first'>First Name:</label><br /> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname"><span class="warning">$warning_firstname</span><br><br> <label for='first'>Last Name:</label><br /> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span><br /><br /> <label for='email'>E-mail:</label><br /> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span><br /><br /> <label for='org'>Organization:</label><br /> <SELECT id="org" name="org"> EODformfirspart; $formlastpart = <<<EODlastpart </SELECT> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label>$warning_attendant<br /><br /> <input type='checkbox' class='radio' name='waiver' id='waiver' value=1 /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> </div> <br></br> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /></form> </div> </tbody> </div> </div> </body> </html> 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 = <<<EODformfirspart1 <HTML> <head><title>Form 5K RUN </title></head> <body style="background-color:gold"> <tbody> <p>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</p> <div class='row'> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class='column grid_5'> <label for='first'>First Name:</label><br /> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname"><span class="warning">$warning_firstname</span><br><br> <label for='first'>Last Name:</label><br /> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span><br /><br /> <label for='email'>E-mail:</label><br /> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span><br /><br /> <label for="org">Organization:</label><br /> <select id="org" name="org" tabindex='5' form="registration"> EODformfirspart1; $formlastpart1 = <<<EODlastpart1 </select> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label><br />$warning_attendant<br /> <input type='checkbox' class='radio' name='waiver' id='waiver' value=1 /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> </div> <br></br> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /> </div> </form> </tbody> </table> </div> </div> </font> </body> </html> EODlastpart1; echo $formfirstpart1; echo listform(); echo $formlastpart1; } IF ($warning_counter == 0){ submit_form(); header('Location: submitted.php'); } } ?>
После того, как вы заполните форму, вы будете перенаправлены на эту страницу submitted.php
<html> <head><title>Your form has been submitted</title></head> <body> <h1>See you at the 5K run.</h1> <p class="content">Your form has been submitted. Good luck with your training workouts</p> <p class="content">Click <a href="index.php">here</a> to go back to the main page.</p> </body> </html>
Структура таблицы:
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
Важно отметить, что это только начало. Я не проверял его, так что имейте это в виду. Я не понял какую-то часть вашего кода, поэтому мне пришлось делать некоторые предположения.
EDIT: удаление старой базы данных и импорт структуры и данных:
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');
Измените UID на ID в PHP-коде, если вы изменили его раньше. Вышеупомянутый запрос удалит вашу таблицу (basicinfo), а затем воссоздает две новые таблицы (basicinfo и организации). Это как вы примените его к своей собственной базе данных. Скопируйте код SQL выше в phpmyadmin. Войдите в phpmyadmin -> выберите свою базу данных -> SQL -> Удалите текст по умолчанию и скопируйте приведенный выше код в окно -> запустите запрос (начало).
Если вы хотите просто изменить свою базу данных, вы можете использовать этот запрос:
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;
Но вам все равно нужно создавать и заполнять базу данных организации.
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
ЗАКЛЮЧИТЕЛЬНЫЙ РЕДАКТ :
<?php // Event name $event = "2013 VIA-1 5K Run Fundraiser"; // Registration fees for attendees and non-attendees $fee_attendee = 10; $fee_nonAttendee = 15; $paypal_email = 'payment@example.com '; // Registration closing date (will go until 11:59 PM Central Standard Time of this day) $close_month = 03; $close_day = 08; $close_year = 2013; // $time = time(); Easier to use the build in now function of MySQL. function clean($in) { $out = trim(strip_tags($in)); $out = addslashes($out); return $out; } function listform(){ $host = "host"; $user = "username"; $password = "password"; $database = "databasename"; // open connection to databse $link = mysqli_connect($host, $user, $password, $database); IF (!$link){ echo ("Unable to connect to database!"); } ELSE { //Get organisations from table organisations $query = "SELECT * FROM organisations ORDER BY name ASC"; $result = mysqli_query($link, $query); while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){ echo "<option value=".$row['id_organisations'].">".$row['name']."</option>\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 = <<<EODformfirspart <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Form 5K RUN </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="style.css" type="text/css" rel="stylesheet" media="screen"/> </head> <body style="background-color:gold"> <div>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</div> <div class="row"> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class="column grid_5"> <label for='first'>First Name:</label></br> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname" /><span class="warning">$warning_firstname</span></br></br> <label for='first'>Last Name:</label></br> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span></br></br> <label for='email'>E-mail:</label></br> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span></br></br> <label for="org">Organization:</label><br /> <select id="org" name="org" tabindex="5"> EODformfirspart; $formlastpart = <<<EODlastpart </select> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label><br />$warning_attendant<br /> <input type='checkbox' class="radio" name="waiver" id="waiver" value="1" /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /> </form> </div> </body> </html> 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 = <<<EODformfirspart1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>Form 5K RUN </title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <link href="style.css" type="text/css" rel="stylesheet" media="screen"/> </head> <body style="background-color:gold"> <div>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</div> <div class="row"> <form action="{$_SERVER['PHP_SELF']}" method="POST" name="registration"> <div class="column grid_5"> <label for='first'>First Name:</label></br> <input type="text" name="firstname" id="first" maxlength="25" tabindex='1' VALUE="$firstname" /><span class="warning">$warning_firstname</span></br></br> <label for='first'>Last Name:</label></br> <input type="text" name="lastname" id='lastname' maxlength="25" tabindex='1' VALUE="$lastname" /><span class="warning">$warning_lastname</span></br></br> <label for='email'>E-mail:</label></br> <input type="text" name="email" id='email' maxlength="100" tabindex='3' VALUE="$email" /><span class="warning">$warning_email</span></br></br> <label for="org">Organization:</label><br /> <select id="org" name="org" tabindex="5"> EODformfirspart1; $formlastpart1 = <<<EODlastpart1 </select> <span class="warning">$warning_org</span><br /><br /> <label for='attendant'>Are you attending VIA-1?</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-yes' value='1' /> <label for='attendant-yes'>Yes</label><br /> <input type='radio' class='radio' name='attendant' id='attendant-no' value='0' /> <label for='attendant-no'>No </label><br />$warning_attendant<br /> <input type='checkbox' class="radio" name="waiver" id="waiver" value="1" /> <label for='waiver'>I understand and agree to the terms of <a href='waiver.php' target="_blank">the waiver</a>.$warning_waiver</label> </div> <div class='column grid_10 right'> <input type="submit" class='button' name="submit" value="submit" tabindex='7' /> </form> </div> </body> </html> EODlastpart1; echo $formfirstpart1; echo listform(); echo $formlastpart1; } IF ($warning_counter == 0){ submit_form(); header('Location: submitted.php'); } } ?>
Во-первых, хотя я вообще ненавижу эти предложения, рассмотрели ли вы использование документа google с формой переднего конца? Это супер простой способ для не-разработчиков получать данные от людей и получать их в электронной таблице.
Если я утверждаю, что вы используете первичный ключ с автоматическим инкрементом, я могу предложить изменить запрос:
if(mysql_query("INSERT INTO basicInfo VALUES(null, '{$_POST['first]}', '{$_POST['last']}', '{$_POST['email']}', '{$_POST['attendant']}', '$org', $time, 0, '', 1)")) {
Я изменил ваш '' на нуль, так как вы хотите, чтобы БД вставляла то, что он там хочет. Я также изменил способ включения ассоциативных массивов в строку таким образом, чтобы сделать PHP более счастливым.
Для очистки массива $ _POST, что-то вроде
$expected = array('first', 'last', 'expected', 'attendant'); foreach($expected as $k) { $p[$k] = clean($_POST[$k]); } //then changing the query to use $p rather than $_POST, clearly.
в прошлом, как и другие, я настоятельно рекомендую вам использовать mysql_real_escape_string()
а не какую-то комбинацию addslashes ().
Публикация результатов SHOW CREATE TABLE basicInfo;
или любые ошибки помогут с проблемами MySQL.