需要帮助使用HTML表单中的值更新数据库行

时间:2011-12-07 12:37:03

标签: php mysql database

我有一个管理员区域,管理员可以在其中设置修复级别,并在用户区域的进度条上显示。除了将mySQL数据库更新为提交的值之外,我已经完成了所有工作。

我的数据库有一个名为'users'的表,字段'UserID','Username','Password','progress','admin'。

以下是我用来试图让魔术发生的代码:

<?php
$query="SELECT * FROM users";
$result=mysql_query($query);
$num=mysql_numrows($result);

?>
<form id="chooseuseredit" method="post" action="<?php echo $PHP_SELF;?>">
<select name="ChooseUser">
<?php
$i=0;
while ($i < $num) {

$f1=mysql_result($result,$i,"UserID");
$f2=mysql_result($result,$i,"Username");
$f3=mysql_result($result,$i,"progress");
$f4=mysql_result($result,$i,"admin");
?>

<option value="<?php echo $f1; ?>"><?php echo $f2; ?></option>

<?php
$i++;
}
?>
</select>
<input type="submit" name="chooseSubmit" id="chooseSubmit" value="Choose User" />
</form>
<?php
if(isset($_POST['chooseSubmit']) )
{
  $varID = $_POST['ChooseUser'];
  $errorMessage = "Jesus Christ Benton, Choose a User!!";

?>
<br>
<p><strong>Editing UserID: <?php echo "$varID"; ?></strong></p>
<p>Progress:<br>
<form name="edituserform" method="post" action="<?php echo $PHP_SELF;?>">
<select name="editinguser">
<option value="0">Phone Not Recieved</option>
<option value="20">Phone Recieved</option>
<option value="40">Parts Recieved</option>
<option value="60">Repair Started</option>
<option value="80">Repair Finished</option>
<option value="100">Posted Back</option>
</select>
<input type="hidden" name="edituserid" id="edituserid" value="<?php echo "$varID"; ?>" />
<input type="submit" name="edituser" id="edituser" value="Edit" />
</form>
    <?php
    if(isset($_POST['edituser'])){

    $add = $_POST['edituser'];
    $varIDe = $_POST['edituserid'];
    $errorMessage = "Jesus Christ Benton, Choose a User!!";
    $query1 = mysql_query("UPDATE users SET progress = $add WHERE UserID = $varIDe");
    mysql_query($query1) or die("Cannot update");

echo $add;
echo $varIDe;

    }
    ?>

<?php
}
?>

我不确定变量是否有效,或者我之前使用过提交按钮的方式是什么?它让我有点难过。

4 个答案:

答案 0 :(得分:2)

您的查询应该是

$query1 = mysql_query("UPDATE users SET progress = '$add' WHERE UserID = $varIDe");

别忘了引号

最好改变你的

mysql_query($query1) or die("Cannot update");

mysql_query($query1) or die("MySQL ERROR: ".mysql_error());

让它显示错误

修改

发现了一些错误

mysql_numrows应为mysql_num_rows

重大错误

$query1 = mysql_query("UPDATE users SET progress = $add WHERE UserID = $varIDe");

正在运行查询,将其更改为

$query1 = "UPDATE users SET progress = '".$add."' WHERE UserID = '".$varIDe."'";

答案 1 :(得分:0)

我认为你得到了错误的变量

if(isset($_POST['edituser'])){
  $add = $_POST['edituser']; // this is a button

应该是:

if(isset($_POST['editinguser'])){
  $add = $_POST['editinguser']; // this is a select list

但请阅读以下关于SQL Injection

的内容

答案 2 :(得分:0)

当出现问题时,对于查询,您最好调试,添加一个:or die ( mysql_error ( ) ) ;,然后显示错误消息。

答案 3 :(得分:0)

$query1 = mysql_query("UPDATE `users` SET `progress` = '".$add."' WHERE UserID = '".$varIDe."'");
if(mysql_query($query1))
{
//DO SOME ACTION
}
else
{
die(mysql_error());
}