とても初歩的な質問だと思いますが、回答よろしくお願いします。
データベースに保存した値を更新するページのテキストボックスに、データベースの現在値を反映させたいです。
使っている本には、フォーム要素のvalue属性に対応するフィールド値を反映させる、と書いてあるのですが、その通りにやってもできません。
edit.php
<?php
try {
$db = new PDO('mysql:host=●●;dbname=●●;charset=utf8', '●●', '●●');
$stt = $db->prepare('SELECT name, email, password FROM `users` WHERE number = :number');
$stt->bindValue(':number', $_GET['number']);
$stt->execute();
} catch(PDOException $e) {
die('Error:'.$e->getMessage());
}
?>
<?php
/*
print($_GET['number']);
*/
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>インフォメーション</title>
</head>
<body>
<h3>あなたの登録情報</h3>
<form method="POST" action="dbconnect4.php">
<input type="hidden" id="number" name="number" maxlength="3"
value="<?php print($row['number']); ?>" />
<div class="container">
<label for="name">ユーザ名</label><br/>
<input type="text" id="name" name="name" size="10" maxlength="20"
value="<?php print($row['name']); ?>" />
</div><br />
<div class="container">
<label for="email">メールアドレス</label></br />
<input type="text" id="email" name="email" size="30" maxlength="100"
value="<?php print($row['email']); ?>" />
</div><br />
<div class="container">
<label for="password">パスワード</label><br />
<input type="password" id="password" name="password" maxlength="20"
value="<?php print($row['password']); ?>" />
</div><br /><br />
<input type="submit" name="update" value="更新する" />
<input type="submit" name="delete" value="削除する"
onclick="return confirm('本当に削除してよろしいですか?')" />
</form>
</body>
</html>
information.php
<?php
try {
$db = new PDO('mysql:host=●●;dbname=●●;charset=utf8', '●●', '●●');
$stt = $db->prepare('SELECT name, email, password FROM `users` WHERE email = :email AND password = :password ');
$stt->bindValue(':email', $_POST['email']);
$stt->bindValue(':password', $_POST['password']);
$stt->execute();
} catch(PDOException $e) {
die('Error:'.$e->getMessage());
}
?>
<?php /*
print($_POST['email']);
print($_POST['password']); */
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>インフォメーション</title>
</head>
<body>
<h3>あなたの登録情報</h3>
<table border="1">
<tr>
<th>ユーザ名</th><th>メールアドレス</th><th>パスワード</th><th></th>
</tr>
<?php while ($row = $stt->fetch()) { ?>
<tr>
<td><?php print($row['name']); ?></td>
<td><?php print($row['email']); ?></td>
<td><?php print($row['password']); ?></td>
<td><a href="edit.php?number=<?php print($row['number']); ?>">編集する</a></td>
</tr>
<?php } ?>
<br /><br />
</body>
</html>
information.phpの編集する、というリンクからedit.phpに飛ぶようになっています。
information.phpの前の画面でパスワードとメールアドレスを入力し、それらが一致したらinformation.phpでレコードを抜き出すという仕様になっています。
回答よろしくお願いします。
No.2ベストアンサー
- 回答日時:
>しかし、ここでのnumberというフィールドだけきちんと定義されません。
そういうSQL文を書いているからです。
>$stt = $db->prepare('SELECT name, email, password FROM `users` WHERE number = :number');
$row['number']でなく$_GET['number'](同じ内容)を使うか、SQL文を
$stt = $db->prepare('SELECT * FROM `users` WHERE number = :number');
としてください。普通は取得する列名を書き出すのも面倒なので select * from ~ としますねぇ(あとで項目が増えても大丈夫だし)。
No.1
- 回答日時:
information.phpではちゃんとfetchしているのに、edit.phpではfetchを実行していない($rowが未定義のハズ)。
#書き忘れるようなことでもないと思うんだけど・・・
この回答への補足
さっそく回答していただき、ありがとうございます。
仰るとおりにfetchを使ったところ、きちんと表示されました!
しかし、ここでのnumberというフィールドだけきちんと定義されません。
numberが主キーなので、ここがうまく受け渡しできないと情報の更新も削除もできません…。
何が問題なのでしょうか…。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP php ログイン 1 2022/11/01 00:24
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Auth認証エラー
-
form actionで二つ送信先を指定...
-
テキストボックスにデータベー...
-
データ送信をボタンを押さずに...
-
PHP table内、<a href使って su...
-
onedrive にexcelファイルをア...
-
phpでPEAR::DBを使っているので...
-
フォントの色を変えるには?
-
php5-extensions を make でき...
-
PHPのみでの背景色は指定できる...
-
リンク先を隠す方法はないでし...
-
index.phpって何ですか? 具体...
-
トランザクションが原因?DBに...
-
CFileDialogの最初のディレクト...
-
2つの画像ファイルが異なるファ...
-
バッチを用いたフォルダの自動移動
-
パースエラーとは?
-
PHPで新しいウインドウで開く命...
-
mysql複数レコードをまとめて削...
-
フォームで戻った際に入力済み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
form actionで二つ送信先を指定...
-
ボタンのクリック数を合計保存...
-
データ送信をボタンを押さずに...
-
FORMで送信ボタンと戻るボタン...
-
【WordPress】投稿がないカテゴ...
-
テキストボックスにデータベー...
-
PEAR Image_QRCodeのエラー
-
header(Location: next.php) だ...
-
multipart/form-dataを使ったデ...
-
PHP table内、<a href使って su...
-
inputタグでphpを呼び出す際、...
-
ワンクリックしかできないクリ...
-
【PHP】ページを更新すると勝手...
-
別のファイルへ値を受け渡す方法
-
受け取ったパラメータを次のphp...
-
リクエストメソッド
-
PHPをHTMLに埋め込んだ際のエラ...
-
同じコードを使っているのにエ...
-
formヘルパーを使わないと、パ...
-
データベース接続 ログインフ...
おすすめ情報