配置文件页面不显示用户配置文件信息或更新

时间:2016-04-02 19:52:59

标签: php mysql database user-profile

希望有人可以提供帮助。我有一个配置文件页面,我想显示登录的用户详细信息。到目前为止,我在“个人资料”页面上有这个。

<?php  

/* This script pulls the existing name input and displays it when the user logs in. */

session_start();

include("db.php"); ?>

<?php include("includes/header.php") ?>

<?php include("includes/nav.php") ?>




<?php 

    if(logged_in()) {

    $result = mysqli_query($link,$query);

    $row = mysqli_fetch_array($result);


if (!$_POST['name'] && $_POST['name']=="") $error.="<br />Please enter your name";
if (!$_POST['email'] && $_POST['email']=="") $error.="<br />Please enter your email";
if (!$_POST['DOB'] && $_POST['DOB']=="") $error.="<br />Please enter your date of birth";
if (!$_POST['country'] && $_POST['country']=="") $error.="<br />Please enter your country";




if ($error) {

                echo '<div class="alert alert-success alert-dismissable">'.addslashes($error).'</div>';

            }

if(isset($_POST['form-control'])) {

move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']);
 $query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."'");
}    


    } else {

        redirect("login.php");

    } 

?>


<Style>


.alert{
display:none;
}

#profileimg {
    height: 100px;
    width: auto;
}    

</Style>


