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

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

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

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

Q&A

3回答

3441閲覧

php、mysqlでの同期システムを作りたいですがうまく動かないです

mst99

総合スコア12

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

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

0グッド

0クリップ

投稿2016/05/12 04:15

こちらは管理画面で、本番同期ボタンを押すと本番ディレクトリーのファイルに同期されるようになっています。
そこで、本番同期ボタンを押すと<Target=”_blank”>などは設定してないのに新しいウィンドウに飛んでしまいます。エラーはありません。

新しいウィンドウに飛ばないように本番同期されたときのメッセージを管理画面上に出したいです。どうすればできるのでしょうか?ご教授お願いいたします。

###ソースコードです

<form action="" method='post'> <table class="table table-bordered table-hover"> <thead> <tr> <th><input id="selectAllBoxes" type="checkbox"></th> <th>番号</th> <th>タイトル</th> <th>本文</th> <th>本番同期</th> </tr> </thead> <tbody> <?php $query = "SELECT * FROM test ORDER BY test_id DESC"; $sql = mysqli_query($con, $query); while($row = mysqli_fetch_assoc($sql)){ $test_id =$row['test_id']; $test_title = mb_substr($row['test_title'],0,15); $test_contents = mb_substr($row['test_contents'],0,15); echo "<tr>"; ?> <?php echo "<td>$test_id</td>"; echo "<td>$test_title</td>"; echo "<td>$test_contents</td>"; echo "<td><button class=\"btn\" onclick=\"window.open('includes/sync.php?test_id={$test_id}');\">本番同期</button></td>"; echo "</tr>"; } ?> </tbody> </table> </form>

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

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

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

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

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

guest

回答3

0

window.open 使っているからでしょう。
window.location.href を使えばいいんじゃないですか?

php

1echo "<td><a class=\"btn\" href='includes/sync.php?test_id={$test_id}'>本番同期</a></td>";

投稿2016/05/12 04:19

編集2016/05/12 04:39
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

mst99

2016/05/12 04:34

はい、ありがとうございます。 ご指摘通り下記のように試してみましたが何も実行できなかったです ``` echo "<td><button class=\"btn\" window.location.href ='includes/sync.php?test_id={$test_id}';>本番同期</button></td>"; ```
退会済みユーザー

退会済みユーザー

2016/05/12 04:36

使い方間違ってるからですね。 button 要素に window.location.href なんて属性ありません
mst99

2016/05/12 05:53

下記のようにするボタンを押す前に実行されてしまいます!! 宜しくお願いします。 echo "<td><button><script type='text/javascript'> window.location.href='includes/sync.php?test_id={$test_id}'</script></button>";
mst99

2016/05/12 07:00 編集

下記のようurlに飛ぶことはできますが、ボタン押すとurlに飛ばないで、管理画面上にあって欲しいのです。<同期完了みたい>なメッセージだけを出したいです echo "<td><input type='button' value='本番同期' onClick=\"location.href='includes/hyoshi_sh.php?hyoshi_id={$hyoshi_id}'\"></td>";
退会済みユーザー

退会済みユーザー

2016/05/13 02:11

他の方が指摘されているように、AJAXを利用してください。
mst99

2016/05/16 05:07

Ajaxで書方がわかないです。どう書けばいいですか?
mst99

2016/05/23 06:13

下記のようにしたところ、includes/sync.phpファイルには同期はできているそうですが、dadata: { 'test_id': '{$test_id}' が見つからなかったみたいですね!!何かミスしていますか? echo "<td><a rel='$test_id' href='javascript: void(0)' id='send'>同期</a></td>"; <script type="text/javascript"> $(function(){ $('#send').click( function(){ $.ajax({ type: 'POST', url: 'includes/sync.php', data: { 'test_id': '{$test_id}' }, success: function(data){ alert(data); } }); } ); }); </script>
mst99

2016/05/23 09:33

やはり下記のエラーがでています。 Uncaught SyntaxError: Unexpected token .
guest

0

ajaxで非同期通信(ページ遷移を伴わない、リクエストの送信)できます。
下記のような感じになるかと。

javascript

1jQuery.ajax( 2 "includes/sync.php",{ 3 type : 'GET', 4 dataType: 'text', 5 data: { //nameとvalueをセットでオブジェクトの中に定義する 6 "test_id" : {$test_id}, 7 }, 8 success: function(get){ 9 console.log(get); 10 } 11 } 12);

投稿2016/05/12 08:59

koufukurairai

総合スコア64

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

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

mst99

2016/05/12 09:20

ありがとうございます。 すみませんがjquery/Ajaxとphpの使い方がよくわかっていません、できれば echo "<td><input type='button' value='本番同期' onClick=\"location.href='includes/sync.php?test_id={$test_id}'\"></td>";で使う時にどうすればいいですか?お教えていただけませんか?
koufukurairai

2016/05/17 01:59

location.hrefの段階で、ジャンプ確定ですよ。 以下みたいな感じですね。 そもそも、HTMLの静的な部分はechoで書かなくても <php ?> の中に入れなければそのまま表示されますよ。 ``` <script type="text/javascript"> <!-- function unsync_ajax() { jQuery.ajax( "includes/sync.php",{ type : 'GET', dataType: 'text', data: { //nameとvalueをセットでオブジェクトの中に定義する "test_id" : {$test_id}, }, success: function(get){ console.log(get); } } ); } // --> <td><input type='button' value='本番同期' onClick='unsync_ajax'></td> </script> ```
mst99

2016/05/23 02:24

ありがとうございます、 ご指摘通り試してみましたが全然反応しないです!
koufukurairai

2016/05/24 01:00

console.logのところをalertにかえてみてください
guest

0

html

1<form action="hoge.php(自分自身)" method='post'>

のように自分自身宛てにして、ボタンをsubmit形式に。

html

1<td> 2<input type="hidden" name="test_id" value="{$test_id}"> 3<input type="submit" value="本番同期"></td>

という一度ジャンプする形式はダメですか?
ダメならkoufukurairaiさんの言うようにajax通信等で行うか、
xhttp通信(こちらも割と複雑)しか無いと思います。

投稿2016/05/12 09:46

momotaro888

総合スコア21

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

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

mst99

2016/05/12 09:56

ジャンプはダメですね!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問