繁体   English   中英

显示来自 MySQL 数据库的用户信息的配置文件页面

[英]Profile page that displays user information from MySQL database

我希望有人可以提供帮助。 我试图从我的 sql 获取登录用户信息以显示在个人资料页面上。 然后让该用户能够更改字段中的任何内容并将其保存以更新数据库。

到目前为止,这是我的个人资料页面,我只是不确定如何将 php 实现到表单中,因此为什么名称 php 脚本位于顶部。

我对这一切都很陌生,现在已经在这里搜索了一天,但找不到答案或者我理解的东西。 任何帮助将非常感激。

<?

session_start();

include("connection.php");

$query="SELECT name FROM users WHERE id='".$_SESSION['id']."' LIMIT 1";

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

$row = mysqli_fetch_array($result);

$diary=$row['name'];

?>

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Profile</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href='https://fonts.googleapis.com /css?family=Lato:400,300,100,300italic' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="resources/css/profilestyles.css">
</head>

<body data-spy="scroll" data-target=".navbar-collapse">
<div class="navbar navbar-default navbar-fixed-top">
  <div class="container">
    <div class="navbar-header">
      <button class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button>
      <a class="navbar-brand">Profile</a> </div>
    <div class="collapse navbar-collapse">
      <form class="navbar-form navbar-right" method="post">
        <ul class="nav nav-pills">
          <li role="presentation"><a href="mainpage.php">My connections</a></li>
          <li role="presentation"><a href="#">World connections</a></li>
          <li role="presentation"  class="active"><a href="profile.php">Profile</a></li>
          <li role="presentation"><a href="#">Messages</a></li>
          <li role="presentation"><a href="index.php?logout=1">Logout</a></li>
        </ul>
      </form>
    </div>
  </div>
</div>
<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">
        <h6>Upload a different photo...</h6>
        <input class="form-control" type="file">
      </div>
    </div>

    <!-- edit form column -->
    <div class="col-md-9 personal-info">
      <div class="alert alert-info alert-dismissable"> <a class="panel-close close" data-dismiss="alert">×</a> <i class="fa fa-coffee"></i> This is an <strong>.alert</strong>. Use this to show important messages to the user. </div>
      <h3>Personal info</h3>
      <form class="form-horizontal" role="form">
        <div class="form-group">
          <label class="col-lg-3 control-label name">name:</label>
          <div class="col-lg-8">
            <input class="form-control" value="" type="text">
          </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="katie@katie.com" type="text">
          </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="yyyy-mm-dd" type="date">
          </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="America" type="text">
          </div>
        </div>
        <div class="form-group">
          <label class="col-md-3 control-label">Password:</label>
          <div class="col-md-8">
            <input class="form-control" value="password" placeholder="At least 8 characters and 1 cap letter" type="password">
          </div>
        </div>
        <div class="form-group">
          <label class="col-md-3 control-label">Confirm password:</label>
          <div class="col-md-8">
            <input class="form-control" value="password" placeholder="At least 8 characters and 1 cap letter" type="password">
          </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="button">
            <span></span>
            <input class="btn btn-default" value="Cancel" type="reset">
          </div>
        </div>
      </form>
    </div>
  </div>
</div>
<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>
</body>
</html>

在表单标签中输入以下代码:

form action="edit_profile.php" method="post"

其中“edit_profile”是你接收表单数据的php文件的名称,对于每个表单你一个php文件,“ method post ”表示数据将如何发送到php文件

将发送到 php 的字段,您为每个字段命名,如下所示:

input class="form-control" value="" type="text" **name="name"**

表单按钮是提交类型。 像这样:

button **type="submit"** value="save changes"

在php文件中:

$name= $_POST['**name**'];

在这里您的表单的所有字段。

我希望它有帮助。

首先我会建议使用 PDO ( http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers )

编写应用程序的最佳解决方案可能是使用一些简单的框架,例如 Yii2 框架( http://www.yiiframework.com/wiki/?tag=yii2

但是,如果您正在学习 PHP 并且不想从框架开始,我建议您使用对象功能并将您的应用程序分成文件。

您可以创建的第一个文件将是用户模型类,它选择和更新用户详细信息,该类应该使用 PDO 对象,所以我建议这样:

class DB
{
    private static $singleton;

    public static function getInstance() {
        if(is_null(self::$singleton)){
            self::$singleton = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'root', '');
        }
        return self::$singleton;
    }
}

class User 
{    
    private $id;

    private $name;

    private $surname;

    public static function find($id)
    {
        $stmt = DB::getInstance()->prepare("SELECT * FROM users WHERE id=?");
        $stmt->execute(array($id));
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);

        if(empty($rows)) {
            return null;
        }

        $user = new self();
        $user->id = $rows[0]['id'];
        $user->name = $rows[0]['name'];
        $user->surname = $rows[0]['surname'];

        // And any other 

        return $user;
    }

    public function getId()
    {
        return $this->id;
    }

    public function getName()
    {
        return $this->name;
    }

    public function getSurname()
    {
        return $this->surname;
    }

    // And any other 

    public function update($params)
    {
        // Shoul also validate the data from user input before store into database 

        if(isset($params['name']))
        {
            $this->name = $params['name'];
        }

        if(isset($params['surname']))
        {
            $this->surname = $params['surname'];
        }

        // And any other 

        $stmt = DB::getInstance()->prepare("UPDATE users SET name = ?, surname = ? WHERE id = ?");
        return $stmt->execute(array($this->name, $this->surname, $this->id));
    }

}

$user = User::find(1);

$user->update(['name' => 'John']);

// or simply 

if($_POST) {
  $user->update($_POST);
}

请记住,使用框架并不是使应用程序变得更好的安全方法,或者在从用户那里获取数据时必须非常小心但我认为这可以帮助您理解 PHP 结构

然后在形式:

<input name="surname" class="form-control" value="<?= ($user) ? $user->getSurname() : '' ;?>" type="text">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM