使用单选按钮更新数据库的简单 PHP 任务

Posted

技术标签:

【中文标题】使用单选按钮更新数据库的简单 PHP 任务【英文标题】:Simple PHP task of updating database with radio buttons 【发布时间】:2011-08-04 08:01:41 【问题描述】:

这里是前端设计师,不是 php 开发人员,我真的需要帮助。需要制作一个系统,允许客户端登录到他们自己的区域来更新表。该表将有大约 20 条记录,每行将使用单选按钮(4 个选项)进行编辑。只有 2 列,一列用于 ID,一列称为状态(可编辑数据)。

查看者只会看到客户端所做的更改以及根据状态更改该行的背景颜色,这意味着可编辑部分将必须保存 2 条数据(更改颜色的整数值和名称状态,例如用于更改颜色的单选按钮的值,以及用于将文本回显到单元格中的按钮标签)。稍后会处理登录系统...

数据库设置:

Database: test
Table: fire_alert
Structure:
   id (INT, PRIMARY); color(INT); warning(VACHAR);

connect.php:

<?php
// Database Variables (edit with your own server information)
$server = 'localhost';
$user = 'root';
$pass = 'root';
$db = 'test';

// Connect to Database
$connection = mysql_connect($server, $user, $pass) 
    or die("Could not connect to server ... \n" . mysql_error());
mysql_select_db($db) 
    or die("Could not connect to database ... \n" . mysql_error());
?>

view.php:

<div id="container">
<?php
// connect to the database
include('connect.php');
include("header.php");

// get results from database
$result = mysql_query("SELECT * FROM fire_alert") 
    or die(mysql_error());  
echo "Current date - " . date("Y/m/d") . "<br /><br />";

// display data in table
echo "<table>";
echo "<tr> <th>Area</th> <th>Status</th></tr>";

// loop through results of database query, displaying them in the table
while($row = mysql_fetch_array($result)) 
    // echo out the contents of each row into a table
    echo "<tr>";
    echo '<td>' . $row['id'] . '</td>';
    echo '<td>' . $row['warning'] . '</td>';
    echo "</tr>"; 
 

// close table>
echo "</table>";

echo '<td><a href="edit.php' . $row['id'] . '">Change Area Status</a></td>';
?>
</div>
<body>
</body>
</html>

edit.php(仅限客户端访问)动态数据尚未更改,目前已硬编码 HTML:

<?php include("header.php"); ?>
<?php include("connect.php"); ?>

<div id="container" class="edit">
<div id="radio1">

<?
$result = mysql_query("SELECT * FROM fire_alert") 
    or die(mysql_error());  
echo "Current date - " . date("Y/m/d") . "<br /><br />";
?>

<table class="edit">
    <tr><th>Area</th><th>Status</th></tr>
    <tr>
        <td>1</td>
        <td>
            <form method="post" action="edit.php">
                <input type="radio" id="radio1" name="radio" value="1" /><label for="radio1">Safe</label>
                <input type="radio" id="radio2" name="radio" value="2" /><label for="radio2">Caution L1</label>
                <input type="radio" id="radio3" name="radio" value="3" /><label for="radio3">Caution L2</label>
                <input type="radio" id="radio4" name="radio" value="4" /><label for="radio4">Closed</label>
            </form>
        </td>
    </tr>
</table>

</div>
<?php echo '<td><a href="view.php' . $row['id'] . '">Update</a></td>'; ?>
</div>

【问题讨论】:

【参考方案1】:

运行此更新的最简单方法(或者我使用的方法)是利用 javascript。让每个单选块部分都以自己的形式自动提交 onChange,并包含一个隐藏变量来指示页面提交。然后只需编写一个函数来更新数据库,根据输入的用户 ID(或者你正在验证的)和他们的选择......

类似:

if($_POST["submit"] == 1)

  $id = $_POST["id"];
  $radio = $_POST["radio"];
  $query = "UPDATE fire_alert SET warning = '$radio' WHERE id = '$id'";
  $result = mysql_query($query) or die(mysql_error());

您对 view.php 链接的格式化方式有疑问,该行应如下所示:

'更新'; ?>'

虽然上述内容不会像您预期的那样工作,因为它没有提交表单,所以单选按钮值不会被传递......相反,您应该这样做:

<form method="post" action="edit.php">
    <input type="radio" id="radio1" name="radio" value="1" onChange="this.submit()"/><label for="radio1">Safe</label>
    <input type="radio" id="radio2" name="radio" value="2" onChange="this.submit()"/><label for="radio2">Caution L1</label>
    <input type="radio" id="radio3" name="radio" value="3" onChange="this.submit()" /><label for="radio3">Caution L2</label>
    <input type="radio" id="radio4" name="radio" value="4" onChange="this.submit()"/><label for="radio4">Closed</label>
    <input type="hidden" name="id" value="<?=$row["id"]?>" />
</form>

您还需要编辑您的 php 以反映这种差异

【讨论】:

以上是关于使用单选按钮更新数据库的简单 PHP 任务的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 单击单选按钮时如何将数据更新到 MySQL

在会话中存储单选按钮值 - PHP

Django:在视图中使用选定的单选按钮的值来更新数据库中的值

通过 AJAX 更新单选按钮更改的表单值

编辑时如何回显单选按钮的值[关闭]

我想在我的更新页面上显示选定的单选按钮