PHP表单更新没有注销

时间:2016-03-30 06:18:19

标签: php mysql session

因为我是PHP的新手,如果我看起来很傻,请原谅我,

我在php中创建了一个表单,而我更新了部分表单,更新在db中反映,而在表单中它仍然显示相同的旧值。我尝试刷新并强制刷新,但没有任何变化。

然而,如果我退出并再次登录,则表单会显示更新的值。

我尝试在die();之后使用mysql_close($link);,但它会注销会话并需要重新登录。

请在登录时我帮助我查看更改。

我的代码如下:

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

            $name_a = $_POST['name'];
            $email_a = $_POST['email'];
            $pass_a = $_POST['password'];

            $sql = "UPDATE admin SET a_name = '$name_a', a_email = '$email_a', password = '$pass_a' where aid='$update_id' ";
            $retval = mysql_query($sql,$link);

            if(! $retval ) {
               die('Could not update data: ' . mysql_error());
            }
            echo "Updated data successfully\n";

            mysql_close($link);

         }else {
            ?>
 <!-- Widget: user widget style 1 -->
          <div class="box box-widget widget-user-2">
            <!-- Add the bg color to the header using any of the bg-* classes -->
            <div class="widget-user-header bg-yellow">
              <div class="widget-user-image">
                 <?php echo '<img src="' . $img . '" class="img-circle" alt="User Image">'; ?>
              </div>
              <!-- /.widget-user-image -->
              <h3 class="widget-user-username"><?php echo "$name"; ?></h3>
              <h5 class="widget-user-desc"><?php echo "$role"; ?></h5>
            </div>
            <div class="box-footer no-padding">
              <form role="form" method = "post" action = "<?php $_PHP_SELF ?>">
              <div class="box-body">
              <div class="form-group">
                  <label for="exampleInputName1">Name</label>
                  <input type="text" class="form-control" id="exampleInputName1" name="name" value="<?php echo "$name"; ?>">
                </div>
                <div class="form-group">
                  <label for="exampleInputEmail1">Email address</label>
                  <input type="email" class="form-control" id="exampleInputEmail1" name="email" value="<?php echo "$email"; ?>">
                </div>
                <div class="form-group">
                  <label for="exampleInputPassword1">Password</label>
                  <input type="password" class="form-control" id="exampleInputPassword1" name="password" value="<?php echo "$password"; ?>">
                </div>


              </div>
              <!-- /.box-body -->

              <div class="box-footer">
                <button type="submit" name="update" id="update"  class="btn btn-primary">Submit</button>
              </div>
            </form>
            </div>
          </div>
          <!-- /.widget-user -->
      <?php
         }
      ?>

3 个答案:

答案 0 :(得分:1)

试试这个:

<?php
$name = '';
$email = '';
$password = '';
$update_id = '';
//$img = '';
//$role = '';
//$link = null;

if(
isset($_POST['update']) &&
isset($_POST['id']) &&
isset($_POST['name']) &&
isset($_POST['email']) &&
isset($_POST['password'])
) {
    $update_id = mysql_real_escape_string($_POST['id']);
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);
    $password = mysql_real_escape_string($_POST['password']);

    $sql = 'UPDATE admin SET a_name = \'' . $name . '\', a_email = \'' . $email . '\', password = \'' . $password . '\' WHERE aid = \'' . $update_id . '\'';
    $result = @mysql_query($sql, $link);

    if(!$result)
        die('Could not update data: ' . mysql_error($link));

    echo 'Updated data successfully', "\n";
}
elseif(isset($_GET['id'][0])) {
    $update_id = mysql_real_escape_string($_GET['id']);
    $sql = 'SELECT a_name,a_email,a_password FROM admin WHERE aid = \'' . $update_id . '\'';

    $result = @mysql_query($sql, $link);
    if($result) {
        $result = mysql_fetch_row($result);
        $name = $result[0];
        $email = $result[1];
        $password = $result[2];
    }
    else {
        echo 'Could not find the id.' . "\n";
        $update_id = '';
    }
}

unset($result);

if(isset($update_id[0])) { 
    mysql_close($link); 
?>
 <!-- Widget: user widget style 1 -->
<div class="box box-widget widget-user-2">
    <!-- Add the bg color to the header using any of the bg-* classes -->
    <div class="widget-user-header bg-yellow">
        <div class="widget-user-image">
            <img src="<?php echo htmlspecialchars($img); ?>" class="img-circle" alt="User Image">
        </div>
        <!-- /.widget-user-image -->
        <h3 class="widget-user-username"><?php echo htmlspecialchars($name); ?></h3>
        <h5 class="widget-user-desc"><?php echo htmlspecialchars($role); ?></h5>
    </div>
    <div class="box-footer no-padding">
        <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
            <input type="hidden" name="id" value="<?php echo htmlspecialchars($update_id); ?>">
            <div class="box-body">
                <div class="form-group">
                    <label for="exampleInputName1">Name</label>
                    <input type="text" class="form-control" id="exampleInputName1" name="name" value="<?php echo htmlspecialchars($name); ?>">
                </div>
                <div class="form-group">
                    <label for="exampleInputEmail1">Email address</label>
                    <input type="email" class="form-control" id="exampleInputEmail1" name="email" value="<?php echo htmlspecialchars($email); ?>">
                </div>
                <div class="form-group">
                    <label for="exampleInputPassword1">Password</label>
                    <input type="password" class="form-control" id="exampleInputPassword1" name="password" value="<?php echo htmlspecialchars($password); ?>">
                </div>
            </div>
            <!-- /.box-body -->

            <div class="box-footer">
                <button type="submit" name="update" id="update" class="btn btn-primary">Submit</button>
            </div>
        </form>
    </div>
</div>
<!-- /.widget-user -->
<?php } 
else {
    $sql = 'SELECT aid,a_name FROM admin';
    $result = @mysql_query($sql, $link);

    if($result) {
        while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
            echo '<a href="?id=' . $row['aid'] . '">' . $row['a_name'] . '</a><br />' . "\n";
        }
    }
    mysql_close($link);
}
?>

答案 1 :(得分:1)

 SOLUTION   
    1) use the updated value like $name_a instead of $name because $name_a contain updated value and $name contain old value 
   2) reload page after update and get new value from database on page load and store that value in $name , $email etc variable (if new data update successfully in database then only you get new value )
   3) if You store your data in session or cookie then update session and cookie value also when you update in database 

答案 2 :(得分:0)

正如@DivyeshSavaliya在评论中提到的,问题是,

我没有使用更新后选择查询。一旦完成,问题就解决了

新的工作代码是

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

            $name_a = $_POST['name'];
            $email_a = $_POST['email'];
            $pass_a = $_POST['password'];

            $sql = "UPDATE admin SET a_name = '$name_a', a_email = '$email_a', password = '$pass_a' where aid='$update_id' ";
            $retval = mysql_query($sql,$link);

            if(! $retval ) {
               die('Could not update data: ' . mysql_error());
            }



         } 


    $result = mysql_query("SELECT * FROM admin where aid='$update_id' ",$link);
    while($row = mysql_fetch_array($result)){

        $name = $row['a_name'];
        $email = $row['a_email'];
        $password = $row['password'];

    }
     mysql_close($link);
            ?>

感谢@DivyeshSavaliya