PHP和Checkboxes检查表转到表

时间:2011-05-31 08:58:15

标签: php mysql

我有一张这样的桌子:

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);
$num1 = mysql_num_fields($result);

if($num>0)
{
    echo "<table border=2>";
    for($i=0;$i<$num;$i++)
    {
        $row=mysql_fetch_row($result);
        echo "<tr>";
        echo"<td><input type='Checkbox' name='p$i'  value='yes' unchecked /></td>";
        echo"<td>$row[0]</td>";

        echo"</tr>";
    }

我想在Mysql的另一个表中插入已检查的那些如何插入每个复选框的文本?

4 个答案:

答案 0 :(得分:2)

首先,您必须更改此HTML,以便复选框是一个数组

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);
$num1 = mysql_num_fields($result);

if($num>0)
{
    echo "<table border=2>";
    for($i=0;$i<$num;$i++)
    {
        $row=mysql_fetch_row($result);
        echo "<tr>";
        echo"<td><input type='Checkbox' name='pi[$i]' /></td>";
        echo"<td>$row[0]</td>";

        echo"</tr>";
    }

然后在行动页面

    foreach($_POST['pi'] as $key=>$value)
    {
    if($value=="on")
    {
    //DO THE INSERT CODE HERE
// the $key is the $i counter in the HTML
// the $value is whether the user selected it no in this case its just on/off
    }
    }

答案 1 :(得分:0)

我建议使用POST / GET数组,如下所示:

<input type='Checkbox' name='p[]'  value='$i' unchecked />

提交表单后,您将在请求参数的p变量(POST / GET)中找到一组值。

从这里可以很容易地从原始表中选择这些ID并将数据插入到新表中。

它看起来像这样:

INSERT INTO `new_table` (firsT_column, second_column, third_column)
SELECT firsT_column, second_column, third_column
FROM `old_table`
WHERE id IN (<IDS>)

当然,<IDS>标记应该替换为之前的p数组的内嵌字符串。

答案 2 :(得分:0)

我认为你的整个方法都是错误的。最好的方法是使用药房主键并将其插入您的其他表。我在其他表格中假设您保存了用户的ID以及与他相关的所有药物。

这是我建议的完整示例:

<强> list_drugs.php

$query = "select * from pharmacy";
$result = mysql_query($query);
$num = mysql_num_rows($result);

if($num>0) {
    echo '<table border="2">';
    while($row=mysql_fetch_array($result) {
        echo '<tr>';
        echo '<td><input type="checkbox" name="drugid_'.$row["PRIMARY_KEY_ID"].'" value="1" unchecked /></td>';
        echo '<td>$row[0]</td>';

        echo'</tr>';
    }
    echo '</table>';
}

<强> do_update.php

<?php
foreach($_POST AS $k=>$x) {
    if(!preg_match("/[^drugid_*]/i", $k)) {
            if($x=="1") {
                $getOnlyTheDrugID=str_replace('drugid_','',$k);
                mysql_query('INSERT INTO otherTable SET columnName='.($drugid_+0).'');
            }
    }
}

答案 3 :(得分:-4)

您需要为所有复选框指定相同的名称。像

这样的东西
<input type="checkbox" name="drugs[]" value="name of drug" />

然后在处理脚本的脚本中

for($i=0;$i<count($_POST['drugs']);$i++) {
    $query = "INSERT INTO table (ID, Drugname) VALUES ('', '$_POST['drugs'][$i]')";
}

您应该知道如何每次发送该查询