【发布时间】:2011-10-31 15:25:56
【问题描述】:
我一直在尝试解决我的一个数据字段如何保存到 mySQL 数据库的问题。我遇到的问题是,不是保存文本值,而是保存文本值的“id”,我不知道为什么。
该字段称为“检测器名称”,其文本值是通过下拉菜单选择的,然后会打开第二个名为 searchheadname 的下拉菜单。两个下拉菜单均通过 PHP 和 AJAX 脚本填充,并在用户选择时显示正确的文本值。
感谢我没有包含任何代码,有很多代码,我不得不承认我不确定哪些部分会有用。
我只是想知道是否有人可以帮我解决这个问题,让我知道他们希望我发布代码的哪些部分。
更新
HTML 表单和 AJAX 脚本
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Location</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="all" />
link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/base/jquery-ui.css"
type="text/css" media="all" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&language=en"></script>
<script type="text/javascript" src="js/addfindstolocation.js"></script>
<script type="text/javascript" language="javascript">
<!--
function savedata() {
var userid = document.getElementById("userid").value;
var locationid = document.getElementById("locationid").value;
var searchheadid = document.getElementById("searchheadid").value;
var additionalcomments = document.getElementById("additionalcomments").value;
var url = "addfindstolocationsave.php?userid=" + userid + "&locationid=" + locationid + "&searchheadid=" + searchheadid + "&additionalcomments=" + additionalcomments;
downloadUrl(url, function(data, responseCode) {
});
}
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('GET', url, true);
request.send(null);
}
function doNothing() {}
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
<script type="text/javascript" language="javascript">
$(function() {
$( "#dateoftrip" ).datepicker({
dateFormat:'dd/mm/yy',
showOn: 'button',
buttonText: 'Select Date...'});
});
</script>
<script type="text/javascript">
function AjaxFunction(detectorid)
{
var httpxml;
try
{
// Firefox, Opera 8.0+, Safari
httpxml=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
httpxml=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
httpxml=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Your browser does not support AJAX!");
return false;
}
}
}
function stateck()
{
if(httpxml.readyState==4)
{
var myarray=eval(httpxml.responseText);
// Before adding new we must remove previously loaded elements
for(j=document.addfindstolocation.searchheads.options.length-1;j>=0;j--)
{
document.addfindstolocation.searchheads.remove(j);
}
for (i=0;i<myarray.length;i++)
{
var optn = document.createElement("OPTION");
optn.text = myarray[i];
optn.value = myarray[i];
document.addfindstolocation.searchheads.options.add(optn);
}
}
}
var url="searchheaddetails.php";
url=url+"?detectorid="+detectorid;
url=url+"&sid="+Math.random();
httpxml.onreadystatechange=stateck;
httpxml.open("GET",url,true);
httpxml.send(null);
}
</script>
</head>
<body>
<form name="addfindstolocation" method='POST'>
<p><label></label>
</p>
<p align="left">
<input name="userid" type="text" id="userid" value="1"/>
<input name="locationid" type="text" id="locationid" value="2"/>
<br />
</p>
<div>
<label>
<div align="left">Click on the map to place the marker for the find that has been made and drag until the precise location has been found. </div>
</div>
<p align="left"><label>Find OSGB36 Latitude Co-ordinate<br />
</label>
</p>
<div>
<div align="left">
<input name="findosgb36lat" type="text" id="findosgb36lat" size="20" />
</div>
</div>
<p align="left"><label>Find OSGB36 Longitude Co-ordinate<br />
</label>
</p>
<div>
<div align="left">
<input name="findosgb36lon" type="text" id="findosgb36lon" size="20" />
</div>
</div>
<p align="left"><label>Date of Trip<br />
</label>
</p>
<div>
<div align="left">
<input name="dateoftrip" type="text" id="dateoftrip" size="10" />
</div>
</div>
<p align="left"><label>Find Category</label> </p>
<div>
<div align="left">
<?php
mysql_connect("hostname", "username", "password") or die("Connection Failed");
mysql_select_db("dbname")or die("Connection Failed");
$query = "SELECT * FROM findcategories";
$result = mysql_query($query);
?>
<select name="findcategory" id="findcategory">
<option value=''>Select One</option>
<?php
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
?>
<option value="<?php echo $line['findcategory'];?>"> <?php echo $line['findcategory'];?> </option>
<?php
}
?>
</select>
</div>
<p align="left">
<label>Find Name<br />
</label>
</p>
<div>
<div align="left">
<input name="findname" type="text" id="findname" size="35" />
</div>
</div>
<p align="left">
<label>Find Description<br />
</label>
</p>
<div>
<div align="left">
<input name="finddescription" type="text" id="finddescription" size="150" />
</div>
</div>
<p align="left"><label></label>
<label>Detector Used</label></p>
<div>
<div align="left">
<select name=detectors id="detectorid" onchange="AjaxFunction(this.value);">
<option value=''>Select One</option>
<?
require "phpfile.php";// connection to database
$q=mysql_query("SELECT * from detectors WHERE userid='1'ORDER BY 'detectorname' ASC");
while($n=mysql_fetch_array($q)){
echo "<option value=$n[detectorid]>$n[detectorname]</option>";
}
?>
</select>
</div>
</div>
<p align="left">
<label></label>
<label>Search Head Used</label></p>
<div>
<div align="left">
<select name=searchheads id="searchheadid">
</select>
</div>
</div>
<p align="left">
<label>Detector Settings</label>
<label><br />
</label>
</p>
<div>
<div align="left">
<textarea name="detectorsettings" cols="50" rows="12" id="detectorsettings"></textarea>
</div>
</div>
<p align="left">
<label>PAS Ref. (if known)<br />
</label>
</p>
<div>
<div align="left">
<input name="pasref" type="text" id="pasref" size="9" />
</div>
</div>
<p align="left"><label>Additional Comments</label>
</p>
<div>
<div align="left">
<textarea name="additionalcomments" cols="50" rows="12" id="additionalcomments"></textarea>
</div>
</div>
<p align="left"><br />
<label></label>
</p>
<p align="left">
<input name="submit" type="submit" onclick="MM_callJS('savedata()')" value="Submit" />
</form>
<div id="map"></div>
</body>
</html>
**'Searchheadetails.php' File (Called in file above)**
<?
$detectorid=$_GET['detectorid'];
require "config.php";
$q=mysql_query("SELECT * FROM searchheads WHERE detectorid='$detectorid' ORDER BY 'searchheadname' ASC");
echo mysql_error();
$myarray=array();
$str="";
while($nt=mysql_fetch_array($q)){
$str=$str . "\"$nt[searchheadname]\"".",";
}
$str=substr($str,0,(strLen($str)-1)); // Removing the last char , from the string
echo "new Array($str)";
?>
【问题讨论】:
-
您应该做的一件事是检查 HTTP 事务以查看浏览器向服务器发送的内容。您可以使用 Chrome 开发人员工具中的“网络”选项卡之类的工具,或者使用 Firefox 中的 Firebug 或 Tamper Data 来完成此操作。
-
您好,非常感谢您回复我的帖子。我必须承认我对此相当陌生。你能告诉我你推荐的软件好用吗?亲切的问候。克里斯
-
嗯,这不是世界上最简单的事情,但是如果你要在很大程度上从事这种工作,如果你不学习,你将永远感到困惑和困惑他们。 Chrome 中的“网络”选项卡可能是最容易使用的,尽管 Firefox 的篡改数据也非常简单(如果有点难看)。它们让您做的重要事情是检查 HTTP 请求内容,就像浏览器将它们发送到服务器时它们实际看到的那样。它有助于将服务器问题与客户端问题分开!
-
嗨,我一直在处理这些文件,我发现它们可以正常工作。我想做的是更改保存到 mySQl 数据库中的值。我已将代码添加到我的原始帖子中,但基本上对于名为“searchheads”的第二个下拉菜单,我想保留文本值供用户选择,而不是保存文本值,我想保存'id' 值代替。我只是想知道 somoene 是否有可能向我展示我需要更改哪些内容才能使其正常工作。非常感谢和亲切的问候。克里斯
标签: php javascript ajax google-maps-api-3