2011-07-23 21 views
0

私は誰かが私を助けることができるかもしれないかと思います。

私は現在、ユーザー入力フォーム(XMLとPHP)を使用して、Googleマップ情報をSQLデータベースに追加して保存するWebサイトで作業しています。

私は、PHPとXMLを使用してユーザー定義情報をデータベースに保存する方法を説明しているGoogleサイトの例の1つを使用して成功しました。

この例では$ GETメソッドを使用していますが、私がWeb上で読んでいる情報から、$ POSTオプションは使い方が良いようです。

私は私のコードを$ POSTメソッドに変更するとデータベースにレコードを作成できますが、フォームにキー入力された値はデータベースにコピーされません。私はおそらく、初心者の間違いを犯していることは知っていますが、私はそれを働かせるために何が必要なのか誰かが教えてくれるのかどうか疑問に思いました。

私は以下のファイルのカットダウンバージョンを含めました。

感謝

クリス

HTMLフォーム送信ボタン

function savedata() { 
var locationname = document.getElementById("locationname").value; 
var returnedaddress = document.getElementById("returnedaddress").value; 

    var url = "phpfilename.php?locationname=" + locationname + "&returnedaddress=" +  returnedaddress; 

downloadUrl(url, function(data, responseCode) { 
if (responseCode == 200 && data.length <= 1) { 
} 
}); 
} 

function downloadUrl(url, callback) { 
var request = window.ActiveXObject ? 
new ActiveXObject('Microsoft.XMLHTTP') : 
new XMLHttpRequest; 

request.onreadystatechange = function() { 
if (request.readyState == 4) { 
request.onreadystatechange = doNothing; 
callback(request.responseText, request.status); 
} 
}; 

request.open('POST', url, true); 
request.send(null); 
} 

function doNothing() {} 
</script> 

HTMLフォーム

<body> 
<label><br /> 
</label> 
<form name="searchforlocationformgeocode" id="searchforlocationformgeocode"> 
<div> 
<label for="address"> 
<div align="center"> 
    <p>Location Name</p> 
    <p> 
    <input name="locationname" type="text" id="locationname" size="80" /> 
    </p> 
</div> 
    <p align="left"><label>Returned Address</label>&nbsp;</p> 
     <div align="left"> 
     <input name="returnedaddress" type="text" id="returnedaddress" size="100" /> 
    </div> 

PHPファイル

<?php 
require("phpfilename.php"); 

// Gets data from URL parameters 
$locationname = $_POST['locationname']; 
$address = $_POST['returnedaddress']; 

// Opens a connection to a MySQL server 
$connection = mysql_connect ("xxxxxxxx", $username, $password); 
if (!$connection) { 
    die('Not connected : ' . mysql_error()); 
} 

// Set the active MySQL database 
$db_selected = mysql_select_db($database, $connection); 
if (!$db_selected) { 
    die ('Can\'t use db : ' . mysql_error()); 
} 


// Insert new row with user data 
$query = sprintf("INSERT INTO tablename " . 
     " (locationname, address) " . 
     " VALUES ('%s', '%s', '%s');", 
     mysql_real_escape_string($locationname), 
     mysql_real_escape_string($address)); 

$result = mysql_query($query); 

if (!$result) { 
    die('Invalid query: ' . mysql_error()); 
} 

?> 

答えて

1

$ _GETを使用する必要がある場合は、クエリ文字列を使用して値を渡しています。

var url = "phpfilename.php?locationname=" + locationname + "&returnedaddress=" +  returnedaddress; 

request.send()メソッドを介してそれらを送信、代わりにURLの最後にエンコードされた名前/値のペアを追加するので、$ _POSTを使用するには:

request.send("locationname=" + locationname + "&returnedaddress=" + returnedaddress); 
+0

この場合には、あなたがデータを送信するために使用している方法が含まれている必要があります。さもなければ、ホロドックによって与えられた答えを見てください。 – fromvega

+0

こんにちは、私のポストを見てくれてありがとう、そして情報のために、それはceratinly物事をより明確にするのに役立ちます。 – IRHM

1

の一般的なルールあなたのターゲットページがGETを使用していくつかの情報を取得するだけであれば、データがデータベースなどに変更を加えることになっている場合は問題ありません。常にPOSTを使用するべきです。

ところで、あなたのformタグこれは、あなたのデータを保存するためにAJAXを使用している場合にのみ有効ですmethod="post"

<form name="searchforlocationformgeocode" id="searchforlocationformgeocode" method="post"> 
+0

こんにちは、情報に感謝、非常に有用! – IRHM