获取 ComboBox 变量以存储在 MySQL 中

Posted

技术标签:

【中文标题】获取 ComboBox 变量以存储在 MySQL 中【英文标题】:Getting ComboBox variable to store in MySQL 【发布时间】:2011-09-26 08:55:33 【问题描述】:

我有一个 html 页面,它从“hs_hr_employee”表中获取数据,并将信息放在网页上的表中。然后我有另一个表'rights',它从'hs_hr_employee'表的4列中获取信息并将它们存储在列中。除了这 4 个之外,“rights”表还有一个额外的列“Permissions”。

现在,我有一个包含 4 个选项的组合框。当我单击“保存”按钮时,我想将选择的值存储在组合框中,并将其保存在与用户相关的“权限”表中。

(每个用户旁边都有一个组合框)。

更新代码:

       <?php

 $connection = mysql_connect('localhost','admin','root');
if( isset($_POST['submit']) )

    if( isset( $_POST['cb_permissions'] ) && is_array( $_POST['cb_permissions'] ))
    
        foreach( $_POST['cb_permissions']  as $emp_number => $permission)
        
            $sql = "UPDATE `your_permission_table` SET permission='".mysql_real_escape_string($permission)."' WHERE emp_number='".mysql_real_escape_string($emp_number)."'";
            echo __LINE__.": sql: $sql\n";
            mysql_query( $sql );
        
    

?>
<p style="text-align: center;">
    <span style="font-size:36px;"><strong><span style="font-family: trebuchet ms,helvetica,sans-serif;"><span style="color: rgb(0, 128, 128);">File Database - Administration Panel</span></span></strong></span></p>
<p style="text-align: center;">
    &nbsp;</p>

<head>
<style type="text/css">
table, td, th

border:1px solid #666;
font-style:Calibri;

th

background-color:#666;
color:white;
font-style:Calibri;

</style>
</head>

    <form method="post" action="admin.php">

    <?php 


        if (!$connection)
          
          die('Could not connect: ' . mysql_error());
          

        mysql_select_db('users', $connection);

        $result = mysql_query("SELECT emp_number, employee_id, emp_lastname, emp_firstname  FROM hs_hr_employee");

        echo "<center>";

        echo "<table >
        <tr>
        <th>Employee Number</th>
        <th>Employee ID</th>
        <th>Surname</th>
        <th>Name</th>
        <th>Permissions</th>
        </tr>";

        while($row = mysql_fetch_array($result))
          
          echo "<tr>";
          echo "<td>" . $row['emp_number'] . "</td>";
          echo "<td>" . $row['employee_id'] . "</td>";
          echo "<td>" . $row['emp_lastname'] . "</td>";
          echo "<td>" . $row['emp_firstname'] . "</td>";
          echo "<td> <select name='cb_permissions['".$row['emp_number']."'><option value='all'>All</option> <option value='remote'>Remote Gaming</option> <option value='landbased'>Landbased Gaming</option> <option value='general'>General Gaming</option> </select> </td>"; 
          echo "</tr>" ;

          

        echo "</table>";

        echo "</center>";

        echo mysql_query('INSERT into rights(Emp_num, ID, Name, Surname) SELECT emp_number, employee_id, emp_firstname, emp_lastname FROM hs_hr_employee');

        $_POST['cb_permissions'];

        mysql_close($connection);

    ?>

<p style="text-align: center;">
    &nbsp;</p>
<p style="text-align: center;">
    &nbsp;</p>

<p style="text-align: right;">
    <input name="Save_Btn" type="button" value="Save" />


    </p>

</form>

对我如何做有帮助吗?

截图以了解我在做什么的基本概念:

【问题讨论】:

【参考方案1】:

首先,您应该将连接代码移到文档的最顶部:

$connection = mysql_connect('localhost','admin','root'); 
if (!$connection)

    die('Could not connect: ' . mysql_error());


mysql_select_db('users', $connection);

接下来,您必须将表格包装在标签内:

<form method="post" action="target_url.php>
    <table>
    ...
    </table>
    <input type="submit" name="submit" value="Save"/>
</form>

之后,您将在表单的某处存储employee_idemp_number(取决于您将用于设置权限的表键):

while($row = mysql_fetch_array($result))

?>
<tr>
    <td><?php echo $row['emp_number']; ?></td>
    <td><?php echo $row['employee_id']; ?></td>
    <td><?php echo $row['emp_lastname']; ?></td>
    <td><?php echo $row['emp_firstname']; ?></td>
    <td><select name="cb_permissions['<?php echo $row['emp_number']; ?>']">
        <option value='all'>All</option>
        <option value='remote'>Remote Gaming</option>
        <option value='landbased'>Landbased Gaming</option>
        <option value='general'>General Gaming</option>
    </select></td>
</tr>
<?php

然后,在您的target_url.php 上,您必须执行以下操作:

如果target_url.php 与您的表单相同,则下面的代码应放在文档的最顶部。

<?php
if( isset($_POST['submit']) )

    if( isset( $_POST['cb_permissions'] ) && is_array( $_POST['cb_permissions'] ))
    
        foreach( $_POST['cb_permissions']  as $emp_number => $permission)
        
            $sql = "UPDATE `your_permission_table` SET permission='".mysql_real_escape_string($permission)."' WHERE emp_number='".mysql_real_escape_string($emp_number)."'";
            echo __LINE__.": sql: $sql\n";
            mysql_query( $sql );
        
    

?>

就是这样。

【讨论】:

我在第 68 行收到此错误,即:echo "&lt;td&gt; &lt;select name='cb_permissions['&lt;?php echo $row['emp_number']; ?&gt;']'&gt;&lt;option value='all'&gt;All&lt;/option&gt; &lt;option value='remote'&gt;Remote Gaming&lt;/option&gt; &lt;option value='landbased'&gt;Landbased Gaming&lt;/option&gt; &lt;option value='general'&gt;General Gaming&lt;/option&gt; &lt;/select&gt; &lt;/td&gt;"; 错误:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\admin.php on line 68 应该是:" "; 谢谢,我现在没有收到任何错误,但屏幕上不会显示任何内容,即表格未显示。知道为什么会这样吗?我更新了主要问题中的代码。 在您的表单上使用错过的报价:
跨度>
【参考方案2】:

我建议:

    使用 require_once( "db_connect.php" ) 使用 smarty 和 html_options 显示此下拉菜单。

1 次你会学到这个,接下来 - 使用。代码将开始整理... 也许对初学者来说很复杂。但这是正确的方式。

【讨论】:

以上是关于获取 ComboBox 变量以存储在 MySQL 中的主要内容,如果未能解决你的问题,请参考以下文章

如何释放直接作为数组获取并存储在变量中的 mysql 结果?

MFC 获取Combo Box控件 当前选定项的序号和文本内容

在 ColdFusion 中如何使用 in 变量获取 Oracle 存储过程以返回值?

如何将绑定连接到(Winform)ComboBox 控件以从绑定源获取/设置控件中的选择?

如何使用存储在变量中的值从 python mysql 数据库中获取特定行?

C# datagridview中添加了一列ComboBox列,这个ComboBox列下拉怎么获取到txt文档里面的数据?