- ベストアンサー
WordPressの質問(q10279843)の続
カラム名 question を text にしたい場合下記コードを変更しても良いでしょうか? bbs_quest_input.php の101行目 name="question" bbs_quest_input.php の214行目 var question_value = ""; bbs_quest_input.php の335行目 if (!['name', 'title', 'question'].includes(e.target.id)) return; bbs_quest_input.php の364行目 question_value = ""; bbs_quest_input.php の390行目 question_value = json.question; ※最新コード https://wandbox.org/permlink/PjhrH75IR9jUMnpL
- みんなの回答 (42)
- 専門家の回答
質問者が選んだベストアンサー
・ファイルを右クリックしたときに有効になる設定を作成することが出来るという記事を見つけて試しておりました。 そうでしたか。 ポータブルモードで使う必要はないと思いますので、 通常でインストールしてください。 回答No.41の添付画像のように、 コンテキストメニューに追加するよう、 チェックボックスをオンにしていただければいいと思います。
その他の回答 (41)
- dell_OK
- ベストアンサー率13% (766/5720)
・不自然なところなどありますでしょうか? 存在するファイルを検索する方法はやめたので以下のコードは不要です。 ---- $pattern = $upload_dir['basedir'].'/attach/'.$row->ID.'_*.*'; $files = glob($pattern); if (!empty($files)) { ---- これに合わせて追加されたと思われる終端 } 2個も不要です。
お礼
こちらが最新の回答になります。 キャッシュが削除できていなかったようで、更新したところ画像が表示されました、申し訳ありません。 ※質問回答画面 https://www.irasuto.cfbx.jp/%e8%b3%aa%e5%95%8f%e5%9b%9e%e7%ad%94%e7%94%bb%e9%9d%a2/
補足
回答ありがとうございます、削除いたしました。 https://wandbox.org/permlink/mTIEFJwUC9UoNcae
- dell_OK
- ベストアンサー率13% (766/5720)
・ある質問に対しての1つのレコードを表示するのであれば、クエリなどを見直す必要があるとアドバイスを頂いたのですが、意図が理解できず調べております… 現在のSQL文は無条件に全件取得しています。 $sql = 'SELECT * FROM sortable'; 質問一覧画面から選んだ質問のみを表示する必要があることをアドバイスしてくださったのだと思います。 bbs_quest_view.phpのSQL文はこうです。 $sql = 'SELECT * FROM sortable WHERE unique_id=%s'; 指定されたunique_idのレコードを取得するようになっています。 しかしながら、このままでは回答は表示されません。 回答も表示するには、先日やっていただいたツリー(スレッド)型のための再帰結合SQL文を使います。 それに加えて、質問と回答のデザインが異なるのでしょうから、出力内容も分ける必要があります。 回答は階層も考慮する必要があります。
お礼
こちらが最新の質問になります。 ➀スタンプ画像と➁アイコン画像についてそれぞれお聞きしたいです。 ➀ディレクトリに置かれているスタンプ画像と value="番号" はどのようにつなげるのでしょうか? 旧コードでは value="番号" から呼び出しているように見えるのですが、画像URL を書いているコードが見つからず、関連付ける方法が分かりませんでした… - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <div class="stamp-partial"> <h2>スタンプを選ぶ(必須)</h2> <input type="radio" name="stamp" value="1" id="stamp_1"><label for="stamp_1"></label> <input type="radio" name="stamp" value="2" id="stamp_2"><label for="stamp_2"></label> <input type="radio" name="stamp" value="3" id="stamp_3"><label for="stamp_3"></label> <input type="radio" name="stamp" value="4" id="stamp_4"><label for="stamp_4"></label> <input type="radio" name="stamp" value="5" id="stamp_5"><label for="stamp_5"></label> <input type="radio" name="stamp" value="6" id="stamp_6"><label for="stamp_6"></label> <input type="radio" name="stamp" value="7" id="stamp_7"><label for="stamp_7"></label> <input type="radio" name="stamp" value="8" id="stamp_8"><label for="stamp_8"></label> </div> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ➁アイコン画像に関するコードから var_dump(); を使い、空になっている部分を探したところ、$attach_dir に値が入っておりませんでした。 こちらのコードは bbs_que_answer.php(回答画面)で dell_ok さんからアドバイス頂いた際に新たに追加したものですが、別途コードが必要になるのでしょうか? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if (empty($row->usericon)) { $usericon_src = 'wp-content/themes/sample_theme/images/noimage.png'; } else { $usericon_src = $attach_dir . $row->usericon; } - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ※最新コード https://wandbox.org/permlink/mTIEFJwUC9UoNcae ※旧コード https://wandbox.org/permlink/OsAh7ljsDtqRVW4w
補足
解説ありがとうございます、クエリでWHERE句を用いて抽出するということで覚えておきます。 再帰結合SQL文でどのような形で作っていくのか分からないのですが、先にスタンプ画像、アップロードファイル、アイコン画像を表示することから優先して考えていきます。
- dell_OK
- ベストアンサー率13% (766/5720)
・画像が正常に表示されない原因が分かりません… 問題となりそうな部分はありますでしょうか? 問題はここです。 echo '<div>' .$row->attach1.$row->attach2.$row->attach3.'</div>'; //アップロードファイル これはファイル名を表示しています。 画像や動画として表示するためのHTMLは$viewに準備しているのでそれを出力する必要があります。 ですが、3ファイル分のループの中で$viewを上書きするようなコードになっているため、そのままでは最後のファイルしか表示されません。 3ファイル分のHTMLをため込むようにし、ため込んだ分をループで出力します。 ---- foreach ($rows as $row) { $files = array_filter([$row->attach1, $row->attach2, $row->attach3]); $views = []; foreach ($files as $file) { $info = pathinfo($file); $attach_url = $upload_dir['baseurl'].'/attach/'.$info['basename']; $ext = $info['extension']; switch ($ext) { case 'jpeg': case 'png': $views[] = '<img style="height: 50px;" src="'.$attach_url.'">'; break; case 'mp4': $views[] = '<video style="height: 50px;" src="'.$attach_url.'">'; break; case 'pdf': $views[] = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; break; default: break; } } if (empty($row->usericon)) { $usericon_src = 'wp-content/themes/sample_theme/images/noimage.png'; } else { $usericon_src = $attach_dir.$row->usericon; } // echo '<div><a href="'.$url.'">'.$row->unique_id.'</a></div>'; echo '<div>'.mb_strimwidth($row->title, 0, 40, '・・・').'</div>'; // タイトル30文字 echo '<div>'.$row->stamp.'</div>'; // スタンプ画像 foreach ($views as $view) { echo '<div>'.$view.'</div>'; // アップロードファイル } echo '<div>'.mb_strimwidth($row->text, 0, 40, '・・・').'</div>'; // 質問文 echo '<div><img src="'.$usericon_src.'"></div>'; // アイコン画像 echo '<div>'.mb_strimwidth($row->name, 0, 10, '・・・').'</div>'; // 名前 } ---- 変更点1。 $files = array_filter([$row->attach1, $row->attach2, $row->attach3]); array_filter()でファイル名が空のものを除外する。 変更点2。 $views = []; HTMLをため込む配列の初期化する。 変更点3。 $views[] = '<img style="height: 50px;" src="'.$attach_url.'">'; $views[] = '<video style="height: 50px;" src="'.$attach_url.'">'; $views[] = '<iframe style="height: 50px;" src="'.$attach_url.'"></iframe>'; HTMLを配列にため込む。 変更点4。 foreach ($views as $view) { echo '<div>'.$view.'</div>'; // アップロードファイル } ため込んだHTMLを出力する。
お礼
こちらが最新の回答になります。$upload_dir という関数が使われていないのを見てディレクトリのパスを取得できていないのではないかと思い、旧コードから足りないところを組み合わせてみたのですが変化がありませんでした。 dell_ok さんから見て不自然なところなどありますでしょうか? ※最新コード(bbs_que_answer.phpの14行目に追加) https://wandbox.org/permlink/B32bkgWGPwKPzRpZ ※旧コード https://wandbox.org/permlink/OsAh7ljsDtqRVW4w
補足
解説ありがとうございます、 foreach ($files as $file) で足りているものだと考えておりました。 配列をため込んで出力する必要があるんですね。 コードを修正してみたのですが、URLが表示されたままで他にも原因がありそうですもう少し調べてみます… ※最新コード https://wandbox.org/permlink/mTIEFJwUC9UoNcae ※回答画面 https://www.irasuto.cfbx.jp/%e5%9b%9e%e7%ad%94%e7%94%bb%e9%9d%a2/
- dell_OK
- ベストアンサー率13% (766/5720)
・何も表示されず解決策が分からない状態です 原因かどうかわかりませんが、 PHPコード内にHTMLコメントがあります。 <!-- ここから回答機能 --> 私の方ではここでエラーになって止まっています。 PHPコメントにしておいてください。
お礼
こちらが最新の回答になります。 フォーム等からデータを送信するといきなりオブジェクトになっているというアドバイスを頂き、受け取ったデータを確認するということで、 $rows = $wpdb->get_results($query); から var_dump($rows) で確認したところデータを取得することが出来ました。 $rows までは問題ないという事で $row のコードを見てみたところ、foreach ($rows as $row) { の終了タグの位置がずれており、foreachループが終わった後の処理で echo していたようです。 上記の問題を修正後に確認したところタイトル、スタンプ番号、アップロードファイルURL、質問文、アイコン画像、名前が表示されたのですが、アップロードファイルと画像が正常に表示されない原因が分かりません… 問題となりそうな部分はありますでしょうか? ある質問に対しての1つのレコードを表示するのであれば、クエリなどを見直す必要があるとアドバイスを頂いたのですが、意図が理解できず調べております… ※回答画面 https://www.irasuto.cfbx.jp/%e5%9b%9e%e7%ad%94%e7%94%bb%e9%9d%a2/ ※最新コード https://wandbox.org/permlink/sGpgZ8vLUBHbG0fQ
補足
アドバイスありがとうございます、修正いたしました。 引き続き原因を探してみます。 /* ここから回答に返信する機能 */
- dell_OK
- ベストアンサー率13% (766/5720)
・違和感のある個所などありますでしょうか? その1。 $rowが代入される前に使用されています。 $files = [$row->attach1, $row->attach2, $row->attach3]; foreach ($rows as $row) { foreach ($files as $file) { 書くならこうです。 foreach ($rows as $row) { $files = [$row->attach1, $row->attach2, $row->attach3]; foreach ($files as $file) { その2。 全角読点で句切られています。 echo '<div>' .$row->attach1、$row->attach2、$row->attach3.'</div>'; //アップロードファイル 書くならこうです。 echo '<div>' .$row->attach1.$row->attach2.$row->attach3.'</div>'; //アップロードファイル
補足
修正ありがとうございます。PHP構文チェッカーで調べたところ構文エラーが出ていたので下記のように修正したところエラーは消えたのですが、ピリオドの方が適切なんですね…覚えておきます。 echo '<div>' .$row->attach1 、 $row->attach2 、 $row->attach3.'</div>'; //アップロードファイル ↓ echo '<div>' .$row->attach1,$row->attach2,$row->attach3.'</div>'; //アップロードファイル $rowが代入される前に使用すると値が受け取れないのを忘れておりました訂正ありがとうございます。 ※最新コード https://wandbox.org/permlink/XZIDC4vzGy0wi2i6 コードエラーを修正してみたのですが原因が分からずアドバイスを頂きました。 ➀本当に送信しているのか ➁受け取ったデータは予定通りか ➂バリデートの結果は想定通りか ➀はデータベースにデータが登録されており、質問一覧表示画面にもコンテンツが表示されているため問題なさそうです。 ➁でつまずいております。受け取ったデータを確認するためにvar_dump();で値を確認しているのですが、何も表示されず解決策が分からない状態です… 受け取ったデータの確認をするためにはどうすればよいでしょうか?アドバイスお願い致します。 var_dump($row->title); var_dump($row->stamp); var_dump($row->attach1.$row->attach2.$row->attach3); var_dump($row->text); var_dump($usericon_src); var_dump($row->name); var_dump($wpdb->get_results($query));
- dell_OK
- ベストアンサー率13% (766/5720)
・回答画面(bbs_que_answer.php)の 57行目以前のコードについてお聞きしたいのですが、データベースから質問内容を表示するコードを書いていて、ダミー画像とタイトルのみ表示されております。 いただいた最新コードではエラーになって何も表示されないようです。 質問内容を表示する方法は以前 bbs_quest_view.php でやったと思いますが、その時のコードを持っていれば参考にしてみてください。
補足
回答ありがとうございます、bbs_quest_view.php を参考にコードを確認してみたのですが原因が分かりません… dell_ok さんから見て違和感のある個所などありますでしょうか? ※旧コード https://wandbox.org/permlink/IMPkdNPh1AYtkOFG ※現在のコード https://wandbox.org/permlink/FnCFlYOrj5RupxII
- dell_OK
- ベストアンサー率13% (766/5720)
・動画が無い場合ということで totalSlides < 0 としたのですが、確定している場合は == を使う方が良いのでしょうか? そうではありません。 totalSlides < 0 この条件を満たすのは totalSlides が -1 以下です。 const totalSlides = lists.length; totalSlides は lists.length なので lists の要素数になります。 どのようなHTMLを記述しても要素数がマイナスになることはありません。
お礼
回答画面(bbs_que_answer.php)の 57行目以前のコードについてお聞きしたいのですが、データベースから質問内容を表示するコードを書いていて、ダミー画像とタイトルのみ表示されております。 タイトル、スタンプ画像、アップロードファイル、質問内容、アイコン画像、名前を表示したい場合、どのように修正すれば良いでしょうか? 回答機能に関するコードを削除してみたのですが、変化がなくどの部分が間違えているのか分からない為アドバイスお願い致します。 ※最新コード https://wandbox.org/permlink/FnCFlYOrj5RupxII ※回答画面 https://www.irasuto.cfbx.jp/%e5%9b%9e%e7%ad%94%e7%94%bb%e9%9d%a2/
補足
解説ありがとうございます、要素数がマイナス以下になることがないため < を使わないのですね覚えておきます。
- dell_OK
- ベストアンサー率13% (766/5720)
・こちらの方法で問題はありますでしょうか? 問題ありますね。 if (totalSlides < 0) { elm.classList.remove("slide"); } totalSlidesの最小値は0です。 書くとしたら totalSlides == 0 です。 elmはどこにも定義されていません。 slideのクラスもどこにも登場していません。 ・初めは PHP でコードを考えてみたのですが、データベースから動画が投稿されているか調べる必要がある為 それはすでにやっていることです。 スライドは最初に一度だけ表示するのでPHPでいいということにしました。 その時にデータを読み込んでいます。 $sql = "SELECT * FROM sortable WHERE attach1 LIKE '%.mp4' ORDER BY RAND() LIMIT 5"; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); データがなかった場合、$rowsは要素数ゼロの配列になっています。 carousel-areaの高さをゼロにする方法でしたらこうなります。 ---- if (empty($rows)) { $carousel_area_style = 'height:0;'; } else { $carousel_area_style = ''; } 省略 <div class="carousel-area" style="<?php echo $carousel_area_style; ?>"> ----
補足
Q.問題ありますね。 if (totalSlides < 0) { elm.classList.remove("slide"); } totalSlidesの最小値は0です。 書くとしたら totalSlides == 0 です。 elmはどこにも定義されていません。 slideのクラスもどこにも登場していません。 A.回答ありがとうございます、動画が無い場合ということで totalSlides < 0 としたのですが、確定している場合は == を使う方が良いのでしょうか? コードを修正してみました。 if (totalSlides == 0) { slide.classList.remove("carousel"); } Q.スライドは最初に一度だけ表示するのでPHPでいいということにしました。 その時にデータを読み込んでいます。 $sql = "SELECT * FROM sortable WHERE attach1 LIKE '%.mp4' ORDER BY RAND() LIMIT 5"; $query = $wpdb->prepare($sql); $rows = $wpdb->get_results($query); A.解説ありがとうございます、$rows は数が決まっていないので別の方法でカウントするものだと思っておりました… ※最新コード(bbs_que_list.phpの13行目に追加いたしました) https://wandbox.org/permlink/W8pBND80qSP8g1Fp
- dell_OK
- ベストアンサー率13% (766/5720)
・echo '<div>'.' 略 '</div>'; の形で表示させたいのですが echo '<div><img src="'.$usericon_src.'"></div>';
補足
回答ありがとうございます、1つでまとめられるんですね勉強になりました。 ※修正後のコード https://wandbox.org/permlink/lxGIG0d8hzFhSC9B
- dell_OK
- ベストアンサー率13% (766/5720)
・回答画面のデザインについて質問画面のように回答機能で HTMLの書き換えを行った場合に負荷がかかってしまうのではないか どのような負荷を想像されているのかわかりませんが、問題になるような負荷はかからないと思います。
補足
回答ありがとうございます、確認画面を設ける形で考えてみます。
お礼
回答ありがとうございます、返事が遅れてしまい申し訳ありません。 1つ問題がありまして、通常でインストールした場合ファイルやフォルダの中のソースファイルを開くことが出来ません。 フォルダやファイルから開く必要はないのでしょうか? 質問の期限が切れてしまったので下記リンクからアドバイス宜しくお願い致します。 ※新しい質問 https://okwave.jp/qa/q10297398.html