2016-03-25 20 views
1

誰かが助けてくれることを願っています。私は、プロファイルページに表示する私のSQLからユーザー情報を取得しようとしています。そのユーザーがフィールド内の何かを変更し、データベースを更新するためにそれを保存できるようにします。MySQLデータベースのユーザー情報を表示するプロフィールページ

これは私のプロフィールページです。これまでのところ、フォームにphpを実装する方法がわからないので、名前PHPスクリプトがなぜトップに座っているのですか?

私はこれに新しく、今ここで一日捜していますが、答えを見つけることができない、または私が理解しているものではありません。どんな助けでも本当に感謝しています。それぞれがあなたに1つのPHPファイルを形成するための「edit_profile」は、フォームデータを受け取るためにあなたのphpファイルの名前です

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

、:あなたは、次のコードを入力してformタグで

<? 

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="[email protected]" 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> 

答えて

1

方法ポスト」それはデータがPHPファイルに送信する方法を示し

あなたは、このようなそれぞれに名前をつけ、PHPに送信されますフィールド:

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

フォームのボタンは送信タイプです。 PHPファイル内

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

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

、ここで、フォームのすべてのフィールドを、このように。

私はそれが役に立ちそうです。私はPDO(http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)を使用するsugestするすべての

+0

ごめんなさい。 – Nukemp

+0

あなたの英語は素晴らしいです。返信をありがとう、私はあなたがそれをテストするためだけの名前で言ったことを試みた。しかし、私がsubmitをクリックすると、それは明らかに空白のedit_profile.phpページに行きます。私は間違っていた/間違ったことをしています。再度、感謝します。 – will

+0

ありがとうございます。 edit_profile.phpページで、フォームデータが送信されているかどうかを確認するテストを行います。** $ name = $ _POST ['name'];このようにしてください。 echo $ name; ** – Nukemp

0

まず

アプリケーションsouch書き込むための最善の解決策は、Yii2フレームワーク(http://www.yiiframework.com/wiki/?tag=yii2

として、いくつかの単純なフレームワークのsouchを使用することができるが、あなたがしている場合PHPを学び、フレームワークから始めたくない私はあなたにオブジェクトの機能を使い、アプリケーションをファイルに分割することをお勧めします。

あなたが作成することができ、最初のファイルを選択し、Userモデルクラスなると、ユーザーの詳細を更新私はこのようなSTHをsugestように、このクラスは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"> 
関連する問題