php初心者ですが、どうしても出来ないので
ご教授お願いいたします。
phpでmysqlのupdate をしたいのですが、
参考書などは私が作ろうとしている物より複雑で
シンプルに書き換えることが出来ませんん。
会員登録をPHPで作ろうとしています。
会員自身でPR文と更新日を書き換えられるようにしたいのですが、
このような書き方でいいのでしょうか?
**他のページにフォームを作ってこちらに送っています
バージョンは MYSQL ver4.0.26 PHP ver4.2.2 phpMyAdmin ver2.4.6 です。
<?PHP
//データベース関連のデータをインクルードします
require_once("dbini.php");
//MySQLに接続します
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
//データベースを選択します
$selectdb = mysql_select_db($DBNAME, $con);
//MySQLレコード修正
$sql = "update mem set regdate = now() ,pr1 = '$pr1' where id = '00001' ";
mysql_query($sql);
echo "レコードの修正が完了しました";
exit;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>修正ページ-2</title>
</head>
<body>
</body>
</html>
No.4ベストアンサー
- 回答日時:
No2の回答の補足に関してなのですが、
formのアクションでmember1.phpを呼び出していると思うのですが、
echo "<p>PR文:<input type = \"text\" pr1 = \"pr1\" value =\"";
echo $row["pr1"];
の部分って
echo "<p>PR文:<input type = \"text\" name= \"pr1\" value =\"";
echo $row["pr1"];
じゃないでしょうか?
また、<input type = "hidden"・・・>等で
会員番号:$row["id"]も渡さないといけないのでは?
ありがとうございます、
echo の部分の変更をやってみたら更新できました。
後、パスワードを入れてからなど
やる事はあるのですが、ここはクリアできました。
また、お尋ねするかもしれませんが
よろしくお願いいたします。
No.3
- 回答日時:
こんにちは。
フォームから送られたデータを処理する質問文にあるスクリプトの
mysql_query($sql);
の後に
echo mysql_error();
を追加してみてください。
エラーが存在するとエラーメッセージが表示されます。
また、省略しているのかもしれませんが、$sqlの中にある$pr1はちゃんと受け取ってますか?
$pr1 = $_POST['pr1'];
(タグの除去等の処理は省略しています。実装するときは注意して下さい。)
まずはecho mysql_error();にて何か表示されるか。
表示されない場合、idが00001のレコードの更新日付が更新されているか。
質問文にあるスクリプトが省略していない状態なのであれば
$_POST['pr1']よりフォームからの情報を取得してください。
この辺をチェックしてみてください。
また修正フォームの表示ですが、
$sqlの中のid = 00200はid = '00200'として下さい。
$rows = mysql_num_rows($result);
を行っているので
while($row = mysql_fetch_array($result)){
}
で囲む必要はありません。
(1件しか取れないのであれば)
文字コードも統一したほうが良いですよ。
入力はs-jisになっているが更新処理後表示するものがeuc-jpになっています。
あとは、余計なお世話かもしれませんが動きのイメージは出来ているでしょうか?
勉強するのに作っているのならとりあえず問題はないですが運用していこうとなると下のような問題が出てきます。
例えば、ユーザIDをユーザに入力してもらい更新する際
パスワード等で制限をかけないと、他のユーザIDの人が適当にユーザIDを
入力し、勝手にPR文を更新されます。
その辺のイメージも出来てからスクリプトを組んでいかないとつぎはぎだらけのスクリプトになってしまい、
後々機能を追加する時やなにかに困ってしまうかもしれません。
いろいろ作ってみて学んでいくのも良いですが、どういう動きにするか設計する力も大切です。
ありがとうございました。
s-jisに統一して、no3の回答のようにechoの部分を書き換えたら
うまく変更できました。
それから、動きのイメージはあるのですが
出来ることからやって、ご指摘の通り
つぎはぎになると言うより、するしかないかな?
と思いながら作業をしています。
でも、やはり最初からちゃんと設計してからの方がよさそうなので
もう一度考えて見ます。
何度もお手を煩わせてスミマセン、
またお尋ねするかもしれませんが
よろしくお願いいたします。
No.2
- 回答日時:
こんにちは。
前の質問と照らし合わせましたが、
テーブルレイアウトのidカラムってint(10)でしょうか?
int(10)だとすると、多分idが1の人が更新されていると思います。
00001とか01234とかでユーザIDを使用したいのであればidカラムを
charかvarcharで持ったほうが良いですよ。
この回答への補足
何度もスミマセン、要領を得なくて。。
id varchar になっていました。
更新時間とPR文だけ変更したいのですが
エラーは出なくて、更新できません。
(フィールドはもっと沢山あります)
本当は会員の人が自分のid を入力して
PR文を更新させたいのですがちょっと分からないので
00001 の人が更新するページを作ろうとしています。
入力用のページは下記になります。
こちらで入力したのを、先ほどのページで更新しようとしています。
よろしくお願いいたします。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<title>会員修正ページ</title>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
<?php
//データベース関連のデータをインクルードします
require_once("dbini.php");
//MySQLに接続します
$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
//データベースを選択します
$selectdb = mysql_select_db($DBNAME, $con);
//修正のためのフォーム
$sql = "select * from mem where id = 00200";
$result = mysql_query($sql);
$rows = mysql_num_rows($result);
while($row = mysql_fetch_array($result)){
echo "<p>データを修正してください。</p>";
echo "<form action = \"member1.php\" method = \"post\">";
echo "会員番号:";
echo $row["id"];
echo "<br>";
echo "登録日:";
echo $row["regdate"];
echo "<br>";
echo "<p>PR文:<input type = \"text\" pr1 = \"pr1\" value =\"";
echo $row["pr1"];
echo "\" size = \"40\"></p>";
echo "<p><input type=\"submit\" value=\"登録\">";
echo "<input type=\"reset\" value=\"リセット\"></p>";
echo "</form>";
}
?>
</body>
</html>
No.1
- 回答日時:
こんにちは。
>どうしても出来ないのでご教授お願いいたします。
何をしようとしてどう出来ないを伝えて頂かないと的確な回答が出来ません。
例:
更新しようとしているけどエラーが表示される。そのエラーは「・・・」
エラーは表示されないけどテーブルが更新されない。
会員が自身で更新ということで、多分idが会員を一意に扱ってる値
だと思いますが、固定になっているのはテストの為でしょうか?
現状のsqlですとidが00001の人しか更新されません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- PHP PHPプログラムの間違い 1 2022/10/06 14:33
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化けが解決できません。お...
-
エクセルVBAについて
-
DBで指定した値しか存在しない...
-
php テーブルが作成できない
-
SELECT結果から動的にコンボボ...
-
WHILE中で前と重複したら間引く...
-
VBA初心者です。
-
DBで検索結果に該当するデータ...
-
MySQLでデータベースにデータin...
-
Pro*Cの構文エラー
-
XAMPPで画面が真っ白になります。
-
DB Error: no such field
-
phpにて出欠登録管理を作成して...
-
PHP+SQLite でSELECT文のWHERE...
-
テーブルに入っているデータと...
-
Accessのテーブルへ複数の主キ...
-
実行時エラー3131 FROM 句の構...
-
PHP初心者です。syntax error, ...
-
insert1つの処理でもトランザ...
-
SQL文が実行できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
php テーブルが作成できない
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
アラートでyes noを作りたいです。
-
DBで検索結果に該当するデータ...
-
checkboxクリック時、SQLを実行...
-
文字化けが解決できません。お...
-
SELECT結果から動的にコンボボ...
-
PHPでMySQLデータを呼び出し、w...
-
while文の中にwhile文を書きた...
-
sortable ギブアップです…助け...
-
PHP と MySQL でテーブルの行数...
-
重複レコードをグループ化した...
-
PHPでMySQLのデータを2次元配...
-
mysql>PHPにデータ表示、10件ご...
-
PHPについてなのですが未定義の...
-
VBA初心者です。
-
ラジオボタンをループすること...
-
BLOBでの画像表示について
おすすめ情報