2015-11-21 3 views
0

Кажется, что в моем коде отсутствует что-то, что ограничивает почтовый метод и данные, не отправленные в мою базу данных. Тест соединения с базой данных успешно, но когда я отправляю форму с введенными данными ... перенаправляется на new_employee.php, что означает, что $ _POST ['submit'] является ложным, но задано имя формы = 'submit'.php post method сбой без ошибок

Вот код PHP

<?php 
if (isset($_POST['submit'])) { 
    $first_name = $_POST["first_name"]; 
    $last_name = $_POST["last_name"]; 
    $dept_id = $_POST["dept_id"]; 
    $position = $_POST["position"]; 
    $hire_date = $_POST["hire_date"]; 
    $salary = $_POST["salary"]; 
    $bonus = $_POST["bonus"]; 
    $end_date = $_POST["end_date"]; 

    $sql = "insert into staff (first_name, last_name, dept_id, position, hire_date, salary, bonus, end_date)"; 
    $sql .= " values ('{$first_name}', '{$last_name}', {$dept_id}, '{$position}', {$hire_date}, {$salary}, {$bonus}, {$end_date})"; 
    $result = mysqli_query($connection, $sql); 

    if ($result) { 
     redirect_to("employee.php"); 
    } else { 
     redirect_to("new_employee.php"); 
    } 
}?> 

А вот HTML форма

<form action="new_employee.php" method="POST" role="form" class="form-horizontal"> 
       <legend>Add new employee</legend> 

       <div class="col-md-10"> 
        First Name: <input type="text" name="first_name" class="form-control" placeholder="First name"> 
        Last Name: <input type="text" name="last_name" class="form-control" placeholder="Last name"> 
        Department: <input type="text" name="dept_id" class="form-control" placeholder="Department"> 
        Position: <input type="text" name="position" class="form-control" placeholder="Position"> 
        Hire Date: <input type="text" name="hire_date" class="form-control" placeholder="Hire date"> 
        Salary: <input type="text" name="salary" class="form-control" placeholder="Salary"> 
        Bonus: <input type="text" name="bonus" class="form-control" placeholder="Bonus"> 
        End Date: <input type="text" name="end_date" class="form-control" placeholder="Password"> 

        <br/> 
        <div class="row text-right"> 
         <input type="submit" name="submit" value="Save" class="btn btn-default" /> 
         &nbsp 
         <button type="button" class="btn btn-default" aria-label="Left Align"><a href="employee.php">Cancel</a></button> 
        </div> 
       </div> 
      </form> 

Любая помощь я могу получить здесь будут оценены.

+0

Открытие

тег отсутствует, пожалуйста, включите это. – Maltronic

+0

В соответствии с вашим кодом вы перенаправлены на 'new_employee.php', когда ваш запрос завершился неудачно, а не когда' $ _POST ['submit'] 'не установлен. Попробуйте повторить свой '$ sql' и попробовать его непосредственно в MySQL. Я предполагаю, что '$ hire_date',' $ pay', '$ bonus' или' $ end_date' являются строками и должны быть указаны. Если у любого из них есть такие символы, как '$', '-','/'и т. Кроме того, вы можете взглянуть на [Как предотвратить SQL-инъекцию в php] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – Sean

+0

@GoatMaster открывающий тег формы на самом деле не возится, я скорректировал формат. $ hire_date, $ зарплата, $ бонус и $ end_date - все значения NULL и не являются строковыми. Для моего теста только first_name, last_name, dept_id и положение обеспечивают с другими полями остается пустым После того, как я получу свой код права я буду работать на предотвращение SQL Injection – Mena

ответ

0

Ваш код неправильный, на мой взгляд. Попробуйте эту переменную SQL, а не ваше:

$sql = "insert into staff (first_name, last_name, dept_id, position, hire_date, salary, bonus, end_date)"; 
$sql .= " values ('$first_name', '$last_name', $dept_id, '$position', $hire_date, $salary, $bonus, $end_date)"; 
+0

Нет ничего плохого в OP, используя фигурные скобки '{}' в двойном кавычках запроса. Возможно, вам будет полезно прочитать в руководстве по php о [Сложный (фигурный) синтаксис - http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex ] (http://php.net/manual/en/language.types.string.php#language.types.string.parsing.complex) – Sean

+0

@MahyarJafari я переключил ваш код на мой, и результат все тот же. предложение очень ценится – Mena

Смежные вопросы