programing0613
@programing0613

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

JavaScriptからphpへの値の受け渡し方法がわかりません

解決したいこと

PHPファイルに2つの画像があり、片方の画像をクリックするとPHPの変数$valueに1が入り、もう片方のボタンを押すと2が入るという処理を行いたいです。

そこで、Javascriptの変数valueに入れた値を、PHPの変数$valueで受け取りたいのですがなかなかうまくいきません。

何かいい方法はないでしょうか。

該当するソースコード

const star_a = document.querySelector('.star_a');
const star_b = document.querySelector('.star_b');

star_a.addEventListener('click', () => {
    let value = 1;
})
star_b.addEventListener('click', () => {
    let value = 2;
})

//valueの中身をPHPの変数に入れる処理をしたい
<?php

$value = //JavaScriptから送られてきた値を受け取る処理をしたい

?>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>アップロードフォーム</title>
  </head>

  <body>
    <div class="star-box-a">
        <div class="star-inner-box">
            <img src="./img/icon/no fill star.png" alt="NoImage" class="star_a">
            <img src="./img/icon/no fill star.png" alt="NoImage" class="star_b">
        </div>
    </div>
  </body>
0

1Answer

基本的にクリック駆動のJavaScriptはクライアントサイドでのみ動作する一方,PHPはサーバーサイドでのみ動作するため,PHP側では動的な処理がほとんど行えないことに留意してください.

Webページの一部分を動的に変更するために,ページそのものをリクエストしなおす行為は,基本的には必要のない行為であると考えられます.
実装したい動作が本当にサーバーサイドでの処理を必要とするのかどうか,事前に整理することを推奨します.

サーバーとクライアントで値の受け渡しが必要な場合には,任意のPHPファイルを適当に配置して,Web APIのように使用することができます.

$_GETを見て$valueを受け渡しするようなこともできますが,先述の通り基本的には必要がないものという前提で設計すべきです.

1Like

Comments

  1. @programing0613

    Questioner

    ご返信ありがとうございます。
    $value受け取った値を参照してデータベースの操作を行いたいので、この2つのファイル間で値の受け渡しを行いたいと考えております。
    ただAPIの知識がほとんどないため、よろしければ2つのファイル間で受け渡しを行う方法を具体的に教えていただけないでしょうか。
  2. WebページからPHPへは,適当なformを用意すればデータを送信できます.

    https://www.php.net/manual/ja/tutorial.forms.php

    あるいはJavaScriptで同等のリクエストを生成してください.

    PHP上では$_GETや$_POSTでクライアントからのデータを受け取れるので,これをもとにデータベースにクエリを投げてやれば良いです.インジェクション対策等は忘れずに行ってください.

    https://qiita.com/mpyw/items/b00b72c5c95aac573b71

    クライアントサイドJavaScriptはPHPが行う動作を関知できないため,ページを表示するためのPHPにデータを渡す場合は,ページが表示する内容についてPHPが責任を持つことになります.

Your answer might help someone💌