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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1444閲覧

type= submit と button でJavascriptとPHPを同時に動かしたい

terapro

総合スコア39

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/06/15 07:51

編集2019/06/15 08:47

カウントダウンタイマーを作っています。
type="submit" だとPHPのみが動作し、
type="button" だとJavascriptのみが動作します。
同時に動作させる方法がないか思案しています。

submitした後でMySQLに30分追加した時間を格納したいと考えています。
DBのUPDATEには成功しています。

php

1<?php 2 3if(isset($_POST['30minute'])) { 4 echo $_POST['30minute']; 5} 6 7?> 8<form action="zz.php" method="post"> 9<span contenteditable="true" id="min">25</span><span>:</span><span contenteditable="true" id="sec">00</span> 10<button type="button" name="30minute" class="stBtn btn btn-primary btn-lg btn-block" value="中身だよ">Start</button> 11</form> 12 13 <!-- jQuery --> 14 <script src="js/jquery.js"></script> 15 16 <!-- timer JavaScript --> 17 <script src="js/timer.js"></script>

javascript

1$(document).ready(function() { 2 $('.stBtn').click(function() { 3 var btn = $('.stBtn'); 4 var minutes = parseInt($('#min').html()); 5 var seconds = parseInt($('#sec').html()); 6 if (minutes + seconds === 0) { 7 btn.html('Start'); 8 btn.removeClass('red'); 9 alert('Please set the timer'); 10 return; 11 } 12 if (isNaN(minutes)) { 13 $('#min').html('00'); 14 minutes = 0; 15 } 16 if (minutes > 59) { 17 alert("Can't be used for more than 59 mins"); 18 $('#min').html('00'); 19 minutes = 0; 20 return; 21 } 22 if (isNaN(seconds)) { 23 $('#sec').html('00'); 24 seconds = 1; 25 retrun; 26 } 27 var t = (minutes * 60) + (seconds); 28 29 function countdownTimer(t) { 30 var secLeft = Math.floor(t % 60); 31 var minLeft = Math.floor((t / 60) % 60); 32 var dispSeconds = '0' + secLeft; 33 var dispMinutes = '0' + minLeft; 34 $('#min').html(dispMinutes.slice(-2)); 35 $('#sec').html(dispSeconds.slice(-2)); 36 } 37 function reStart() { 38 btn.html('Start'); 39 btn.removeClass('red'); 40 } 41 function updateTimer() { 42 t--; 43 countdownTimer(t); 44 if (t <= 0) { 45 clearInterval(interval); 46 $('#ado').get(0).play(); 47 reStart(); 48 } 49 } 50 if (btn.html() == "Stop") { 51 clearInterval(interval); 52 reStart(); 53 } else { 54 window.interval = setInterval(updateTimer, 1000); 55 btn.html('Stop'); 56 btn.addClass('red'); 57 } 58 }); 59 60 $('.refresh').click(function() { 61 clearInterval(interval); 62 $('#min').html('25'); 63 $('#sec').html('00'); 64 $('.stBtn').html('Start'); 65 $('.stBtn').removeClass('red'); 66 }); 67});

type="button" の時はカウントダウンのみ始まり「中身だよ」が表示されません。
type="submit" の時は「中身だよ」が表示され、カウントダウンされません。

期待する結果は
「中身だよ」が表示され、かつカウントダウンが始まるようにしたいです。

カウントダウンタイマーの参考にしたサイトはこちらです。
https://code.sololearn.com/W0NhhY7ov1a8#html

お力添えをいただけると幸いです。よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

どう転んでも同時には動きません。
JavaScriptはクライアントサイドの言語
PHPはサーバーサイドの言語
で動作する環境が違います。

buttonにしておいてJavaScriptの処理後にJavaScriptでformをsubmitすれば「一連の流れで動いた」と言えると思います。

ただ、ざっとしか見ていませんが、PHP不要ではないでしょうか?JavaScriptだけでできそうに思います。
submitしてしまうと再度読み込まれるため、JavaScriptの動作はまた最初からとなります。

投稿2019/06/15 08:09

編集2019/06/15 08:11
m.ts10806

総合スコア80850

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

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

terapro

2019/06/15 08:25

そうなのですね、Javascript不勉強のためお手間おかけします。 submitした後でMySQLで30分追加した時間を格納したいと考えています。 タイマーが動き、かつ、MySQLにデータが30分追加したいです。 言葉足らずで申し訳ございません。 submitの場合、MySQLに30分は追加できました。 buttonの場合、タイマーが動作しました。 buttonにした場合、どうやら$_POSTで値が取れなかったのでどうするべきかを質問しました。 > submitしてしまうと再度読み込まれるため、JavaScriptの動作はまた最初からとなります。 そうするとボタンを押下した後、submitしてからbuttonの動作をするという記述をする必要がありそうです。こんな記述はできるのでしょうか?
m.ts10806

2019/06/15 08:28

>submitした後でMySQLで30分追加した時間 質問本文へ追記してください。 で、あれば、PHPへの送信をAjaxでしては。 そうするとバックグラウンドで実行できるので、一応「タイマーを止めずにPHPを実行する」ということはできます。 >buttonにした場合、どうやら$_POSTで値が取れなかったのでどうするべきかを質問しました。 そもそもbuttonだけだと送信しないのでPHP実行されていません。
terapro

2019/06/15 08:51

>>submitした後でMySQLで30分追加した時間 >質問本文へ追記してください。 追記しました。 > で、あれば、PHPへの送信をAjaxでしては。 Ajaxはまだ触ったことがないため、これから調べてみます。
m.ts10806

2019/06/17 13:33

ヒントにつながったようで何よりです。 要件次第ではありますが、データ処理はすべてPHP(などのサーバーサイドの言語)で画面に関する描画処理や動きをすべてJavaScriptで行うようなことも現場では結構あります。 完全な役割分担ですね。覚えておいても損はないと思います。 特にJSON形式のデータがよく使われるので、これを機会に。
terapro

2019/06/17 14:40

ありがとうございます。コツコツがんばります!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問