• ベストアンサー

WordPressの質問(q10082875)の続

質問掲示板を作成しているのですがSQLでページの遷移がうまくいきません。 何か不足しているコードがあるのでしょうか? ※該当コード echo '<input type="hidden" name="action" value="confirmationform">'; ※質問掲示板 https://wandbox.org/permlink/07uPWjVPmU6rwrVJ ※お問い合わせページ(遷移可能な元のコード) https://wandbox.org/permlink/8BiCLMilyhjCC2qp

質問者が選んだベストアンサー

  • ベストアンサー
  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.23

・0,1,2,3,4,5にそれぞれURLを当てはめるということでしょうか? そうですね。 以下のように設定してできそうです。 ---- $stamps = [ 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146070.jpg', 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146281.jpg', 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/FIGURE-146282.jpg', 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/9416845000734.jpg', 'http://www.last.cfbx.jp/wp-content/uploads/2022/10/bd3713656360f94acb07764cbb2b05a90006a26d160f9f9241f14fff7417fc51_01.jpg', 'http://www.last.cfbx.jp/wp-content/uploads/2022/09/FIGURE-145522.jpg', ]; ---- echoで表示しているところは$stampsをループ処理に変えてすっきりできます。 雑談掲示板の一覧表示にスタンプ画像を表示する方法は、 と言ってもまだそこを作られていないので、作られたときにわからなければ説明します。 ・画像URLを差し替えるように作ることは可能でしょうか? 上記の設定のURLを変えるだけで大丈夫そうです。

php_learn
質問者

お礼

回答期限が切れてしまいました。 下記のURLから引き続きお願い致します。 https://okwave.jp/qa/q10103578.html

php_learn
質問者

補足

回答ありがとうございます。 配列にまとめたものを格納する数字とどのように結びつけて良いのかわからないのですが、格納した数字はどのように取得するのでしょうか? SQLの数字を取得する方法がわからないため、困っております。 Javascriptでは教えていただいたのですが、PHPで可能であればそちらを使用したいです。 まだJavascriptへの理解が浅いため不安要素は減らしておきたいです。 以前のRSSの$template_numberの時のように1=,2=,3=でまとめられるのではと考えていたのですが、データベースstanpカラムに格納された数字は関数だと思いますので、$stamp=1,2,3,4,5とするのは間違っていますし… 以前dell_okさんにアドバイス頂いたフォーム側の名前は下記のコードで書き換えました。 ※フォーム側の名前をstampに変えたもの https://wandbox.org/permlink/A4VLYzAR2h4uYYRh ※Javascriptで格納する方法 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11275441906

その他の回答 (22)

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.12

・コードを修正してみたのですが格納に失敗しているようです。 テーブルのmessageとnamaeのデータ型がintになっています。 intは数値なので文字を保存できません。 varchar(255)などに変更してみてください。 変更前にメッセージと名前に1とか2とかの数字の入力で試してみてください。 たぶん保存できると思います。 それでも保存できなければ、他にも原因があるかも知れません。

php_learn
質問者

補足

アドバイスありがとうございます。 数字で入力してみたのですが保存することができませんでした。 varchar(255)に変更して試してみたのですが保存に失敗しているようです。 原因を考えてみたのですが、下記のコードに違和感を感じたのですが他の個所は特に思い当たりません。 送信は特に問題ないように見えるのですが、どのように修正すれば良いのでしょうか? <form action="<?php echo esc_url( home_url( '/entry/' ) ); ?>" http://www.last.cfbx.jp/entry/ ※質問掲示板 https://wandbox.org/permlink/e7kkh7JpZdFFSluQ ※雑談掲示板 https://wandbox.org/permlink/ahkmhX6ZBFfd3zFB

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.11

・雑談掲示板の問題になるのですが、入力フォームをいきなり固定ページのテンプレートにしたところURLがエラーとなりコンテンツが表示できない状態になっております。 テンプレートにしようとしているのは「enter-information.php」でしょうか。 以下のようなコメントが必要なはずですが、ありません。 ---- /* Template Name: テンプレート名 */ ---- どんなエラーになっているかも書いてくださいね。

php_learn
質問者

補足

