2013-05-02 2 views
3

Я видел несколько сообщений в SO, связанных с тем же сценарием, что и у меня, но не нашел правильного разрешения. Так что отправляю вопрос с моей проблемой.Проблемы с вставкой данных с формой HTML и PHP на mySQL

У меня есть HTML-форм

<form method="post" id="myForm"> 
     <label for="e_name">Name</label> 
     <input name="e_name" id="emp_name" value="" type="text" data-theme="a"> 
     <label for="date">Date</label> 
     <input name="date" id="emp_dob" value="" data-theme="a"> 
     <label for="gender">Gender</label> 
     <select name="gender" id="emp_gender" data-role="slider" data-theme="a" data-inline="true"> 
     <option value="male">Male</option> 
     <option value="female">Female</option>   
     </select> 
     <label for="address">Address</label> 
     <textarea name="address" id="emp_address" value="" type="text" data-theme="a"></textarea><br><br>  
     <input type="button" id="insert" value="Submit">  
    </form> 

    <div id="someElement"></div> 

И я следующее, чтобы выполнить мое представление элементов формы в PHP PAGE-

$(document).ready(function(){ 
    $("#insert").click(function(e) { 
    e.preventDefault(); 
    alert("am in the Insert function now"); 
     $.ajax({ 
     cache: false, 
     type: 'POST', 
     url: 'insert.php', 
     data: $("#myForm").serialize(), 
     success: function(d) { 
      $("#someElement").html(d); 
     } 
     }); 
    }); 
}); 

Вот мой PHP -

<?php 
    $con=mysqli_connect("localhost","root","root","employee"); 
    // Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
     $name =" "; 
     $dob =" "; 
     $gender =" "; 
     $address =" "; 

     if(isset($_POST['emp_name'])){ $name = $_POST['emp_name']; } 
     if(isset($_POST['emp_dob'])){ $dob = $_POST['emp_dob']; } 
     if(isset($_POST['emp_gender'])){ $gender = $_POST['emp_gender']; } 
     if(isset($_POST['emp_address'])){ $address = $_POST['emp_address']; } 

     echo $name; 
     echo $dob; 
     echo $gender; 


echo $address; 


$sql="INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')"; 

if (!mysqli_query($con,$sql)) 
    { 
    die('Error: ' . mysqli_error($con)); 
    } 

echo "1 record added"; 

mysqli_close($con); 
?> 

Теперь, когда я ввожу некоторые значения в свою форму и нажимаю «Отправить», действие выполняется хорошо, а новая строка в serts в базе данных. Но все строки пустые. Они просто пустые, даже «NULL». Я пытался отобразить значения моего поля в PHP, но там нет выхода. Моя «1 запись добавлена» хорошо подходит, но здесь нет значений формы.

Просьба помочь мне разобраться в этом.

Заранее спасибо.

+0

'var_dump ($ _ POST);' в вашем php-файле и проверить, действительно ли вы получаете данные, когда ваша форма отправляется? Также кажется, что вы передаете сериализованные данные из ajax-вызова. – Rikesh

+0

Этот код уязвим для взлома через SQL-инъекцию. Используйте подготовленные заявления и дезактивируйте все данные от пользователя. – nk9

ответ

1

$_POST[] ссылки на атрибут namehtml-tag, а не id.

Например, $_POST['emp_name'] должен быть $_POST['e_name']

Кроме того, не инкапсулировать переменные одинарные кавычки:

"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('$name', '$gender', '$address')"; 

ли это вместо:

"INSERT INTO emp_details (emp_name, emp_gender, emp_address) VALUES ('" . $name . "', '" . $gender . "', '" . $address . "')"; 

Или использовать bind_param() из mysqli конечно!

+0

Сделано .. Я сделал глупую ошибку ... считался идентификатором, а не именем ... я так тупой, я забыл об этом. Прошло более 3 лет, я работал над этим материалом. Спасибо, что напомнил мне, что мне нужно больше сил. :) :) –

+0

Добро пожаловать. Я выхожу из этого комментария, что вам удалось решить ваш вопрос? – Aquillo

+0

да проблема решена. –

1

Сделать id и name ваших входных элементов же

<form method="post" id="myForm"> 
     <label for="e_name">Name</label> 
     <input name="emp_name" id="emp_name" value="" type="text" data-theme="a"> 
     <label for="date">Date</label> 
     <input name="emp_dob" id="emp_dob" value="" data-theme="a"> 
     <label for="gender">Gender</label> 
     <select name="emp_gender" id="emp_gender" data-role="slider" data-theme="a" data-inline="true"> 
     <option value="male">Male</option> 
     <option value="female">Female</option>   
     </select> 
     <label for="address">Address</label> 
     <textarea name="emp_address" id="emp_address" value="" type="text" data-theme="a"></textarea><br><br>  
     <input type="button" id="insert" value="Submit">  
    </form> 

В противном случае измените $_POST массив keys.Because вы получите ключи от $_POST массива будет имя входа elements.But Я рекомендую вам указать имя и имя mak ethe

+0

Chek the edit @ Aquillo –

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