当前位置: 首页 > 面试题库 >

如何通过ajax使用onfocus()函数将值保存到sql数据库

微生高谊
2023-03-14
问题内容

基本上我想做的是,当用户将重点放在另一输入上时,将一个值从表单保存到sql数据库中。我想最好的方法是使用ajax。(希望如此!)这是我的代码:

剧本:

   function storeLocation() {
       location = $("#location").val();
       $.ajax({
           url: 'storeLocation.php',
           type: 'post',
           data: 'feed_id=' + location,
           success: function (result) {}
       });

   }

的HTML:

<form id="profile" action = "index.php" method="post" name="profile">
    <input type="text" name="location" id="location" autocomplete="off">
    <input type="submit" value="submit">
</form>

和StoreLocation.php代码:

<?php 
require 'core.php';
require 'connect.php';

$city = $_POST['feed_id'];
$idPerson = getfield('idPerson','person');

$query = "UPDATE table SET idLocation = '$idLocation' 
WHERE idPerson = '$idPerson'"; 
$query_run = mysql_query($query);
?>

当前,此代码仅将用户移至带有$ city变量的新URL,例如:www.example.com/london。

任何帮助都将是惊人的,因为我在这个问题上坚持了太长时间了:)

请求的额外代码:

    $term=$_GET["term"];


    $query=mysql_query("SELECT * FROM venue WHERE name like '%".$term."%'
     ORDER BY name ");
     $json=array();

        while($name=mysql_fetch_array($query)){
             $json[]=array(
                'value'=> $name["name"],
                'label'=>$name["name"]
                    );
              }

     echo json_encode($json);

    ?>

问题答案:

我能够获得您想要的功能。我的例子和解释如下:

假设有两个表:

1)状态-> id varchar(2)(AL,MN,FL等。)和状态varchar(32)(阿拉巴马州,明尼苏达州,佛罗里达州等)

2)城市-> id int(5)autoinc,city varchar(64)(移动,斯蒂尔沃特,迈阿密)和state_id
varchar(2)(AL,MN,FL)

链接的表:citys.state_id = states.id

现在让我们看一下表格。

// autocomplete.php

在头中调用您需要的JQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>

<link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" />

在身体中建立自己的形式。当焦点移离字段时,州输入将调用javascript函数,届时它将检索与该州关联的城市。

<form action="#">
    <label for="state">State: </label>
    <input type="text" name="state" id="state" onBlur="getCities();"/>

    <label for="city">City: </label>
    <input type="text" id="city" name="city"/>
</form>

__在正文中的表单 下方 ,运行Jquery魔术。我认为如果您要使用自动完成功能,请在用户输入任何位置数据(在本例中为“状态”) 之前
将其设置为可以使用。我们通过将代码封装到函数中来实现此目的。

请记住,正在发生的事情是自动完成功能正在通过GET调用php文件,该文件会返回一个值数组,自动键入内容会在您键入时用于填充列表。

一旦用户在州字段中输入了信息,我们希望首先获取 所有 城市,然后获取与该州关联的所有城市。本质上,我们将两次设置自动完成功能。

在这里,您可以使用-处理自动完成功能:

// set autocomplete
    function setAutocomplete(data) {
        $('#city').autocomplete({
            source: data,
            minLength: 1
        });
    }

现在设置自动完成功能,显示所有城市。

// autocomplete default
    setAutocomplete('getautocomplete.php');

在这一点上,如果您开始在城市输入字段中输入内容,那么您将看到所有城市,无论其状态如何。

现在,我们将处理用户在状态输入中输入状态时发生的情况:

// get cities based on state input    
    function getCities() {
        var state_name = $('#state').val();
        setAutocomplete('getautocomplete.php?state='+state_name);
    }

就是这样!当您输入州名而对该字段失去关注时,它将更改状态输入字段上的自动完成功能,再次调用getautocomplete.php,但这一次是按州名进行过滤。

现在让我们看一下PHP文件。

// getautocomplete.php

从顶部->设置数据库连接:

$mysqli = new mysqli('localhost', 'root', '', 'php_autocomplete');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

然后设置SQL查询所需的参数。

// get parameters
$term    = isset($_GET['term']) ? $_GET['term'] : NULL;
$state   = isset($_GET['state']) ? $_GET['state'] : NULL;

现在,我们检查是否已设置state参数,因为这确定了我们使用哪个SQL SELECT字符串。

// set query dependant on if state available
if ( $state == NULL ) {
    // get all cities
    $query = 'SELECT city 
              FROM cities 
              WHERE city LIKE "%'.$term.'%" 
              ORDER BY city';
} else {
    // filter by state
    $query = 'SELECT city 
              FROM cities 
              INNER JOIN states ON cities.state_id=states.id 
              WHERE (state="'.$state.'" AND city LIKE "%'.$term.'%") 
              ORDER BY city';
}

最后,我们返回并打印出结果(本质上是一个数组),这是JQuery自动完成将用于填充自动完成列表的内容:

