2015-08-12 8 views
-1

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

Проблема заключается в том, что форма отправляет пустые данные в таблицу. Я вижу, что на каждом представлении создается новая строка, но данные пустые.

Вот код:

Часть формы в index.html

<form action="input.php" method="post"> 
<p> 
    <input name="prefix" type="radio" id="male"/> 
    <label for="male">นาย/เด็กชาย</label> 
</p> 
<p> 
    <input name="prefix" type="radio" id="female"/> 
    <label for="female">นางสาว/เด็กหญิง</label> 
</p> 
<div class="row"> 
    <div class="col s12"> 
     <div class="input-field col s12 m6"> 
      <input id="firstname" type="text" class="validate"/> 
      <label for="firstname">ชื่อ</label> 
     </div> 
     <div class="input-field col s12 m6"> 
      <input id="lastname" type="text" class="validate"/> 
      <label for="lastname">นามสกุล</label> 
     </div> 
      . 
      . 
      . 
      . 
<button class="btn btn-large waves-effect waves-light red accent-4" type="submit" name="submit">ส่ง</button> 
</form> 

input.php

<?php 
mysql_connect("localhost", "acsp", "passwordhidden"); 
mysql_select_db("logicgames"); 
$order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')"; 
$result = mysql_query($order); 
if ($result) { 
    echo "<p>Success</p>"; 
} else { 
    echo "<p>Failed</p>"; 
} 
?> 

ответ

1

Лучший способ сделать это ..

<?php 

if(isset($_POST['submit'])) 
{ 
    $prefix  = $_POST['prefix']; 
    $firstname = $_POST['firstname']; 
    $lastname = $_POST['lastname']; 
    $phone  = $_POST['phone']; 
    $school  = $_POST['school']; 
    $teammate1 = $_POST['teammate1']; 
    $teammate2 = $_POST['teammate2']; 
    $games  = $_POST['games']; 
    $division = $_POST['division']; 

    mysql_connect("localhost", "acsp", "passwordhidden"); 
    mysql_select_db("logicgames"); 
    $order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')"; 
    $result = mysql_query($order); 
    if ($result) { 
     echo "<p>Success</p>"; 
    } else { 
     echo "<p>Failed</p>"; 
    } 
} 
else 
{ 
    echo "<p>Failed</p>"; 
} 
?> 
1

Сначала дайте каждое ваше поле ввода некоторых имя в поле базы данных.

Вы должны получить значение POST в переменных. Если вы не хотите делать это каждый раз. Вы можете использовать цикл foreach.

<?php 
mysql_connect("localhost", "acsp", "passwordhidden"); 
mysql_select_db("logicgames"); 
foreach($_POST as $key => $val) 
{ 
    ${$key} = $val; 
} 
$order = "INSERT INTO data_logicgames (prefix, firstname, lastname, phone, school, teammate1, teammate2, games, division) VALUES ('$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division')"; 
$result = mysql_query($order); 
if ($result) { 
    echo "<p>Success</p>"; 
} else { 
    echo "<p>Failed</p>"; 
} 
?> 
0

в вашем input.php вы не определяете

'$prefix', '$firstname', '$lastname', '$phone', '$school', '$teammate1', '$teammate2', '$games', '$division' 

как этот префикса $ = $ _POST [ 'префикс']; и т. Д.

0

Ваша форма содержит 2 ввода без метки имени! Вы должны указать тег имени для каждого поля, которое вы отправляете на сервер, и сможете получить его с помощью $ _POST ["lastname"]; в php. Где вы заявляете свои ценности? ($ prefix, $ lastaname и т. д.) id используется только при работе с JavaScript.

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