回答ありがとうございます。コメントアウトは事前に付け加えていたのですが、追加するのを忘れておりました申し訳ありません。 下記のコードをenter information.phpに追加したところ表示することができました。 自分では原因がよくわからかったのですが、dell_okさんから見てエラーの原因はわかりますでしょうか? // エラーメッセージと不正アクセスフラグ $error_mes = ""; $noindexaccess = true; ※雑談掲示板コード https://wandbox.org/permlink/Ajl8yLx86MrbM0u7

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.10

・sortableというテーブルを作成してmessage,namaeの保存を確認してみたのですが空となっています。 試していませんが、他の処理と同じ書き方をするとこうなると思います。 ---- $sql = "INSERT INTO sortable(message,namae) VALUES(%s,%s)"; $query = $wpdb->prepare($sql,$message,$namae); ----

php_learn
質問者

補足

回答ありがとうございます。 コードを修正してみたのですが格納に失敗しているようです。 送信データの受け取れていない可能性が高いのですが、単に$message,$namaeでは駄目なのでしょうか? ※該当コード https://wandbox.org/permlink/SRDU6K9sEfvp443F ※作成テーブル https://imgur.com/a/dAtNwWE.jpg

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.9

・2重送信防止スクリプトが必要なのかわかりません。 あった方がいいと思います。 ・セキュリティの問題上、空で送信可能で名無しと表示の際に付け加えることが問題ないといえるでしょうか? 名前の空を許可するかどうかはセキュリティに関係ない気がします。 必須にして同じ人が毎回でたらめに入力されるよりはいい気がします。 前回と同じ名前を表示したら便利かも知れません。

php_learn
質問者

補足