<div class="container">
<h1>Edit Profile</h1>
<hr>
<div class="row">
  <!-- left column -->
  <div class="col-md-3">
    <div class="text-center">
      <img src="//placehold.it/100" class="avatar img-circle" alt="avatar" id="profileimg">
      <h6>Upload a different photo...</h6>

      <input class="form-control" type="file" name="name">
    </div>
  </div>

  <!-- edit form column -->
  <div class="col-md-9 personal-info">
    <div class="alert alert-success alert-dismissable">
      <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
      <strong>Profile updated.</strong>
    </div>
    <h3>Personal info</h3>

    <form class="form-horizontal" role="form" action="edit_profile.php" method="post">

      <div class="form-group">
        <label class="col-lg-3 control-label name">name:</label>
        <div class="col-lg-8">
         <input class="form-control" value="<?php echo $row['name'];?>" type="text" name="name" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Email:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['email'];?>" type="text" name="email" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">DOB:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['DOB'];?>" type="date" name="DOB" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Country</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['country'];?>" type="text" name="country" required>
        </div>
      </div>

      <div class="form-group">
        <label class="col-md-3 control-label"></label>
        <div class="col-md-8">
          <input class="btn btn-primary" value="Save Changes" type="submit">
          <span></span>
          <input class="btn btn-default" id="updated" value="Cancel" type="reset">
        </div>
      </div>

    </form>
  </div>

     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>

    <script>

     $("#updated").click(function(){

 $(".alert").hide().show('medium');

     </script>


</body>
</html>

然后我有另一个用于更新的php文件:

<?php

session_start();

include("db.php");



$name = $_POST['name'];
$email = $_POST['email'];
$DOB = $_POST['DOB'];
$country = $_POST['country'];
$password = md5($salt.$_POST['password']);



$query = "UPDATE users SET name  = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."'"; 




$result = mysqli_query($link,$query);




header('Location: profile.php');

?>

所以简短的是它没有显示或更新,我不知道为什么。我是PHP的新手,所以如果这很简单,我会很容易找到,但我已经搜索过但似乎无法找到答案。

提前致谢。

2 个答案:

答案 0 :(得分:1)

我也是新手,但通常在我检查SESSION ID是否有效时我会使用

if(isset($_SESSION['id'])) {
$query = "UPDATE users SET name  = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."' WHERE id='".$_SESSION['id']."'"; 
}

您还需要回显您尝试查询的索引行以显示结果

$name = row['username'];
echo $name;

答案 1 :(得分:0)

您的代码中存在许多错误:您尝试在同一页面上传文件,而您将表单数据发送到另一个页面。如何处理表单验证也有点开销。我在表单中做了哪些更改:我在您的提交按钮中添加了name =“save”,并添加了新的隐藏输入来存储您的用户个人资料ID。我不确定你的代码中有什么login()函数,最好坚持if($ id){}。

试试这个:

<?php  

/* This script pulls the existing name input 
   and displays it when the user logs in. */
session_start();
include("db.php");
include("includes/header.php");
include("includes/nav.php");
$id = $_SESSION['id'];
if(loginned()) {//you can do if($id){}  
    $query="SELECT * FROM users WHERE id='$id' LIMIT 1";
    $result = mysqli_query($link,$query);
    $row = mysqli_fetch_array($result);
?>
<style>
.alert{
display:none;
}
#profileimg {
    height: 100px;
    width: auto;
}    
</style>

<div class="container">
<h1>Edit Profile</h1>
<hr>
<div class="row">
  <!-- left column -->

  <!-- edit form column -->
  <div class="col-md-9 personal-info">
    <div class="alert alert-success alert-dismissable">
      <button type="button" class="close" data-dismiss="alert"
           aria-hidden="true">&times;</button> 
      <strong>Profile updated.</strong>
    </div>
    <h3>Personal info</h3>    
    <form class="form-horizontal" role="form" 
          action="edit_profile.php" method="post">    
      <div class="form-group">
        <label class="col-lg-3 control-label name">name:</label>
        <div class="col-lg-8">
         <input class="form-control" value="<?php echo $row['name'];?>" 
               type="text" name="name" required>
        </div>
      </div>
      <div class="col-md-3">
    <div class="text-center">
      <img src="//placehold.it/100" class="avatar 
           img-circle" alt="avatar" id="profileimg">
      <h6>Upload a different photo...</h6>
      <input class="form-control" type="file" name="name">
    </div>
  </div>   
      <div class="form-group">
        <label class="col-lg-3 control-label">Email:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['email'];?>" 
               type="text" name="email" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">DOB:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['DOB'];?>" 
                type="date" name="DOB" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Country</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['country'];?>" 
              type="text" name="country" required>
        </div>
      </div>

      <div class="form-group">
        <input type="hidden" name="id" value="<?php echo $row['id'];?>">
        <label class="col-md-3 control-label"></label>
        <div class="col-md-8">
          <input class="btn btn-primary" name="save" 
               value="Save Changes" type="submit">
          <span></span>
          <input class="btn btn-default" id="updated" 
                 value="Cancel" type="reset">
        </div>
      </div>         
    </form>
  </div>
    <?php }else{ redirect("login.php"); }  ?>

edit_profile.php首先我们检查是否有任何名称为save的帖子,我们验证发布的数据。如果验证成功,我们继续上传您的文件,然后运行更新查询。

<?php   
    session_start();
    include("db.php");
if(isset($_POST['save'])){
        $id = isset($_POST['id'])? $_POST['id']:'';
        $name = isset($_POST['name'])? $_POST['name']:'';
        $email = isset($_POST['email'])? $_POST['email']:'';
        $dob = isset($_POST['DOB'])? $_POST['DOB']:'';
        $pass = isset($_POST['passwrd'])? md5($salt.$_POST['password']):'';
        $country = isset($_POST['country'])? $_POST['country']:'';

        if(empty($name)){
            $error = 'Please enter your name';
        }elseif(empty($email)){
            $error = 'Please enter your email';
        }elseif(empty($dob)){
            $error = 'Please enter your date of birth';
        }elseif(empty($country)){
            $error = 'Please enter your country';
        }elseif(empty($pass)){
            $error = 'Please enter your password';
        }else{
            move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']);
            $query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."' 
                                   WHERE id='$id'");
            $query = "UPDATE users SET name  = '$name', email = '$email', 
                      DOB = '$DOB', country = '$country', password = '$password' 
                      WHERE id='$id'"; 
            $result = mysqli_query($link,$query);
            header('Location: profile.php');
        }

}     ?&GT;

<?php if(!empty($error)){ 
        echo '<div class="alert alert-success 
           alert-dismissable">'.addslashes($error).'</div>';
     }else{
       echo '<div class="alert alert-success">Success</div>';
      }
  ?>

我添加了demo here。至少这会有所帮助: