+ JavaScript の質問用スレッド vol.124 +

レス数が900を超えています。1000を超えると表示できなくなるよ。
2021/11/10(水) 15:24:24.80ID:jxD2VXPG0
JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-6のテンプレを読んだ上で質問してください。次スレは>>950>>2のテンプレ案(本スレで改善案があれば考慮)を元に立ててください

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) ライブラリ関連の質問は禁止です。関連スレにあるライブラリ質問スレで質問して下さい。
(10) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。

※前スレ
+ JavaScript の質問用スレッド vol.123 +
https://mevius.5ch.net/test/read.cgi/tech/1491143438/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:: EXT was configured
2022/07/03(日) 23:26:54.42ID:C1pvOjRy0
AWS Lambda/SNS, Ruby など、サーバーが無いと無理
2022/07/03(日) 23:41:06.22ID:W01+4hlo0
無理といわれてるが、SmtpJSでは不可能なのか
まあ、俺もクライアントサイドでやろうとは思わんが
2022/07/03(日) 23:44:24.18ID:QHM3Cg280
ブラウザ上のjavascriptから直にメールを送る機能はないので
822のqiitaで紹介されてるSmtpJSはSmtpJSのサーバーに通常のフォームデータとしてPOSTしてそのサーバーがメール送信を肩代わりしてくれる
信用できないなら自分でサーバーサイドもどうにかする
2022/07/03(日) 23:55:04.52ID:W01+4hlo0
SMTPサーバーが必要なのは>>822の通り、理解してる
最も、質問者はずっとスルーしてるが
828メールの質問者@時の旅人 (ワッチョイ 7568-kc9T [112.68.214.52])
垢版 |
2022/07/04(月) 00:11:28.80ID:rXJjm3cQ0
皆さま、ご教示ありがとうございます。
smtp.jsを使い、SMTPサーバーはsmtp.jsで紹介されてるSMTPを使用。

試してみたのですが、うまく動かせておりません。
メールは、サーバーサイドからやるのがベターですよね、やっぱり。。
829デフォルトの名無しさん (スップ Sd12-WKon [1.75.228.186])
垢版 |
2022/07/04(月) 06:59:27.99ID:eZVYpHVcd
var yyy =~/g;
var mmm = "$1~”;
aaa[0].innerHTML = aaa_html.replace(yyy, mmm);


で指定する$1の部分は、mmmの変数で指定するか、
複数の変数を埋めるにはどうしたら良いですか?
ようするにyyy以外の変数も埋め込めたい。
2022/07/04(月) 07:44:51.83ID:158REP8JM
>>829
マッチ結果とは無関係の変数を使いたいってことなら、普通に変数を連結するなりテンプレートリテラルで表現したりすればOK
ある程度複雑なことをするつもりなら、別途置換処理用の関数を定義した上でreplace()の第二引数に渡した方が読みやすくなるかも(当然ながら「適切な名付け」が前提)

innerHTMLを使っている点については、あえて何も言わないでおく
2022/07/04(月) 08:16:00.18ID:X+I6pApT0
>>829
+で結合して代入
832デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.72.72])
垢版 |
2022/07/07(木) 08:46:34.07ID:hekaiUDAa
年月を設定した2段階プルダウンを作成しているのですが、JAVAを深く触ったことがない為アドバイス頂きたいです。
wordpressのデータベースからSQLを使います。Java scriptでプルダウン作成。

設計について
Java script→JSONで$(配列)に変える→archive.php→SQL→JSON→Java scriptという流れで良いでしょうか?
2022/07/07(木) 08:56:00.01ID:sGvZpzJo0
>>832
> JAVAを深く触ったことがない

Java関係ある?

> Java script→JSONで$(配列)に変える

$(配列)とは?
834デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.72.72])
垢版 |
2022/07/07(木) 09:00:19.50ID:hekaiUDAa
>>833
JAVAは変換ミスです申し訳ありません。
option valueの値をそのままSQLに渡す事が出来ないとアドバイスもらいましたので、何とかSQLに渡す方法が知りたいです。
また渡したものと一致するデータをSQLで選別してJava scriptに返す必要があります。

コードは以下になります。
<option value="">年を選択</option>
<option value="op-a">2021</option>
<option value="op-b">2022</option>
</select>

<select name="op-a">
<option value="">2021グループから選択</option>
<option value="op-a-1">1</option>
<option value="op-a-2">2</option>
<option value="op-a-3">3</option>
<option value="op-a-4">4</option>
<option value="op-a-5">5</option>
<option value="op-a-6">6</option>
<option value="op-a-7">7</option>
<option value="op-a-8">8</option>
<option value="op-a-9">9</option>
<option value="op-a-10">10</option>
<option value="op-a-11">11</option>
<option value="op-a-12">12</option>
</select>
835デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.72.72])
垢版 |
2022/07/07(木) 09:04:47.61ID:hekaiUDAa
>>833
option valueの値をJSONを使い配列に変えた上でSQLに渡すことを考えておりました。
2022/07/07(木) 09:57:05.64ID:D+rw6Zs6M
>>832
一旦落ち着いて、スレタイと>>1のテンプレを熟読しよう

その上で、一連のデータフロー(処理順序と各処理間のインタフェース)の中で「JavaScriptコードに担わせたい機能」をあらかじめ明確化した上で、「同機能の実装上の不明点・疑問点」を質問しよう
2022/07/07(木) 12:45:33.04ID:ywWcbjyb0
例えば、Ruby on Rails みたいなMVC フレームワークなら、

<%= f.select :pet, [["犬", 1], ["猫", 2]], include_blank: "選択して下さい" %>

こういうselect ボックスで、猫を選べば、
データベース(DB)のpet列が、2 で保存される

多分フォーム送信で、value="2" がサーバーへ送られて、
Railsによって、自動的に整数型の2に変換されて、DBへ保存される

このように、Railsのようなフレームワークを使うと、
DBのテーブル構築とか、HTMLからDBの各列への対応付けも全自動

SQL 文を文字列で、自分で作ったりしない
2022/07/07(木) 15:15:03.26ID:1RhWyS0vd
JavaScriptってクラス宣言も関数使ってるらしいけど、関数型言語なの?
839デフォルトの名無しさん (アウアウウー Sa4d-9ZeA [106.181.212.40])
垢版 |
2022/07/07(木) 16:06:18.67ID:8vD+8lwxa
return {};
2022/07/07(木) 21:11:15.45ID:/kE53AS+0
>>838
もとはschemeを参考にした関数型言語だったのをむりやり関数型言語っぽく仕立てたから
クロージャや部分適用は普通に使えるのに対し、thisやコンストラクタやメソッドはなんか
残念な仕様になった。
2022/07/07(木) 21:11:55.11ID:/kE53AS+0
むりやりオブジェクト指向言語っぽく
だな。
842デフォルトの名無しさん (オッペケ Srf9-cwmE [126.254.152.249])
垢版 |
2022/07/07(木) 21:39:11.18ID:TVMHA1kRr
console.logが1つしか表示されないんですが、何が原因なんでしょうか?
//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};

//オブジェクトをまとめる
let allobj = Object.assign(objA, objB);

//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
let result = JSON.stringify(objA,objB);
//変数「result」に代入
console.log(result);
843デフォルトの名無しさん (オッペケ Srf9-cwmE [126.254.152.249])
垢版 |
2022/07/07(木) 21:40:14.54ID:TVMHA1kRr
JSON.stringifyをまとめても、let result = JSON.stringify(allobj);

console.logを2つにわけても2021のみ表示されて、2022がどうしても表示されないのですが、何か考えられる原因はありますでしょうか?console.log=JSON.stringify(objA);console.log=JSON.stringify(objB);
2022/07/07(木) 21:56:36.52ID:E4BLf8JX0
>>840
ありがとう、理解しました
いちいちコンストラクタとか宣言する気起きなかったから良かった
2022/07/07(木) 22:25:23.38ID:1JorfJ+H0
>>843
Object.assignは1番目の引数オブジェクトを直に2番目以降のオブジェクトのキー・値で上書きするものですよ

もしかして
let allobj = [ objA, objB ];
let result = JSON.stringify(allobj);
846デフォルトの名無しさん (オッペケ Srf9-cwmE [126.254.152.249])
垢版 |
2022/07/07(木) 23:19:17.49ID:TVMHA1kRr
下記のようにしたら表示されるんですが、変数「result」に代入しておく必要があるため困っております。
let result =にobjA,objB別々にすることはできますでしょうか?

//オブジェクトを定義するvarは受け取る際にエラーが起きそう再宣言のできるletを選択
let objA = {
// プロパティを定義
// キー: 値
year: "2021",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};
let objB = {
// プロパティを定義
// キー: 値
year: "2022",
month: "1,2,3,4,5,6,7,8,9,10,11,12",
};

//JSON.stringifyとは、JavaScriptのオブジェクトや値などのデータをJSONに変換するための関数
console.log(JSON.stringify(objA));console.log(JSON.stringify(objB));
2022/07/08(金) 00:03:23.67ID:PFDPpPXI0
何がやりたいのかサッパリわからん
2022/07/08(金) 00:18:12.73ID:hP3rbItM0
>>842-843,846
マルチポストか
https://teratail.com/questions/u195apv1x9xtdv
せめてマルチポストのマナーを守れ
https://ja.meta.stackoverflow.com/questions/2418/

>>832,834-835もあなただと思うが、JavaScriptを学習する前にPHPの入門書買うのが先だと思うぞ
form送信するのなら、JacaScriptもJSONも必要ない
PHP側でGETもしくはPOSTでパラメータを受け取れば良い
PHPにはパラメータを配列で受け取る仕組みがあるからな

やりたいことから逆引きするのは止めて、入門書で基礎を固めるべき
回答もらっても理解できんのなら意味がない
回答もらえるだけの明確な質問内容を書けないのなら意味がない
突っ込みどころが多すぎる
849デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.74.59])
垢版 |
2022/07/08(金) 00:57:16.92ID:baa8V49za
>>848
アドバイスありがとうございます
マルチポストはすみません。

form通信ではなくSQLを使いアーカイブを表示させるためにプルダウンを作成しています。

Java scriptのオブジェクトでは配列を渡せないのでJSONでシリアライズしてPHPでデコードしてそれをSQLに渡します。
渡されたものから該当の記事を出力させ、PHPで JSONシリアライズした後にAJAXでJava scriptに送り返します。
2022/07/08(金) 01:59:04.54ID:FyHcSsdCr
teratailでのやり取りを見てても根本的に理解が足りてないのがよくわかる
プログラミング始めてどれぐらいか分からんけどもPHPとJavaScriptを組み合わせてどうこうするにはまだ早い気がする
2022/07/08(金) 09:14:14.28ID:XXTPwuyz0
>>832見てると、やり方調べてるうちに、不明点の迷路にハマってる気がする

まずは最低限の実装から順番に理解していかないと、解決するものもしないぞ
①WordPressのフロントエンド側からSQLを呼び出す
 ※SQLの内容は固定、ボタン一つで1つ結果が返ってくれば良い
 ⇒これだけならWordPressのコミュニティやサポートに聞けば解答が来る
②WordPressのフロントエンドからプルダウン経由(動的に値を変えながら)
  SQLを呼び出す
  ⇒これもWordPressのコミュニティで意見聞いてから、JavaScript側での実装を考えて確認
③以降も同じように実装領域に合わせて確認していく

プログラミングだといきなり最終系考えても
初心者だと実装の過程が滅茶苦茶になるから、まずはシンプルに考えた方が良い
852デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.62.104])
垢版 |
2022/07/08(金) 14:59:56.45ID:XF8TEdVua
>>851
アドバイスありがとうございます。
objAとobjBをボタンとしてクリックさせて、それをPHP側で$識別させることになるのでしょうか?

func btnCliked(
)
let objA=[{year:2021,month:[1,2,3,4,5,6,7,8,9,10,11,12],
}]
2022/07/08(金) 15:38:46.43ID:NjcH7rpX0
>>849
謝罪するならすべきことをやってくれ
https://ja.meta.stackoverflow.com/questions/2418/

form送信しないならどうやってデータを送る?
select要素時点で文字列になってるのに、なぜJSONに変換する必要がある?
PHPでどうやって受け取る?

この辺、ちゃんと質問に起こせてないから、質問内容が伝わらなかったり、基礎的な知識不足を指摘されるんだと思うがな
2022/07/08(金) 16:38:30.47ID:XXTPwuyz0
>>852
イメージ的にはそんな感じ
ただ>>853も言っているように、フロントエンド(HTML/JavaScript)とバックエンド(PHP)で
どうやってデータの受け渡しをしているのか、っていうのを理解できてないから
本当に入門書読んで勉強し直した方が良いと思うぞ

まずは本当にシンプルに
①Wordpress上でボタンを押して、固定値で値をPHP側に渡す(formのPOST通信)をする
②PHP側で値の受け取りが出来たかを確認する
③確認が出来たら、PHP側からJavaScript側に返り値を固定値で渡す
④WordPress上に返ってきた値を表示できるか確認する

とりあえず最低限の基礎的な動作を実装して、拡張するっていうやり方しないと
この先も大変な事になるぞ
855デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.60.34])
垢版 |
2022/07/08(金) 16:45:31.09ID:FYSMny9Ka
>>853
シリアライズするのはJavascript側から配列を渡せないからですよね?
PHPではJSONファイルをnode.jsで作成してそれをPHP側で取得→デコードしてSQLに渡す?でしょうか?
856デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.60.55])
垢版 |
2022/07/08(金) 16:52:48.63ID:IP56XoY2a
>>854
アドバイスありがとうございます。
たしかにSQLで記事の検索をかけるならわざわざJSONを使う必要ないですかね
2022/07/08(金) 17:48:25.41ID:BhrsH9/Er
>>855
これそもそもなんで配列を渡したいの?
見たところ年も月も複数選択できるわけじゃなさそうで「2022/6」とか渡せば済む話じゃないの?
858デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.60.152])
垢版 |
2022/07/08(金) 18:08:14.67ID:iDDaPeaDa
>>857
SQLから該当記事の検索をさせたいからです

RSSとSQLで交互にレイアウトを出力させているためSQLにどうしても配列を渡したいです
2022/07/08(金) 18:09:52.75ID:RjBHtpmod
PHPはめちゃくちゃHTMLやMySQLと親和性高いからJSは足りない部分補うのが主になるかな
多分他のサーバーサイド言語だとJSの活躍の場広がるんだろう
2022/07/08(金) 18:10:43.61ID:XXTPwuyz0
>>856
バックエンド側をどうやって実装するかにもよるけど
例えばSQLに必要な検索キーが1つだけなら、単体の変数でも良いし
複数あっても。渡し方は極端に言ったら自由だぞ?

とりあえず動かすだけなら、複数の値をカンマ区切りの文字列として渡して
PHP側でカンマでsplitかけたら配列として使えるようになるから
それこからSQL文に埋め込むとかでも良いし……

それこそJSON.stringifyとかも、JavaScript上の辞書とか配列を
JSONとして対応できるように文字列に変換してるっていう感じだから
応用みたいな使い方だな(PHP側でunserializeすれば辞書とか配列に復元できる)
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
2022/07/08(金) 18:16:53.33ID:oRgFDmccr
>>858
答えになってない
2022/6ではSQLで該当記事を検索できない理由を書いてくれないと
あと後半も意味不明
2022/07/08(金) 20:40:22.78ID:NjcH7rpX0
>>855
1, シリアライズする理由は何?
2. どうやってシリアライズしたデータをPHPに送るの?
3. マルチポストは完全無視?
2022/07/08(金) 20:46:54.00ID:NjcH7rpX0
>>855
> PHPではJSONファイルをnode.jsで作成してそれをPHP側で取得→デコードしてSQLに渡す?でしょうか?

そもそも、これサーバサイド側の処理になってる
クライアントサイドのJSとサーバサイドのPHPを連携させる話じなかったの?
Node.jsが出てくる理由も謎
2022/07/08(金) 21:15:58.38ID:vEJej2ti0
マルチポスト警察ウザ。
865デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.60.222])
垢版 |
2022/07/08(金) 22:52:34.37ID:X5TUJXwua
これあとでアドバイス貰ったんですがwordpressのSQLにJavascriptを流すって出来ないんですね
フロントデータの送受信が出来ないようなので、という事はwordpressでJavascriptは使えないってことでしょうか…
2022/07/08(金) 23:02:23.38ID:8WwUcj98M
いよいよ何を言ってるかわかんねえ
867デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.61.190])
垢版 |
2022/07/08(金) 23:07:34.08ID:VQz+8WUxa
>>866
wordpressのJSONをwordpressの SQLに流す事は不可能なようです。
どうやら過去にウイルスを流された事があるらしくAPI通信が遮断されているようです。

jQuearyなどでファイルをクッションにして無理やり送る事は出来ないんですかね…
2022/07/08(金) 23:19:43.07ID:8WwUcj98M
>>867
SQLにJSONを流すってのがどういうことなのか具体的に説明してくれ
よそでアドバイスもらったんならそれもついでに示せ
あと上の方でもらってるレスをほったらかしにしないで返信しなよ
869デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.63.141])
垢版 |
2022/07/08(金) 23:26:57.20ID:rnkihMoNa
>>868
申し訳ありません。
2段階式年月プルダウンをfront-page.phpに設置しております。
そこからarchive.phpのデータベース(SQL)に送りたいです。
プルダウンでクリックされた月を元にSQLに渡したいのですが、片方がJavascriptである場合、wordpressはフロントデータの送受信が出来ない為成立しません。

これを回避する方法が知りたいです。
2022/07/08(金) 23:33:14.22ID:v6YmQ/+dM
会話も噛み合わないし最早全コード晒した方がはえーぞ
現状秘密にするほどの価値も無いだろうし
871デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.61.244])
垢版 |
2022/07/08(金) 23:36:09.51ID:F1gZYOBca
>>860
ボタンクリックが動的だとすると、JavascriptやjQueryから信号を出さないといけない気がするんですが、両方PHPで2段階プルダウンアーカイブ機能を作る事はできるのでしょうか?
872デフォルトの名無しさん (アウアウウー Sa4d-uVV9 [106.146.61.244])
垢版 |
2022/07/08(金) 23:36:46.39ID:F1gZYOBca
>>870
wandboxでコードを書いて載せます
2022/07/08(金) 23:37:21.48ID:8WwUcj98M
>>869
>片方がJavascriptである場合、wordpressはフロントデータの送受信が出来ない為成立しません。
これが何言ってるかわからん
具体的なphpなりSQLなりのコードも出してみなよ
もう完全にスレ違いだけど
874デフォルトの名無しさん (オッペケ Srf9-cwmE [126.33.108.116])
垢版 |
2022/07/08(金) 23:44:33.83ID:LpFPYqzOr
https://wandbox.org/permlink/Fal7HBABk3wT4fpd
archive.phpの170行目から2段階式プルダウン、339行目からSQLになります。
875デフォルトの名無しさん (オッペケ Srf9-cwmE [126.33.108.116])
垢版 |
2022/07/08(金) 23:52:24.56ID:LpFPYqzOr
https://wandbox.org/permlink/ymaf7S1uQ92PbiP8
scriptエラーになってるので変更しました。170~270が2段階式プルダウンです。
2022/07/09(土) 00:02:51.10ID:R84UyFQQM
>>875
SQLは340行目だけ?
これのどこに画面で選択した年と月が関係するの?
877デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.77])
垢版 |
2022/07/09(土) 00:06:59.88ID:cNMjwuhqa
>>876
1.選択した年と月をJSONにして文字にシリアライズします

2.PHP側でJSONでシリアライズします

3.SQLに配列を渡します

4.Javascript側で結果をAJAXで受け取ります

これでプルダウン機能が動作します。
何か間違ってる事はありますでしょうか?
2022/07/09(土) 00:09:11.44ID:5lHQxv9F0
>>877
1と2で合計2回シリアライズしてるのが意味不明
2022/07/09(土) 00:11:14.44ID:R84UyFQQM
>>877
質問を変えるわ
>3.SQLに配列を渡します
このSQLで何を取得するつもりなの?
880デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.252])
垢版 |
2022/07/09(土) 00:18:11.07ID:iVSPF+ILa
>>878
シリアライズではなく正確にはデコードですかね

$変数に変えてからSQLに渡します
881デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.252])
垢版 |
2022/07/09(土) 00:18:52.21ID:iVSPF+ILa
>>879
SQLでwordpressのデータベースから該当する記事を出力してPHPで表示したいです
2022/07/09(土) 00:29:37.92ID:R84UyFQQM
>>881
該当する記事を取得するための検索条件は?
今は無条件でページングしてるだけに見えるけど
2022/07/09(土) 00:33:28.58ID:5lHQxv9F0
>>880
やはり…そうか
配列にしたいからJSONにしてるのか?
884デフォルトの名無しさん (オッペケ Srdd-aP0v [126.33.108.116])
垢版 |
2022/07/09(土) 00:44:35.23ID:ifkPFCzpr
>>882
もとはこちらでした。SQLに必死でこーどがきえております。
https://wandbox.org/permlink/fhJ2DJMkP50tbNRn
885デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.155])
垢版 |
2022/07/09(土) 00:45:00.56ID:9ZaaLUbUa
>>882
条件は日付と更新日です
日付だけでも良いのですが
886デフォルトの名無しさん (オッペケ Srdd-aP0v [126.33.108.116])
垢版 |
2022/07/09(土) 00:46:14.61ID:ifkPFCzpr
archive.phpの254行目からSQLを組んでいます。
887デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.154])
垢版 |
2022/07/09(土) 00:47:27.37ID:E6hL7TiQa
>>883
配列にしたいからですね
2022/07/09(土) 00:57:10.79ID:R84UyFQQM
>>885
>AND (post.post_date LIKE %s OR post.post_modified LIKE %s )
この部分?
これに配列渡すつもりでいるの?
889デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.198])
垢版 |
2022/07/09(土) 01:03:38.45ID:TjvgNrJja
>>888
$query = $wpdb->prepare($sql, "%$search_query%", "%$search_query%");

配列はこの部分ですね
890デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.198])
垢版 |
2022/07/09(土) 01:04:31.60ID:TjvgNrJja
ANDはwordpressのテーブルからカラムで条件を引いてます
2022/07/09(土) 01:08:11.05ID:R84UyFQQM
>>889
$search_query変数が配列?
$search_queryに具体的にどんな値が入ってる想定なのか書いてみなよ
892デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.63.239])
垢版 |
2022/07/09(土) 01:20:47.68ID:R5/OxtTaa
>>891
よく考えてみると$date_queryかもしれません。
検索は出てきたんですが、アーカイブが出てこなかったためsearch_queryにしてましたが…
2022/07/09(土) 01:26:28.50ID:R84UyFQQM
>>892
変数名はこの際どうでもいいよ
SQLにどんな値を渡したいのかが知りたいんだから
894デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.61.156])
垢版 |
2022/07/09(土) 01:28:08.76ID:O/RwhBiHa
php get_search_form(); で貰ったワードから検索ページのSQLは出力されています

アーカイブページもおそらくwordpressの既存のアーカイブをクリックしてSQLに繋がるはずです

この配列の渡し方もよく分かってない状態です…
2022/07/09(土) 01:31:51.09ID:5lHQxv9F0
>>869,877,880,887
要件
- front-page.phpにselect要素で年月のブルダウンメニュー設置
- front-page.phpの入力値をAjaxでarchive.phpにリクエスト
- archive.phpでパラメータを配列で受け取る

実装
1. front-page.php: のselect要素で配列にしたいもののname属性値に [] をつけておく
2. front-page.php: Fetch APIでFormDataをarchive.phpにリクエスト
3. archive.php: 受け取った配列を元にSQL文生成→クエリを発行→結果をJSONで出力
4. front-page.php: JSON.parse()して後続処理

SQLの下りはPHPの処理なので、ここでは言及しない
2022/07/09(土) 01:39:36.21ID:R84UyFQQM
>>894
検索ページのSQLってのはsearch.phpの258行目からのこと?
こっちは$search_query変数はただの文字列でキーワード検索してるんじゃないの?
897デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.61.98])
垢版 |
2022/07/09(土) 01:45:04.90ID:GEdQauyNa
>>896
そうですね…

という事は$date_query=配列or変数で渡せば過去の記事をSQLで検索する仕組みになりますかね…
898デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.164])
垢版 |
2022/07/09(土) 01:52:27.26ID:oGz1rKt0a
>>895
- front-page.phpの入力値をAjaxでarchive.phpにリクエスト

についてお聞きしたいんですが、これはフロントデータの送受信にあたらないのでしょうか?
wordpressはJavascriptとjQueryから受け取ることも渡すことも出来ません
2022/07/09(土) 01:57:57.75ID:R84UyFQQM
>>897
だからなんで配列にこだわるの?
"%$search_query%"って使ってる以上配列は受けとれんでしょ
文字列変数で"%2021-01%"とかではあかんの?
900デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.82])
垢版 |
2022/07/09(土) 02:01:20.50ID:bBBYb9fqa
>>899
いえ配列である必要はないですが、SQLで検索する際に文字は無理だと思うので、一回デコードしてデータにする必要があると思います…
2022/07/09(土) 02:02:16.29ID:5lHQxv9F0
>>898
勿論、フロントデータだ
HTMLに書かれたselect要素に入力されたデータはクライアントサイドの情報だからな

WordPressがフロントデータを受信できないのなら、プルダウンメニューに入力された情報をWordPressで受け取る手段がないことになる
ブラウザを使えないようだから、サーバにtxtファイルをアップロードするとか、手段を変えるしかないのでは?
902デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.169])
垢版 |
2022/07/09(土) 02:07:50.54ID:fbyrksNGa
>>901
やはり1回クッションを挟む必要があるんですよね?

ただ厄介なのはSQLからも送れないことですねwordpressの SQLなので記事の情報を全てファイルに送ってそれを再度Javascriptに送り返す必要があります
903デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.169])
垢版 |
2022/07/09(土) 02:09:25.27ID:fbyrksNGa
皆さんアドバイスありがとうございます
とても勉強になりました
2022/07/09(土) 02:09:27.83ID:R84UyFQQM
>>900
>SQLで検索する際に文字は無理だと思うので
何を言いたいのか分からん
post.post_date LIKE '2021-01%'
って検索条件にすれば2021年1月の記事は検索できるんじゃないの?
905デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.169])
垢版 |
2022/07/09(土) 02:11:17.73ID:fbyrksNGa
>>904
直打ちは考えた事がなかったです…
たしかに可能かもしれません
2022/07/09(土) 02:13:21.75ID:R84UyFQQM
>>905
直打ちしろとは言ってない
文字列変数で済むだろってこと
907デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.60.169])
垢版 |
2022/07/09(土) 02:14:16.13ID:fbyrksNGa
>>906
文字列変数ですね、失礼致しました。
2022/07/09(土) 02:16:02.68ID:R84UyFQQM
あと君さ、物を知らなくて教えを乞う立場なのに~出来ません、~必要がありますとか断定形使うのやめようよ
君の知らない解決方法なんていくらでもある
2022/07/09(土) 02:21:08.51ID:5lHQxv9F0
>>902
1回クッションとは?

フロントデータを受け付けないとは、通信を受け付けないということ
そんなWordPressがあるなら、ブラウザでWordPressを閲覧することすらできない
前提がありえないと俺は思うけどね

あなたは通信周りの知識がかなり怪しい
PHPも明らかに基礎知識が不足してる
この課題は今すぐ解決は諦めて、入門書から始めるのが妥当なんじゃないと俺は思う
2022/07/09(土) 02:22:46.19ID:R84UyFQQM
>>907
で、SQLが配列やオブジェクトを受け取る必要がないなら画面からは年のselectから2021を、月のselectから1を渡せば済む話じゃないの?
911デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.145])
垢版 |
2022/07/09(土) 02:31:00.30ID:Wx4GDmQ6a
>>908
申し訳ありませんでした。
以後気をつけます。
912デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.145])
垢版 |
2022/07/09(土) 02:33:37.34ID:Wx4GDmQ6a
>>910
たしかに渡す時は簡単な処理で良くなりそうですね

逆に渡す時はファイルを経由してAJAXが必要になりそうですが
913デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.62.145])
垢版 |
2022/07/09(土) 02:34:45.13ID:Wx4GDmQ6a
>>909
外部のJavascriptとjQeary限定ですので内部データは受け付けてるのではないでしょうか
2022/07/09(土) 02:35:31.13ID:5lHQxv9F0
> wordpressはJavascriptとjQueryから受け取ることも渡すことも出来ません

これが真実なら、>>877のAjaxがそもそも不可能だし、なぜJavaScriptスレで質問してるんだ?、という話になる

>>912ではAjaxが実装可能かのように書いてるし、説明がちぐはぐ
2022/07/09(土) 02:36:16.13ID:R84UyFQQM
>>909
完全に同意する
プログラミング全般についてもググって言葉はあれこれ知ってるけど
知識として吸収できてなくてそれらが繋がってないと感じる
こちらから伝えてることも正しく理解できてないだろう

これ以上続けても得るものも少ないだろうし何よりスレ違いだしここまでにしとく
長々とレスしてしまって申し訳なかった
2022/07/09(土) 02:38:54.67ID:5lHQxv9F0
>>913
WordPressから見て、内部データといえるのは、サーバ上に置かれているデータだけ

HTML,JavaScriptは外部データ
ブラウザで入力される文字列も外部データ
2022/07/09(土) 02:41:49.97ID:5lHQxv9F0
>>915
俺もこの辺で引こうと思う
お疲れ様
918デフォルトの名無しさん (アウアウウー Sac1-dkZz [106.146.63.210])
垢版 |
2022/07/09(土) 02:48:31.51ID:KXWHUUgBa
>>916
朝起きてからwordpressの問い合わせフォーラムでもう少し詳しく聞いてみます
2022/07/09(土) 05:00:15.88ID:Eo+xJyold
完全にスレチ
2022/07/09(土) 08:04:40.38ID:/eREX8sAr
またあちこちに場違いで意味不明な質問をバラ撒いて場を荒らしていくのだろう
2022/07/09(土) 10:02:17.20ID:Ed2YpxlV0
プログラミングって「とりあえずやってみて、分からない所を調べる」
ってやり方すると信じられないぐらい余計に分からなくなるからな
体系的に一回勉強して全体のシステムイメージとか
実装のイメージとかがある程度掴まないとマジで意味不明な事をやりだす……
2022/07/09(土) 17:10:46.65ID:al4zTytR0
YouTube で有名な雑食系エンジニア・KENTA の初心者向けRuby on Rails サロンでは、
半年でポートフォリオを作って転職していく

KENTA は、PHP, Scala をオワコン認定した。
プロは今後、これらの言語で作らない

Rails以外では学習環境がないから、勉強できない。
本屋でWord Press の本を見たけど、ソースコードを書いているような本は無かった。
あるのはデザインの本ばかり

一方Railsなら、黒田努の3冊の本とか、パーフェクト Ruby on Rails、
Ruby on Rails 6 エンジニア養成読本とか、他の著者の本も何冊かある

Rails Guide, Rails チュートリアル、
YouTube のDean など一杯ある

KENTAのサロンには、日本6位の3千人が入っている。
1位はキングコング西野の数万人。
ガーシー・参政党なども、数万人ぐらいかな?
923デフォルトの名無しさん (ワッチョイ 7602-G37O [113.158.207.182])
垢版 |
2022/07/09(土) 20:22:33.93ID:pnXxhBAU0
なんやかんや言いながら、突き放さずに細かくアドバイスしてる諸兄の面倒見の良さにホッコリしたわw
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。