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

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

ただいまの
回答率

90.47%

  • PHP

    20856questions

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

  • mysqli

    161questions

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

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

受付中

回答 3

投稿

  • 評価
  • クリップ 0
  • VIEW 1,177

mst99

score 4

こちらは管理画面で、本番同期ボタンを押すと本番ディレクトリーのファイルに同期されるようになっています。
そこで、本番同期ボタンを押すと<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>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

+2

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/12 13:34

    はい、ありがとうございます。

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

    キャンセル

  • 2016/05/12 13:36

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

    キャンセル

  • 2016/05/12 14:53

    下記のようにするボタンを押す前に実行されてしまいます!!
    宜しくお願いします。

    echo "<td><button><script type='text/javascript'> window.location.href='includes/sync.php?test_id={$test_id}'</script></button>";

    キャンセル

  • 2016/05/12 15:52 編集

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

    キャンセル

  • 2016/05/13 11:11

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

    キャンセル

  • 2016/05/16 14:07

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

    キャンセル

  • 2016/05/23 15: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>

    キャンセル

  • 2016/05/23 18:33

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

    キャンセル

+1

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/12 18:20

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

    キャンセル

  • 2016/05/17 10: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>
    ```

    キャンセル

  • 2016/05/23 11:24

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

    キャンセル

  • 2016/05/24 10:00

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

    キャンセル

0

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

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

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/12 18:56

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

    キャンセル

関連した質問

同じタグがついた質問を見る

  • PHP

    20856questions

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

  • mysqli

    161questions

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