2015-02-23 119 views
0

我有一个页面,它显示了一个地图,用户可以在其中添加一个标记并为其添加信息(名称,描述等)。然后这个信息被发送到数据库,在那里它可以被召回并在必要时显示。PHP/MySQL:将用户输入保存到数据库中

当点击SAVE,盒子应关闭和显示消息( “完成”)

的JS函数它发送到数据库:

//when user clicks on the "submit" button 
     form.submit({point: point}, function (event) { 
     //prevent the default form behavior (which would refresh the page) 
     event.preventDefault(); 

     //put all form elements in a "data" object 
     var data = { 
      name: $("input[name=name]", this).val(), 
      description: $("textarea[name=description]", this).val(), 
      category: $("select[name=category]",this).val(), 
      lat: event.data.point.overlay.getPosition().lat(), 
      lon: event.data.point.overlay.getPosition().lng() 
     }; 
     trace(data) 

     //send the results to the PHP script that adds the point to the database 
     $.post("adddata.php", data, tidy_maps.saveStopResponse, "json"); 

     //Erase the form and replace with new message 
     infowindow.setContent('done') 
     return false; 

在 'adddata.php':

<?php 
ini_set("display_errors",1); 
//database access info 
$db = new mysqli("localhost", "stephen", "pass1", "gmaps1"); 

$statement = $db->stmt_init(); 

//database insert statement 
$statement->prepare("INSERT INTO tidy_maps_test (lat, lon, name, description, category) VALUES (?, ?, ?, ?, ?)"); 

//grab values from the url and add to database 
$statement->bind_param("ddsss", &$_POST['lat'], &$_POST['lon'],  &$_POST['name'], &$_POST['description'], &$_POST['category']); 
$status = $statement->execute(); 

//create a status message 
if ($status) 
{ 
    $message = array("message" => $_POST['name'] . " has been added!"); 
} 
else 
{ 
    $message = array("error" => $db->error); 
} 

$statement->close(); 

echo json_encode($message); 
?> 

当单击保存按钮时,什么也没有发生,窗体保持打开与文本输入并不保存到数据库。我在浏览器上运行'adddata.php'来查看它是否连接到数据库,并且它是。

我一直在使用本教程作为指南:http://gis.yohman.com/up206b/tutorials/9-2/


我试着改变按钮输入,但仍然没有运气。我的HTML的形式是:

<form class="form-horizontal save-form" style="display: none"> 
     <h1>Add me!</h1> 
     <fieldset> 
      <div class="control-group"> 
       .... 
       Form Contents Here 
       ... 
       </div> 
      </div> 
      <div class="form-actions">      
       <input name="Save" type="submit" class="btn btn-primary" value="Save"> 
      </div> 
     </fieldset> 
    </form> 
+0

JS控制台中的任何错误消息? – 2015-02-23 21:24:07

+1

对不起,“那个家伙”。你可能想看看PDO。你的mysql方法已经过时了,并且存在安全风险。 http://php.net/manual/en/function.mysql-select-db.php – FunkyMonk91 2015-02-23 21:24:30

+0

你的混合mysql_与PDO – 2015-02-23 21:41:00

回答

1

你的代码(从教程)使用功能 '追踪'

trace(data); 

,但没有定义的功能。 在教程演示该功能定义为:

function trace(message) 
{ 
    if (typeof console != 'undefined') 
    { 
     console.log(message); 
    } 
} 

尝试在你的脚本中添加该代码。

相关问题