質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

button

HTMLで用いる<button>タグです。

Q&A

1回答

1572閲覧

ボタンを押されているならsqlを更新

退会済みユーザー

退会済みユーザー

総合スコア0

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

button

HTMLで用いる<button>タグです。

0グッド

0クリップ

投稿2020/09/22 03:54

オンラインクレーンゲームを現在作っております。
横移動 縦移動 ボタンという物を設置しており、そちらのボタンを押しているならsql上の button_status のカウントが1になるという物です。運営はボタンを押されている合図 (button_status が1になっている)を確認したらアームを動かすという物です。 又、ボタンを離された(押していない)場合は、 button_status を0にするという物です。
運営は button_statusが0 (ボタンが押されていない)ならアームを止めるという動作を行いたいです。

※筐体のアーム移動は手動です。モーターでの動作は少しづつ考えていきます。
※CLANE じゃなくて CRANE ではないのかと言われたことが過去在りますが、わざとCLANEにしております。
ボタンを押している
button_status を1に

ボタンを離している
button_status を0に

このような動作を行うコードを作ったのですが、動作しません。

html

1 2<!DOCTYPE html> 3<html> 4<head> 5 6 7<meta charset="utf-8"> 8<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> 9<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> 10<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> 11<script> 12function sound1() 13{ 14 // 縦移動 15 document.getElementById( 'sound-file' ).play() ; 16} 17 18function sound2() 19{ 20 // 横移動 21 document.getElementById( 'sound-file' ).play() ; 22} 23</script> 24<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> 25<style> 26.parent { 27 width: 100%; 28 display: flex; 29 display: flex; 30 justify-content: center; 31 align-items: center; 32} 33.child { 34 width: 100px; 35} 36 37iframe{ 38 overflow: hidden; 39} 40 41.buttonstyle{ 42 position: fixed; /* 要素の位置を固定する */ 43 bottom: 0; /* 基準の位置を画面の一番下に指定する */ 44 right: 0; /* 基準の位置を画面の一番右に指定する */ 45 width: 300px; /* 幅を指定する */ 46} 47 48 49 .html { 50 height: 150px; 51 overflow-y: scroll; 52 -ms-overflow-style: none; /* IE, Edge 対応 */ 53 scrollbar-width: none; /* Firefox 対応 */ 54 } 55 .html::-webkit-scrollbar { /* Chrome, Safari 対応 */ 56 display:none; 57 } 58 59</style> 60</head> 61<body> 62<font size="30"><h1 class="parent"><small> CLANE STAR ONLINE</small></h1></font> 63<hr> 64<?php 65 66 67 68 69$system_status_help = 0; 70 71//データベース接続 72$server = "****"; 73$userName = "****"; 74$password = ""; 75$dbName = "****"; 76 77$mysqli = new mysqli($server, $userName, $password,$dbName); 78 79if ($mysqli->connect_error){ 80 echo $mysqli->connect_error; 81 exit(); 82}else{ 83 $mysqli->set_charset("utf-8"); 84} 85 86$sql = "SELECT * FROM clane"; 87 88$result = $mysqli -> query($sql); 89 90//クエリー失敗 91if(!$result) { 92 echo $mysqli->error; 93 exit(); 94} 95 96//レコード件数 97$row_count = $result->num_rows; 98 99//連想配列で取得 100while($row = $result->fetch_array(MYSQLI_ASSOC)){ 101 $rows[] = $row; 102} 103 104//結果セットを解放 105$result->free(); 106 107 108?> 109<?php 110// ホームから受け取った台IDのデータを表示する 111 if (!empty($_GET["id"])){ 112 $system = null; 113 114// SELECT文を変数に格納 115$sql = "SELECT * FROM clane WHERE server_id =".$_GET['id']." AND system_status = 0"; 116// SQLステートメントを実行し、結果を変数に格納 117 118$stmt = $mysqli->query($sql); 119 $status = 0; 120 121 122 123 124 125 126// foreach文で配列の中身を一行ずつ出力 127foreach ($stmt as $row) { 128$system_status_help = true; 129} 130 131 132if($system_status_help == true){// SELECT文を変数に格納 133 $sql = "SELECT * FROM clane WHERE server_id = ".$_GET['id'].""; 134 // SQLステートメントを実行し、結果を変数に格納 135 136 $stmt = $mysqli->query($sql); 137 $status = 0; 138 // foreach文で配列の中身を一行ずつ出力 139 foreach ($stmt as $row) { 140 $status = 1; 141 // データベースのフィールド名で出力 142 echo "<title>CLANE STAR ONLINE |".$row['web_title']."</title>"; 143 ?> 144 145 <!--game system--> 146 <h3>1Play/<?php echo $row['prize_money']; ?>CP <?php echo $row['prize_setting'];?>設定</h3> 147 <div class="parent"> 148 <?php 149 // SELECT文を変数に格納 150 $sql = "SELECT * FROM clane WHERE server_id = ".$_GET['id'].""; 151 // SQLステートメントを実行し、結果を変数に格納 152 153 $stmt = $mysqli->query($sql); 154 155 // foreach文で配列の中身を一行ずつ出力 156 foreach ($stmt as $row) { 157 ?> 158 159 160 <div class="parent"> 161 <iframe scrolling="no" name="mannaka" src="http://192.168.11.4:8080/video" frameborder="0" width="600" height="490"></iframe> 162 </div> 163 <div class="parent"> 164 <iframe scrolling="no" name="mannaka" src="http://192.168.11.8:8080/video" frameborder="0" width="600" height="490"></iframe> 165 </div> 166 </div> 167 <font color="black"> 168 <div class="parent"> 169 <div class="card child" style="height: 30rem; width: 15rem;"> 170 <div class="bd-placeholder-img card mb-4"> 171 <img class="card-img-top" alt="Loading..." src="<?php echo $row['prize_image']; ?>" ></img> 172 <div class="card-body"> 173 <h5 class="card-title"><?php echo $row['prize_title']; ?></h5> 174 <p class="card-text"><?php echo $row['prize_text']; ?></p> 175 <?php if($row['prize_zaiko'] == 1){ 176 echo "<small>残り1個!</small>"; 177 }else{ 178 echo "<small>残り".$row['prize_zaiko']."個</small>"; 179 } 180 ?> 181 </div> 182 </div> 183 </div> 184 </font> 185 186 <div> 187<!-- 音声ファイルの読み込み 9〜10行目にURLを指定 --> 188<audio id="sound-file" preload="auto"> 189 <source src="audio/1.mp3" type="audio/mp3"> 190 <source src="audio/1.wav" type="audio/wav"> 191 <source src="audio/2.mp3" type="audio/mp3"> 192 <source src="audio/2.wav" type="audio/wav"> 193</audio> 194<button type="button" id="clane_1" onClick="sound1()" ><svg width="10em" height="10em" viewBox="0 0 16 16" class="bi bi-arrow-right-circle-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 195 <path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-11.5.5a.5.5 0 0 1 0-1h5.793L8.146 5.354a.5.5 0 1 1 .708-.708l3 3a.5.5 0 0 1 0 .708l-3 3a.5.5 0 0 1-.708-.708L10.293 8.5H4.5z"/> 196 </svg></button> 197 </div> 198 <div> 199 <button type="button" onClick="sound2()" > 200 <svg width="10em" height="10em" viewBox="0 0 16 16" class="bi bi-arrow-up-circle-fill" fill="currentColor" xmlns="http://www.w3.org/2000/svg"> 201 <path fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-7.5 3.5a.5.5 0 0 1-1 0V5.707L5.354 7.854a.5.5 0 1 1-.708-.708l3-3a.5.5 0 0 1 .708 0l3 3a.5.5 0 0 1-.708.708L8.5 5.707V11.5z"/> 202 </svg></buttob></div> 203 204 </div> 205 } 206 207 208 209 210<?php 211} 212 213} 214 215 216 }else{ 217 echo '<title>CLANE STAR ONLINE | メンテナンス中</title><br> <h1 class="parent"> 218 現在メンテナンス中です。時間をおいてからアクセスしてください。 219 </h1>'; 220 } 221 222 if($status == 0 AND $system_status_help !== 0){ 223 echo '<title>CLANE STAR ONLINE | 内部エラー</title><br> <h1 class="parent"> 224 内部エラーが発生しました。 225 </h1>'; 226 } 227 228 229 230 231} 232 233 234 235 236?> 237 238 239</body> 240</html> 241 242 243<!--今回のボタン部分--> 244 245<span id="button_status"></p> 246<script> 247<!--id clane_1 ボタンが押されたなら--> 248const button = document.getElementById("clane_1"); 249<!--クリックイベント--> 250button.addEventListener("click", event => { 251var demo2 = document.getElementById("button_status"); 252demo2.innerHTML = "<?php $sql = "UPDATE `clane` SET `button_status` = '横' WHERE `clane`.`server_id` = ".$_POST['id'].""; $stmt = $mysqli->query($sql); foreach ($stmt as $row) {} ?> 253"; 254}); 255</script>

他サイトのjsを組み込んで見たりしましたが、動作しませんでした。
知識のある方、改善点等を教えていただけると有難いです。
XAMPP php

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

PHPの動作はサーバーで起こるもので、Javascriptの動作は(今回の場合)ローカルで起こるものです。
該当ページを開いた時点でPHPの動作は完了しており、demo2.innerHTMLにPHPコードを書いたところでそれはただの文字列であり、PHPとして動作しません。
「Ajax」を利用する等して通信を発生させてサーバー上でPHPを動作させ、その結果を描画し直す必要があります。
HTML/JS/PHPそれぞれの基礎を学び直した方がいいかと思います。

投稿2020/09/22 04:19

sakura_hana

総合スコア11425

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問