// get results
$results = $mysqli->query($query);
$json    = array();

while ( $city = $results->fetch_array() ) {
    $json[] = array( 'value' => $city['city'], 'label' => $city['city'] );
}

echo json_encode($json);

您不需要使用AJAX。自动完成本质上已经在getautocomplete.php上执行AJAX。我们只是通过添加?state =
state_name为其提供附加参数,然后在PHP中考虑该参数并根据需要编写SQL SELECT语句。

这是这两个文件的完整代码,因此您可以在上下文中看到它,而无需我提供任何评论。我希望这可以帮助您解决问题。您应该能够使用表格和表格来完成这项工作。

//// autocomplete.php

<!doctype html>
<html>
<head>
   <meta charset="utf-8">
   <title>Autocomplete</title>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
   <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
   <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
   <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" />
</head>
<body>
   <form action="#">
      <label for="state">State: </label>
      <input type="text" name="state" id="state" onBlur="getCities();"/>
      <label for="city">City: </label>
      <input type="text" id="city" name="city"/>
   </form>
   <script type="text/javascript">
      // set autocomplete
      function setAutocomplete(data) {
          $('#city').autocomplete({
            source: data,
            minLength: 1
          });
      }

      // autocomplete default
      setAutocomplete('getautocomplete.php');

      // get cities based on state input    
      function getCities() {
        var state_name = $('#state').val();
        setAutocomplete('getautocomplete.php?state='+state_name);
      }
  </script>
</body>
</html>

///// getautocomplete.php

<?php

$mysqli = new mysqli('localhost', 'root', '', 'php_autocomplete');

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

// get parameters
$term    = isset($_GET['term']) ? $_GET['term'] : NULL;
$state   = isset($_GET['state']) ? $_GET['state'] : NULL;

// set query dependant on if state available
if ( $state == NULL ) {
    // get all cities
    $query = 'SELECT city 
              FROM cities 
              WHERE city LIKE "%'.$term.'%" 
              ORDER BY city';
} else {
    // filter by state
    $query = 'SELECT city 
              FROM cities 
              INNER JOIN states ON cities.state_id=states.id 
              WHERE (state="'.$state.'" AND city LIKE "%'.$term.'%") 
              ORDER BY city';
}

// get results
$results = $mysqli->query($query);
$json    = array();

while ( $city = $results->fetch_array() ) {
    $json[] = array( 'value' => $city['city'], 'label' => $city['city'] );
}

echo json_encode($json);

?>


 类似资料:
  • 同样地,为需要存储数据的每个JPA实体创建单独的存储库类是否理想?或者有什么更好的方法可以在有限的存储库类的情况下将数据存储到数据库?

  • 问题内容: 如何将表单数据保存在文件或本地db(也许使用AJAX)中,该文件或数据通过表单操作将数据发送到外部db? 我的表单的源代码在这里:http : //jsbin.com/ojUjEKa/1/edit 我应该对代码进行哪些更改(如果有)? 对。因此,我能够使用AJAX将数据存储到localStorage中,并希望将存储的数据发送到名为backend.php的文件中。这是我的html文件:

  • 问题内容: 我的页面上有一些CSS类=“ hello”的Divs。此外,我使用Ajax通过CSS class =“ hello”来获取更多Divs。我有一段代码被称为Divs的Click事件,如下: 从一开始,它就可以与我页面中存在的Divs一起正常工作,但不适用于使用Ajax加载的Divs。为了将这小段代码与新加载的Divs绑定在一起,我需要做些什么吗? 问题答案: 您应该用来将处理程序绑定到绑

  • 问题内容: 我今天花了很多时间研究如何在cakephp中使用ajax请求保存数据,现在已经知道在cakephp网站上的文档似乎缺少该特定主题。 我有几个可排序的列表,对一个列表项进行排序时,我需要保存每个列表项的位置。我有一个如下设置的ajax请求,该请求在移动项目时触发: 控制器中引用的功能为: 我已经设置了助手等: 而且它不起作用… 所以我的问题是: 1)当前向控制器中的动作发送ajax请求的

  • 我正在尝试使用一个用Java编写的桌面应用程序将数据保存到Firebase。但是,由于某些原因,它不起作用,我一直在这里提供的文档:https://firebase.google.com/docs/database/admin/save-data。找不到任何视频教程的问题,所有视频都是网络或移动相关的。基本上,我想创建一个名为Venda的对象,它有3个属性(ID、data、valor),然后将它保

  • 问题内容: 如何通过SQL将活动用户连接到PostgreSQL数据库?这可以是用户标识或用户数。 问题答案: (问题)你不知道那个信息吗 选择* from pg_user ; 或使用视图pg_stat_activity: 添加: 视图说: 每个服务器进程一行,显示数据库OID,数据库名称,进程ID,用户OID, 用户名 ,当前查询,查询的等待状态,当前查询开始执行的时间,进程开始的时间以及 客户端