2011-07-23 77 views
0

我想知道是否有人能夠幫助我。

我目前正在通過用戶輸入表單,XML和PHP的網站工作,用戶將添加和保存谷歌地圖信息到我的SQL數據庫。

我已經成功地使用了Google網站上的一個例子,它解釋瞭如何使用PHP和XML將用戶定義的信息保存到數據庫。

該示例使用$ GET方法,但根據我在網上閱讀的信息,$ 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; 

要使用$ _POST,而不是添加的編碼的名稱/值對的URL的末尾,通過request.send發送它們()方法:

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

這纔有效,如果你正在使用AJAX來保存數據,您使用提交數據的方法。否則看看holodoc給出的答案。 – fromvega

+0

嗨,非常感謝您看看我的帖子和相關信息,它可以幫助您更清楚地瞭解問題。 – IRHM

1

的一般規則拇指是,如果你的目標頁面應該只是檢索一些信息使用GET就好了,但是如果你的數據應該對數據庫進行任何更改等,你應該總是使用POST。

順便說一句,你的表單標籤必須包含在這種情況下method="post"

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

非常感謝您的信息,非常有幫助! – IRHM