我正在尝试创建一个表单,允许您使用复选框向数据库上的用户添加管理员控件。目前我能够列出用户。当用户选中复选框并单击提交时,我不知道如何更新数据库。这是我到目前为止所拥有的;
<table class="fileTable" border="1">
<tr>
<th scope="col">Username</th>
<th scope="col">First Name</th>
<th scope="col">Surname</th>
<th scope="col">Email Address</th>
<th scope="col">Enabled</th>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['username']; ?></td>
<td><?php echo $row_Recordset1['fName']; ?></td>
<td><?php echo $row_Recordset1['sName']; ?></td>
<td><?php echo $row_Recordset1['email']; ?></td>
<form action="" method="post">
<td>
<input type="checkbox" name="enable" id="enable"></td>
</td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<input class="submit" type="submit" value="Submit" name="submit">
</form>
</table>
if(isset($_POST['submit'])){
$query = mysql_query("UPDATE student SET enable = 1 WHERE");
}
非常感谢任何帮助 感谢
更新
我想我正在这个地方。到目前为止我有这个,它更新了数据库...
<?php require_once('Connections/localhost.php'); ?>
<? ob_start(); ?>
<?php
if(isset($_POST['submit'])){
foreach($_POST['enable'] as $enable) {
$query = mysql_query('UPDATE student SET enable = 1');
}
}
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}
$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}
$colname_Recordset1 = "-1";
if (isset($_GET['1'])) {
$colname_Recordset1 = $_GET['1'];
}
mysql_select_db($database_localhost, $localhost);
$query_Recordset1 = sprintf("SELECT * FROM student WHERE enable = 0", GetSQLValueString($colname_Recordset1, "int"));
$Recordset1 = mysql_query($query_Recordset1, $localhost) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
$sql="SELECT * FROM student";
?>
<p class="headText">Enable Student</p>
<p>Click the check box for each of the students you would like to enble and click the submit button</p>
<form id="submit" action="" method="post">
<table class="fileTable" border="1">
<tr>
<th scope="col">Username</th>
<th scope="col">First Name</th>
<th scope="col">Surname</th>
<th scope="col">Email Address</th>
<th scope="col">Enabled</th>
</tr>
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['username']; ?></td>
<td><?php echo $row_Recordset1['fName']; ?></td>
<td><?php echo $row_Recordset1['sName']; ?></td>
<td><?php echo $row_Recordset1['email']; ?></td>
<td>
<input type="checkbox" name="enable[]" value="<?php echo $row_Recordset1['id'] ?>"/>
</td>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
<input class="submit" type="submit" value="Submit" name="submit">
</form>
</tr>
</table>
</form>
<?php
mysql_close();
mysql_free_result($Recordset1);
?>
<? ob_flush(); ?>
答案 0 :(得分:1)
需要注意的事项:
<input type="checkbox" name="enable" id="enable">
应该包含应该包含特定行值的值[这里我们假设用户名为唯一字段,但建议使用id而不是用户名]:
<input type="checkbox" name="enable[]" id="enable" value="<?php echo $row_Recordset1['username'];?>">
获取我们使用的值:$_POST['enabled']
所以像使用它可能是这样的:
$query1 = mysql_query("UPDATE student SET enable = 0;");
if( isset( $_POST['enabled'] ){
$strAllUsernameCombined = implode("','", $_POST['enabled']);
$query1 = mysql_query("UPDATE student SET enable = 0 where username in ('{$strAllUsernameCombined}');");
}
以及列出使用的最终建议,而不是在
时进行答案 1 :(得分:1)
<input type="checkbox" name="enable" id="enable" value='something' />
<?php
if(isset($_POST['submit'])){
if(!empty($_POST['enable'])) {
//do your update query
}
}
?>
希望它有所帮助。
答案 2 :(得分:1)
您的$row_Recordset1
数组似乎包含数据库的数据。使用每行的主键(例如用户名或ID)并将其设置为复选框的值。因此,您可以使用像这样的HTML代码
<input type="checkbox" name="enable[]" value="<?php echo $row_Recordset1['id'] ?>">
在PHP中,您将获得$_POST['enable']
的数组,其中包含已选中复选框的所有值。循环遍历数组并使用类似以下代码的内容来更新数据库
<?php
foreach($_POST['enable'] as $enable) {
$query = mysql_query('UPDATE student SET enable = 1 WHERE id = '.$enable);
// ...
}
在循环之前不要忘记清除$_POST
的值以防止不需要的输入!
对您的HTML代码发表一条评论:将<form>
标记放在表格周围。使用表单标记的方式将导致无效的代码。您为每个do循环创建一个表单标记,但最后只用一个</form>
关闭所有标记。