2016-08-30 32 views
0

私は現在、仕事のためにPHPユーザ管理システムで作業しています。新しいユーザーを作成することができます。私はログインしているユーザーアカウント、名、姓、電子メール、パスワードを更新できます。私は、テーブルにユーザーの情報を生成するページを作成しました。 削除、編集リンクのユーザーID、ユーザー名、名、姓、メールアドレスを表示します。削除スクリプトが機能します。私はユーザー情報を更新できるので、編集リンクはフォームに移動します。私が抱えている問題は、ユーザーの情報を更新するときに、データベースで更新されていないということです。 そのユーザーとしてログオンしている場合に限り、ユーザーの情報を更新できます。私はセッションを利用しています。私はそれが自分の問題と関係していると思います。ここにコードがあります。このスクリプトはsubmitを押してユーザー情報を更新した後に実行されます。どんな助けもありがとう。ありがとう。更新クエリは更新されませんが、実行時にエラーは表示されません

<?php 

require("connect.php"); 

if(empty($_SESSION['user'])) { 
header("Location: ../hound/login.php"); 
die("Redirecting to ../hound/login.php"); 
} 

$array_value = array(
    ':email' => $_POST['email'], 
    ':first_name' => $_POST['first_name'], 
    ':last_name' => $_POST['last_name'], 
    ':id' => $_POST['id'] 
); 

    $query = "UPDATE users 
    SET 
    email = :email, 
    first_name = :first_name, 
    last_name = :last_name 
    WHERE 
     id = :id"; 

    try { 
    $stmt = $db->prepare($query); 
    $result = $stmt->execute($array_value); 
    } 
catch(PDOException $ex) { 
die("Failed to run query: " . $ex->getMessage()); 
} 
header("Location: users.php"); 
die("Redirecting to users.php"); 

?> 

これは、ユーザー情報を編集するためのフォームです。送信ボタンを押すと、上記のスクリプトが実行されます。次に、usersという名前のページに戻ります。私はあなたのコードから理解することができるものから、

<?php 

require("../scripts/common.php"); 


if(empty($_SESSION['user'])) 
{ 

header("Location: ../hound/login.php"); 


die("Redirecting to ../hound/login.php"); 
} 

$query_parm = array(

':id' => $_GET['id'] 

); 


$query = " 

SELECT 
* 
FROM users 
WHERE 
id = :id 
"; 


try 
{ 
$stmt = $db->prepare($query); 
$stmt->execute($query_parm); 

} 
catch (PDOException $ex) 
{ 

die("Failed to run query: " . $ex->getMessage()); 

    } 

$rows = $stmt->fetchAll(); 


    ?> 

<form action="../scripts/edit_users.php" method="post"> 

    <?php foreach($rows as $row): ?> 

    Username:<br /> 
<b><?php echo htmlentities($row['username'], ENT_QUOTES, 'UTF-8'); ?></b> 
<br /><br /> 
First Name:<br /> 
<input type="text" name="first_name" value="<?php echo htmlentities($row['first_name'], ENT_QUOTES, 'UTF-8'); ?>" /> 
<br /><br /> 
Last Name:<br /> 
<input type="text" name="last_name" value="<?php echo htmlentities($row['last_name'], ENT_QUOTES, 'UTF-8'); ?>" /> 
<br /><br /> 
    E-Mail Address:<br /> 
    <input type="text" name="email" value="<?php echo htmlentities($row['email'], ENT_QUOTES, 'UTF-8'); ?>" /> 
    <br /><br /> 
    Password:<br /> 
    <input type="password" name="password" value="" /><br /> 
    <br /><br /> 
    <input type="submit" value="Update User" /> 
    <a href="../scripts/users.php">Back</a><br /> 
    <?php endforeach; ?> 
+1

'':id '=> $ _POST [' id '] 'fromここからは、​​のユーザIDを取得できます。これはから来ている?私はあなたのフォームで見ることができないまたは私はあまりにも眠いですか? –

+0

私はHendra Nucleoが正しいと思います。あなたのフォームは 'id'を供給しません。現在、id = NULLの場所を更新しようとしています。開発中にprint_r($ _ POST)を追加して、フォームが提供しているものを正確に表示したい場合があります –

答えて

0

は、更新クエリは、データベースを更新することはできませんので、idとの値を取得することができません。ユーザーが異なるユーザーに関する情報を更新できるようにする管理システムを作成しようとしている場合は、ブラウザーの隠し入力フィールドにidの値を渡す必要があります。ユーザーがプロファイルの詳細のみを更新できる場合はユーザが最初にログインしたときにセッション内にidの情報が格納されていれば、セッションからユーザIDを取得することができます。

+0

これが私にとって何をしたのですか? ありがとうございます。私は次のステップに進むことができます。簡単な間違い。 – Grus

関連する問題