如果值大于0,则使用AJAX或XMLHttprequest将数据保存到MySQL数据库中

时间:2014-09-30 13:20:28

标签: javascript php jquery mysql ajax

我的表格分为三部分。每个部分都是动态的,并由来自数据库的数据填充。例如,保存在数据库中的每个项目只有在其状态为1时才能以input的形式显示。此外,与所选数据一起,我的PHP脚本生成带有+- javascript的按钮功能如此fiddle

所示

我不知道如何解决的问题是如何为值大于0的每个输入保存namevalue。如果这两个中的一部分我正在徘徊{ {1}}可用于解决我的问题?

脚本1,请参阅此jsfiddle

javasripts

脚本2:

$('forma').submit(function(){    
    $('.qty').each(function(){ 
        if($(this).val() != '0')
        {
            $('output').text($('output').text()+ ' ' + $(this).attr('name') + ' ' + $(this).val()+ ';' );
        }
    });
    return false;
});

save.php文件示例:

var inputs = document.getElementById('forma').children;
var data = {};
for(var i in inputs ){
    if(inputs[i].value != 0)data[inputs[i].name] = inputs[i].value;
}

脚本3:

<?php

 mysql_connect("localhost", "root", "") or die(mysql_error()); 
 mysql_select_db("article_db") or die(mysql_error());


 $sql="INSERT INTO article (order)
 VALUES ('".$_POST['output']."')";

 $save = mysql_query($sql);

 mysql_close();

?>

和save.php:

$(document).ready(function() {
        $('#forma').submit(function(e){
        e.preventDefault();    
        $('.qty').each(function(){ 
           if($(this).val() != '0')
             {
                $('#output').text($('#output').text()+ ' ' + $(this).attr('name') + ' ' + $(this).val()+ ';' );
             }
          });
          var e=$(this);
          var output = document.getElementById('#output');
          var out = $(e).val();
                $.ajax({
                        type: "POST",
                        url: "save.php",
                        dataType: "json",                        
                        data: "out="+out,
                        success: function(response) {
                                if (response.ok){
                                        alert("Saved: " + response)

                                }else{
                                        alert(response.error);
                                }
                        },
                        error: function(){
                                alert("This won't gonna work like that!");
                        }
                });
        });
 });

我从页面的第一部分脚本3获得结果,但它不会保存到数据库中。

如果是,我该怎么办?我之前从未使用AJAX或XMLHttprequest将数据保存到数据库中,只使用纯PHP。我需要提一下,我也在这个项目中使用<?php mysql_connect("localhost", "root", "") or die(mysql_error()); mysql_select_db("caffe") or die(mysql_error()); if(isset($_POST['forma'])){ $sql="INSERT INTO narudzbe(narudzba) VALUES ('".$_POST['output']."')"; $save = mysql_query($sql); } mysql_close(); ?> 。我知道jquerymobilemysql_connect已被弃用,但这仅适用于练习。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

这可能对你有所帮助......

$.ajax({
      url: '/path/to/file',
      type: 'default GET (Other values: POST)',
      dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)',
      data: {param1: 'value1'},
    })
    .done(function() {
      console.log("success");
    })
    .fail(function() {
      console.log("error");
    })
    .always(function() {
      console.log("complete");
    });

现在..当我使用Ajax时我会做什么我创建一个ajax.php并在里面我使用isset条件......就像这样

if(isset($_POST['submitForm'])){
#php code
}

所以在数据的$ .ajax中:你必须像这样放置你的isset变量:

data: {submitForm: TRUE,otherdate:data}, //this is still javascript side

然后在php方面,如果你想根据你设置的类型访问所使用的数据,你可以得到它们:

$_GET['otherdate'] OR $_POST['otherdate']

希望这对你有帮助!

答案 1 :(得分:0)

由于Sebastiens的提示,我已经解决了我的问题,如下所示:

的javascript:

$(document).ready(function(e) {
$("#posalji").click(function() {

var dataType = document.getElementById("dataType").value;
var output = document.getElementById("output").value;
var status = document.getElementById("status").value;
$.ajax({
        type: "POST",
        url: "save.php",
        data: {dataType: dataType, output: output, status: status}
       })
    });
});    

和PHP文件:

<?php

 $dataType = $_POST['dataType'];
 $output = $_POST['output'];
 $status = $_POST['status'];

 mysql_connect("localhost", "root", "") or die(mysql_error()); 
 mysql_select_db("caffe") or die(mysql_error());


 $sql="INSERT INTO narudzbe (sto, narudzba, status) VALUES ('$dataType', '$output', '$status')";

 $save = mysql_query($sql);


 mysql_close();

 header('Location: index.php');


?>

谢谢Sebastien,再次感谢你。