zin-
フォーラムへの返信
-
フォーラム: テーマ
返信が含まれるトピック: カスタムメニューについてフォーラム: 使い方全般
返信が含まれるトピック: 入力フォームでデータ連携(SQL)する場合のシンプルな記述方法jim912さん、ご指摘ありがとうございます。
①user_idについてですが、コードの変換で失敗していました。
今回はWelcartを使用しているため下記が正しいコードとなります。$sql=sprintf("SELECT * FROM member WHERE user_id = %s",usces_memberinfo('ID','return'));
②
送信元のデータが正当なもの(この固定ページから送信されたかどうか)を判定していない
ですね。。。言われてみるとわかるのですが確かに問題が起こる可能性が高いですね。
送信元のデータが正当なものかどうかを判断するのはget_pageといった関数を使えば実現できるのでしょうか?③すいません。memberテーブルでした。ごめんなさい。
ご指摘の通り、変更したはずなのに以前のデータが表示されてしまいます。
ただデータベース上では反映されています。
データベースおよびページ内で変更後のデータを表示するやり方はどのようにすればいいのでしょうか?
Headerに現ページのURLを送るなど検討してみましたが、現実的ではないなぁと思い、情報収集中です。フォーラム: 使い方全般
返信が含まれるトピック: 入力フォームでデータ連携(SQL)する場合のシンプルな記述方法皆様、ご連絡ありがとうございます。
何を質問すればよいのかがだんだんわかってきました。
まず大まかなやりたいことは下記となります。1.ユーザーはフォームに入力を行う。 (約8入力項目/1ページを合計8ページ位=約60項目) 2.管理側(私)はそれぞれのユーザーの入力内容を 定型フォーマットに反映させ文章を確認できるようにする。 3.ユーザー(user_id)はWelcartで管理し、出来上がった 文章を購入してもらう。 (※Welcart専用のIDが付与されます。)
尚、kzさんとnobitaさんからご推薦頂いたカスタム投稿タイプについてですが、まずカスタム投稿タイプをもう一度、手持ちの書籍で調べてみました。
管理者側が記事を投稿する際に一定のフォームを事前に設けておいて、それに沿って記入することで毎回決まった形(レイアウト)で記事を作る方法と理解しました。今回は記事の中にフォームを作成し、ユーザー側からデータを入力してもらうという動きを実現したいのでカスタム投稿タイプではちょっと難しいのかなぁと思っています。
最後に補足となりますが、ContactForm7とContactForm7 Database Extensionの使用を検討したのですが、XML保存形式だと1カラムあたりのデータ量が大きくなってしまうのとXMLの取り出し方などが知識不足でわからなかったため使用しないことにしました。。。
(今考えるとContactForm7で作成した方が簡単にセキュリティもあまり気にしなくてできあがるのかな?もしそうなら推薦頂けると助かります。)以上、よろしくお願いします。
フォーラム: 使い方全般
返信が含まれるトピック: 入力フォームとのデータ連携 $WPDBnobita様
ご連絡ありがとうございました。
アドバイス頂いた通り、テーブルを作成し、置くことができました!wpdbの使い方は理解が十分にできなかったため下記のようになってしまいましたが、
入力フォームとデータ連携に関しては解決です!
ありがとうございました。1点だけ気になるのは現在、コードをすべて固定ページに書き込んでいることです。。。
固定ページに書き込むコードを少なくする方法 (SQL部分をinput_do.phpのように外部ファイルを読み込む方法)
については別のスレッドで質問してみようと思います。
本当にありがとうございました!kz様
アドバイスありがとうございます。
カスタム投稿タイプを一通り確認してみたのですが、今回、会員番号はWordpressのユーザー名管理ではないためカスタム投稿タイプでは対応できない気がしたのですが・・・なにぶんまだまだプログラム自体を触り始めて時間がたっていないために判断が曖昧です。
あっていますか?<form id="form" method="post" action='<?php echo get_permalink();?>'> <table> <label for="cname">名前</label> <input type="text" id="cname" name="cname" value="cname" /> <label for="user_id"></label> <input type="text" id="user_id" name="user_id" value="user_id" /> <input type="submit" value="送信" /> </table> </form> <?php if($_POST['cname']){ mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('memberdb'); mysql_query('SET NAMES UTF8'); $sql = sprintf("INSERT INTO member VALUES ( '$_POST[user_id]', '$_POST[cname]') ON DUPLICATE KEY UPDATE cname = '$_POST[cname]'"); $recordSet = mysql_query($sql); $data = mysql_fetch_assoc($recordSet); }; ?>
フォーラム: 使い方全般
返信が含まれるトピック: 入力フォームとのデータ連携 $WPDBnobita様、ご連絡ありがとうございます。
教えて頂いた方法でやりたい動きは確認できました。
ありがとうございます。ただ…前回、記載しておらず恐縮なのですが、今回WordpressをCMSとして使用するため投稿やテーマに依存したデータは扱わない予定となっております。
そのため私の乏しい知識だとwpdbを使用する必要があるのではないかと思っています。質問内容がまとまっていなかったです。本当に申し訳ありません。
当方がやりたいことを簡素化して記載すると下記のとおりです。
会員番号(user_id)に沿って名前(cname)などを更新したい。 但し会員番号や名前はワードプレスのユーザーIDなどとは異なるもので、 ワードプレス標準テーブル以外の作成したテーブル(今回はmember)で管理したい。
普通にMySQLで記載すると下記のようなことを行いたいです。
UPDATE member SET cname = $_POST['cname'] WHERE user_id = $_POST['user_id']
しかし、教えて頂いた方法を基にwpdbクラスを使用して下記のようにコードを記載してテストを何度か行っているのですが、テーブルに反映されません。。。
<?php if($_POST['cname']){ global $wpdb; $wpdb->update ($wpdb->member, array( 'cname' => $_POST['cname'] ), array( 'user_id' => $_POST['user_id'] ) ); $wpdb->show_errors(); } ?> <form id="form" action='<?php echo get_permalink();?>' method="post"> <label for="cname">名前*</label> <input type="text" id="cname" name="cname" /> <label for="user_id">ユーザーID</label> <input type="text" id="user_id" name="user_id" /> <input type="submit"> </form>
データベース処理エラーも出ていないので、もしかしたら根本的に間違っている可能性があるかと思うのですが間違っているところを教えていただけないでしょうか?
よろしくお願いします。