0

私はPHPとJavascriptにまったく慣れていません。MySQLデータベースからマーカーとその情報を削除するオプションを備えたGoogleマップAPIマーカーから変数を取得しようとしています。エラーは生成されていませんが、行は削除されていません。問題はPOSTにあると思います。以下は私がこの問題に関連したコードです:

var html = "<b>" + name + "</b> <br/>" + location + "<br/> <br/> <input type='button' value='Get Directions from your Current Position' onclick=getDirections()/> <br> <input type='button' name = 'remove' value='Remove Pointer' onclick=removePointer("+name+")/>";

これは、「name」をパラメーターとして渡して、removePointer関数を呼び出している行です。

function removePointer(name){
    var nameSend = name;
    $.post("index.php", {variableName: nameSend});
    <?php
        $mysql_host = "xxxx";
        $mysql_database = "xxxx";
        $mysql_user = "xxxx";
        $mysql_password = "xxxx";

        $link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
        if (!$link) {
            die('Could not connect: ' . mysql_error());
        }

        mysql_select_db($mysql_database) or die(mysql_error());

        $removeName = $_POST['variableName'];
        mysql_query(("DELETE FROM markers WHERE Name='" . $removeName . "'"),$link) or die ("Markers Table Error: " . mysql_error());
    ?>
}

これはremovePointer関数であり、javascript変数を取得して投稿し、PHPブロックを使用して投稿を取得し、それに応じてMySQL行を削除します。

助けてくれてありがとう!

4

2 に答える 2

0

index.php ページだけに投稿することはできません。新しい「del.php」を作成し、そこに php コードを配置して、そのページに投稿します。

index.php

function removePointer(name){
  var nameSend = name;
  $.post("del.php", {variableName: nameSend}); 
}

del.php

<?php
    $mysql_host = "xxxx";
    $mysql_database = "xxxx";
    $mysql_user = "xxxx";
    $mysql_password = "xxxx";

    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password);
    if (!$link) {
        die('Could not connect: ' . mysql_error());
    }

    mysql_select_db($mysql_database) or die(mysql_error());

    $removeName = $_POST['variableName'];
    mysql_query(("DELETE FROM markers WHERE Name='" . $removeName . "'"),$link) or die ("Markers Table Error: " . mysql_error());
?>

もちろん、私はphpの専門家ではありません。これは、ajaxリクエストを行う最適な方法ではないことは確かですが、ajaxの概念をもう少しよく理解していただければ幸いです...

于 2013-01-22T16:17:48.253 に答える
0

あなたの場合、Javascriptはユーザーのブラウザで実行されるものですが、PHPはサーバーで実行されるものです(データベースサーバーと通信できる必要があります)。つまり、Javascript 関数内に PHP を埋め込んで、PHP が実行されることを期待することはできません。Web ブラウザーは PHP を実行しません。さらに、ブラウザーで実行される Javascript (MySQL クレデンシャルなど) に機密情報を入力することは絶対に避けてください。

Javascript が通信するサーバー側の PHP スクリプトを作成する必要があります。Javascript は、PHP スクリプトにAJAXリクエストを作成し、PHP にアクションを実行させたいデータを POST することができます。この場合、removePointer() 関数はマーカー名を PHP スクリプトに送信し、データベースから削除します。

作業を楽にするために、 jQueryなどの Javascript ライブラリの使用を検討するとよいでしょう。これにより、 Ajax リクエストの作成が大幅に簡素化されます。

于 2013-01-22T16:17:33.010 に答える