回答ありがとうございます。クッキーについてもどのように送信するのかお聞きしたいのですが先に保全とパーマリンクについてアドバイス頂きたいです。 少し技術的な話になるのですが保存のコードが間違えていて、 sortableというテーブルを作成してmessage,namaeの保存を確認してみたのですが空となっています。 コード自体の修正が必要のようですが、どこが問題なのか自分ではわかりません。修正お願い致します。 <?php function display_discussion_form() { global $wpdb; //input.phpの値を取得 $message = $_POST['message']; $namae=$_POST['namae']; $sql = "INSERT INTO sortable(message,namae) VALUES(:message,namae)"; // テーブルに登録するINSERT INTO文を変数に格納 VALUESはプレースフォルダーで空の値を入れとく $query = $wpdb->prepare($sql); } ?> _________________________ 上記とは異なる質問になります。 雑談掲示板の問題になるのですが、入力フォームをいきなり固定ページのテンプレートにしたところURLがエラーとなりコンテンツが表示できない状態になっております。 質問掲示板の方は全体を管理するためにentry-main.phpがあるため表示できております。 どちらも入力フォームのコードなので表示できないことは考えられないのですが、画像2タイトル1、画像3タイトル1のページのように表示できないのでしょうか? ※雑談掲示板ファイル https://wandbox.org/permlink/bXaGgTaHEm4EPolF

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.8

・親子関係で保存したいのですが、親子関係で保存する方法について調べてもよくわからずアドバイスお願い致します。 質問掲示板はあとまわしにして、 まずは雑談掲示板を完成してみてください。 投稿、保存、一覧表示、の流れを、 比較的簡単な雑談掲示板で完成させて理解しておくと、 質問掲示板での応用がしやすいと思います。

php_learn
質問者

補足

アドバイスありがとうございます。雑談掲示板のほうは確認画面なしで送信できるように考えているのですが、2重送信防止スクリプトが必要なのかわかりません。 確認画面がない場合は必要ないのでしょうか? もう1点お聞きしたいのですが、名前について空でも送信できる形式が良いのではないかと考えております。 セキュリティの問題上、空で送信可能で名無しと表示の際に付け加えることが問題ないといえるでしょうか? <script> //2重送信防止スクリプト var flg_Submit = false; function Fnk_DoubleSubmit(){ if(flg_Submit){ alert("処理中です。");return false; } else{ flg_Submit = true;return true; } } <script> ※雑談掲示板 https://wandbox.org/permlink/2nNGt45NGV6jQ2UR ※質問掲示板 https://wandbox.org/permlink/adL8r40QkHpACMam

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.7

・この保存と削除の処理を1つのファイルでまとめられるのでしょうか? 保存と削除は別々でいいと思います。 削除はユーザー閲覧タイミングでするよりも、 RSSと同じようにcronに実行させていいのではないでしょうか。 ・テーブルの設計も質問と回答を分ける場合テーブルは別になるのかそれぞれ2つの掲示板はテーブルを別にするのかアドバイスお願い致します。 質問掲示板と雑談掲示板は別テーブルがいいような気がします。 質問掲示板は、質問ひとつに回答ひとつなら、 質問と回答を同じレコードに持てばいいと思います。 もし質問ひとつに回答がいくつもあったり、 回答にもさらに質問できたりするのであれば、 コメントと同じような仕組みになると思うので、 テーブルはひとつで親子関係になります。

php_learn
質問者

補足

Q.もし質問ひとつに回答がいくつもあったり、 回答にもさらに質問できたりするのであれば、 コメントと同じような仕組みになると思うので、 テーブルはひとつで親子関係になります。 A.回答ありがとうございます。 親子関係で保存したいのですが、親子関係で保存する方法について調べてもよくわからずアドバイスお願い致します。 entry-confirmationform.phpの送信ボタンから送られたデータを下記コードで保存可能でしょうか? 聞きそびれていたのですが心配です。 <?php function display_question_form() { global $wpdb; //input.phpの値を取得 $message = $_POST['message']; $namae=$_POST['namae']; $sql = "INSERT INTO sortable(message,namae) VALUES(:message,namae)"; // テーブルに登録するINSERT INTO文を変数に格納 VALUESはプレースフォルダーで空の値を入れとく $query = $wpdb->prepare($sql); } ?> ※entry-confirmationform.phpコード https://wandbox.org/permlink/adL8r40QkHpACMam

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.6

・確認画面でユーザー側に見えないようにIDを送信させることなど可能なのでしょうか? inputタグを使うとユーザー側で見ることが可能なのでやめた方がいいでしょう。 ID化IPアドレスにしても、ID化セッションIDにしても、最後に送信されたタイミング(データベースに保存するPHPファイル)でID化すればいいような気がします。 なので、送信データにIDを含める必要はないのではないでしょうか。

php_learn
質問者

補足

回答ありがとうございます。表示PHPでIDセッション化できることは初めて知りました。 名前とメッセージのみ送信で番号とIDは後ほど実装します。 確認画面からの送信で保存と削除するコードを考えているのですが、以前RSSで作成した際のstorage_rss.phpを参考にさせていただいております。 今回質問掲示板と雑談掲示板の2つ(質問と回答が分かれているものと、すべて一体化されているもの)を作成しているのですが、この保存と削除の処理を1つのファイルでまとめられるのでしょうか? ※削除は掲示板の削除を考えており5日ごとに強制削除を考えております。 レスポンスの数は両掲示板ともに統一して400~500で考えているのですが、負担が大きい場合減らす予定です。 テーブルの設計も質問と回答を分ける場合テーブルは別になるのかそれぞれ2つの掲示板はテーブルを別にするのかアドバイスお願い致します。 https://wandbox.org/permlink/IYTRXQPcrR5s926g ※確認画面から送信後の保存コード <?php function display_question_form() { global $wpdb; //input.phpの値を取得 $message = $_POST['message']; $namae=$_POST['namae']; $sql = "INSERT INTO sortable(message,namae) VALUES(:message,namae)"; // テーブルに登録するINSERT INTO文を変数に格納 VALUESはプレースフォルダーで空の値を入れとく $query = $wpdb->prepare($sql); } ?> _________________________ storage_rss.phpを参考に保存、削除のコードを考えているのですが%sというのはどのような意味があるのでしょうか? <?php require_once 'wp-load.php'; /* コメントの保存 引数(テンプレート番号) */ comments_save(1); // 掲示板の削除 function erase_bulletin_board($comments_table_name)// ※接続オブジェクト、掲示板テーブル名を受け取る { global $wpdb; $sql = "DELETE FROM {$comments_table_name} WHERE date < %s"; $delete_date = date('Y-m-d H:i:s', strtotime('-1 week')); // ※削除対象日付 $query = $wpdb->prepare($sql, $delete_date); $wpdb->query($query); return $delete_date; // 削除対象日付を返す } ※参考コード https://wandbox.org/permlink/DXmWClKcBqjySWmN

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.5

entry-main.phpから以下の部分がなくなっています。 これがないとentry-form.phpも表示されないはずですが、 大丈夫ですか。 ---- // エラーメッセージと不正アクセスフラグ $error_mes = ""; $noindexaccess = true; ----

php_learn
質問者

補足

回答ありがとうございます。 entry-mainのcase "confirmation"と略していたのが原因でした。申し訳ありません。 確認画面を表示することができました。 ※該当ページ http://www.last.cfbx.jp/entry/ 昨日の質問に戻るのですが、entry-form.phpにIP取得コードを追記したい場合下記のような形を考えたのですが、ユーザー側に確認画面で公開せずにデータベースに保存して表示する際にIDとしてつけるにはどのように設計すればいいのでしょうか? 下記のように考えているのですが構造についてわからない状態です。 入力画面ではIPを取得してIDに変換、確認画面ではユーザー側に見えないようにしたいのでIDに関するコードは入れない?、データベースに保存する場合は確認画面で送信した値を格納する予定ですのでIDに関するコードもおそらく必要? 確認画面でユーザー側に見えないようにIDを送信させることなど可能なのでしょうか? echo '<input type="hidden" name="id" value="<?php echo substr(base_convert(md5(session_id()), 16, 36), 0, 6); ?>" required />'; ※該当コード https://wandbox.org/permlink/FU5uotNLTMXD2hsw ※参考サイト https://web.analogstd.com/tips/posts/php/how-to-mount-comment-func-without-sql.php

  • dell_OK
  • ベストアンサー率13% (767/5729)
回答No.4

ページ遷移できるようになりましたか。

php_learn
質問者

お礼

ページ遷移はうまくいっていません。メールの送信ファイルがないため何かしら影響があるかもしれません。 contact-index.phpをなくしていきなり入力フォームから作成したほうがよさそうです。 コードを変更する前にformから送信する内容を追加したいのですが、IDを送信するコードを現在の形に適応できずにつまずいております。 確認画面で同じコードを繰り返すように書くためにはどうすればよいでしょうか?アドバイスお願い致します。 https://wandbox.org/permlink/kyJUhd1OpX5Pese6 ※参考サイト https://web.analogstd.com/tips/posts/php/how-to-mount-comment-func-without-sql.php

php_learn
質問者

補足

遅くなり申し訳ありません。 wifiが壊れていた為昨日からコードを見直しておりました、今日再度質問させて頂きます。

回答No.3

>print_r($_POST);がうまく確認できなかったため、 >var_dump($post);で確認してみたところ下記のように出力されました。 >値は入っているようです。 あれ?値、入ってます????? actionって文字はみつからないのと、これPOSTじゃなくて WP内部変数なので、POSTとは違うものな気がします。 また、$_POSTはスーパーグローバルなので、 ないということは絶対にありえないのですが、 何か特殊な環境でした? こういう場合、生変数を見たほうがいいとは思いますが。 あと、プログラムにおける「動かない」 については、その部分ではなくて、 >質問掲示板を作成しているのですがSQLでページの遷移がうまくいきません。 これの方です。 SQLは、ページ遷移するための物ではないですし、 ソース内に、ページ遷移する命令がないと思われるという方です。 その他のサイトの方が、同じ意味で言ったかは、 わかりませんが。 通常、Location命令が入ると思われますよ。

php_learn
質問者

補足

A.アドバイスありがとうございます。 まだ知識不足なところがありまして、スーパーグローバル関数だということを見落としておりました。申し訳ありません。 print_r($_POST);というコードを該当コードのどのファイルに配置すれば良いのでしょうか? entry-main.phpとentry-form.php? ページ遷移に関してなのですが、下記コードで可能なようです。confirmationformの名前を変更すると失敗しますが、現状のままで有れば成功しています。 質問掲示板の方はコードに問題があるようですが、お問い合わせフォームの方は 入力フォームから確認画面→完了画面に問題なく遷移している状態です。 echo '<input type="hidden" name="action" value="confirmationform">'; ※該当コード https://wandbox.org/permlink/07uPWjVPmU6rwrVJ

関連するQ&A