Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在应用程序中实现ajax示例_Php_Jquery_Sql_Database_Forms - Fatal编程技术网

Php 在应用程序中实现ajax示例

Php 在应用程序中实现ajax示例,php,jquery,sql,database,forms,Php,Jquery,Sql,Database,Forms,我在W3C网站上实现ajax示例时遇到困难。该示例从数据库中提取结果,并根据从下拉菜单中选择的选项将其显示在表中 我已尝试配置此示例以满足我的需求。这是基于所选选项更新数据库中的字段。我想我很接近了,我只是想确保我在正确的轨道上。当选择一个选项时,将进行一个ajax调用,该调用将触发我的php脚本进行更改。看起来是这样的: <?php $q = mysql_real_escape_string($_POST['q']); print_r($_GET["q"]); $con = mys

我在W3C网站上实现ajax示例时遇到困难。该示例从数据库中提取结果,并根据从下拉菜单中选择的选项将其显示在表中

我已尝试配置此示例以满足我的需求。这是基于所选选项更新数据库中的字段。我想我很接近了,我只是想确保我在正确的轨道上。当选择一个选项时,将进行一个ajax调用,该调用将触发我的php脚本进行更改。看起来是这样的:

<?php
$q = mysql_real_escape_string($_POST['q']);
print_r($_GET["q"]);


$con = mysql_connect('localhost', '', '');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("Orders", $con);

$sql= "UPDATE Orders SET status='.$_POST[q]['.$i.'].' WHERE   ID='.$_POST[order_no]    ['.$i.'].'";
echo '<select name="order_status[]" id="id" onchange="showUser(this.value)">';
    echo '<option value = "Pending"  name="order_status['.$i.']" class =       "pending"' . ($row['status'] == 'Pending' ? ' selected=selected' : '') . '>Pending</option>';
    echo '<option value = "Approved" name="order_status['.$i.']" class = "approved"' . ($row['status'] == 'Approved' ? ' selected=selected' : '') . '>Approved</option>';
    echo '<option value = "Disapproved" name="order_status['.$i.']" class ="disapproved"' . ($row['status'] == 'Disapproved' ? ' selected=selected' : '') . '>Disapproved</option>';

从您的描述中,我不能确切地确定您的问题是什么,但是从查看您的代码来看,您的SQL语句中有一些语法错误

$sql= "UPDATE Orders SET status='.$_POST[q]['.$i.'].' WHERE   ID='.$_POST[order_no]    ['.$i.'].'";
应该是

 $sql= 'UPDATE Orders SET status="' . $_POST['q'][$i] . '" WHERE   ID="' . $_POST['order_no'][$i] . '"';
另外,代码中不清楚$i变量来自何处,在SQL语句中使用它之前,也没有对$\u POST['order\u no']进行任何验证,这将使您容易受到SQL注入的影响

这个ajax示例也是一种非常古老的做事方式。我将始终包含jQuery库,并在其中使用jQuery.ajax()函数,它将为您完成所有跨浏览器的工作。它还使从DOM元素中选择数据并将其解析为$\u POST或$\u GET变得非常容易。然后,通过使用回调函数,您可以继续使用php脚本的结果

$('select.foo').change(function() {
     var post = {
         status: $('select.foo option:selected').val();    // get the value from a dropdown 
     }

    $.ajax({
       type: "POST",
       url: "some.php",
       data: post,
       success: function(returnData){
           if(returnData == 1){
               alert('updated');
           }
      }
    });
});

w3schools不是W3C网站,也不是W3C(附属/认可)网站!W3Schools也很糟糕-你在代码中有一个,并且使用了一个我不会回答的,因为它是关于一个w3school代码示例的!嗨,提奥,谢谢你的回复。我在回显表之前声明$I变量,如:$I=0//在表中循环,给每行一个$i的值,然后递增$i++,我将研究这个方法,我以前没有这样做过。谢谢,很高兴我能帮忙。我仍然不确定您试图用代码实现什么。但是使用jQuery并验证所有php$\u POST和$\u GET VAR将使您的代码更安全、更容易,谢谢您的帮助。基本上,当用户更改“选择”框中的选项时,数据库查询将运行并更新数据库中受影响的行。好的,您要做的是将jQuery添加到“选择”框中。然后使用.val()函数获取选择框的值,然后通过.ajax()函数将其解析为php脚本。然后用php验证信息并更新数据库。对不起,我是说.change()而不是.click(),我已经编辑了上面的js代码
$('select.foo').change(function() {
     var post = {
         status: $('select.foo option:selected').val();    // get the value from a dropdown 
     }

    $.ajax({
       type: "POST",
       url: "some.php",
       data: post,
       success: function(returnData){
           if(returnData == 1){
               alert('updated');
           }
      }
    });
});