如何从具有不同表单的两个不同表中将数据输入到数据库中

时间:2014-03-08 16:00:57

标签: php mysql

我今年正在做我的最后一个项目。我需要将数据与月和日一起输入数据库。但是,从另一个数据库中调用月和日。一些代码不起作用。顺便说一下我使用php和mysql。

共有3页。

这是第一页:pilih.php

<html>

<form action="pilih_process.php" method="POST">

<table>

<tr>
    <td>Month:</td>
    <td><select name="month"/>
            <option value="January">January</option>
            <option value="February">February</option>
            <option value="March">March</option>
        </select>
    </td>
</tr>

<tr>
    <td>Day:</td>
    <td><select name="day"/>
            <option>1</option>
            <option>2</option>
            <option>3</option>
        </select>
    </td>
</tr>

<tr>
    <td>Group:</td>
    <td><select name="group"/>
            <option>1</option>
            <option>2</option>
        </select>
    </td>
</tr>

<tr>
    <td><input type="submit" name="submit" value="submit"/></td>
</tr>


</table>

</form>

</html>

这是第二页:pilih_process.php

<html>

<?php

include ('connect_database.php')

$query1 = mysql_query("SELECT Student_ID, Student_Name FROM student_details WHERE    Group_ID=$group");

$month = $_POST['month'];
$day = $_POST['day'];
$group = $_POST['group'];    

echo "<table>";
echo "<tr>";
echo "<td>Month: $month</td>";
echo "</tr>";

echo "<tr>";
echo "<td>Day: $day</td>";
echo "</tr>";

echo "<tr>";
echo "<td>Group: $group</td>";
echo "</tr>";
echo "</table>";

echo "<form action='pilih_process2.php' method='POST'>";

echo "<table>";
echo "<tr>";
echo "<th>ID</th>";
echo "<th>Name</th>";
echo "</tr>";


while ($row = mysql_fetch_array($query1) )
{
echo "<tr>";
echo '<td>' . $row['Student_ID'] . '</td>';
echo '<td>' . $row['Student_Name']. '</td>';

echo "<td><input type='checkbox' name='status[]' value='Expert'/></td>";
echo "<td><input type='checkbox' name='status[]' value='Intermediate'/></td>";
echo "<td><input type='checkbox' name='status[]' value='Amature'/></td>";
echo "<td><input type='checkbox' name='status[]' value='Noob'/></td>";

echo "</tr>";
}

echo "<tr>";

echo "<td><input type='submit' name='submit' value='Submit'/></td>";

echo "</tr>";

echo "</table>";

echo "</form>";

?>

</html>

这是第三页:pilih_process2.php

<html>

<?php

include ('connect_database.php');

$month = $_SESSION['month'];                //From First page: pilih.php
$day = $_SESSION["day"];                    //From First page: pilih.php
$student_id = $_SESSION["Student_ID"];      //From Second page: pilih_process.php
$student_name = $_SESSION["Student_Name"];  //From Second page: pilih_process.php
$group = $_POST['group'];                   //From First page: pilih.php
$status = $_POST['status'];                 //From Second page: pilih_process.php

mysql_query("INSERT into mencuba(Month_ID, Day_ID, Student_ID, Student_Name, Group_ID, Status) VALUES('$month', '$day', '$student_id', '$student_name', '$group', '$status')");


/*
$status_test = $_GET['status'];   //I DONT KNOW WHETHER THIS ARRAY METHOD IS CORRECT
for($i=0; $i < count($checked); $i++){
echo "Selected " . $checked[$i] . "<br/>";
}
*/

?>

这是怎么回事:

  1. 从第一页开始,用户必须选择哪个月,日和组并提交。

  2. 在第二页上,它显示基于哪个组的学生ID,学生姓名,组和状态。

  3. 对于状态,用户必须选择一个并提交。

  4. 在第三页上。数据Month_ID,Day_ID,Student_ID,Student_Name,Group_ID和Status将被插入数据库中。

  5. 问题:

    1. 插入数据时,只将Month_ID,Day_ID,Group_ID和Status插入数据库。我无法调用变量Student_ID和变量Student_Name。

    2. 它只插入一个数据。如果要输入100个数据显然我必须使用我不确定如何使用的数组。

    3. 我们教授简单的PHP和MySql

2 个答案:

答案 0 :(得分:1)

在启动查询之前,先在查询中放置$group。您必须先启动它,然后将其置于查询状态。

喜欢这样:

$month = $_POST['month'];
$day = $_POST['day'];
$group = $_POST['group'];

$query1 = mysql_query("SELECT 
          Student_ID, Student_Name 
          FROM student_details 
          WHERE Group_ID=$group");

关于status

您必须使用select而不是checkbox,如果您想为表格中的每个字段提供多个选择,请使用另一个name属性。

答案 1 :(得分:1)

正如其他答案所述,这里有一些事情发生。

  1. 您在设置之前尝试使用变量$ group
  2. 您在查询中使用原始POST数据 - 这是非常糟糕的做法 - 即使这是一个项目,您可以更好地做得更好。至少在mysql_real_escape_string中换行,所以看起来你试过了。
  3. $group = mysql_real_escape_string($_POST['group']);

    至于主要问题:

    您需要将第一个表单参数传递给第二个表单。把它们放在桌子上就不会保存它们。将它们作为隐藏的表单值传递

    echo "<input type="hidden" name="group" value="'.$group.'" />";

    除此之外,如果您希望查询有多个结果(即:来自一个组的多个人),那么您需要再次更改逻辑,因为每个人都将覆盖之前的表单值。