用查询追加PHP值

append php values with query

本文关键字:PHP 追加 查询      更新时间:2023-09-26

首先我想对你迄今为止的帮助表示感谢。我已经成功地创建了一个ajax请求,在一个dropbox中显示数据,但正在发生的事情是在数据库中为每个项目创建一个dropbox。在我想要它创建一个dropbox的所有项目在它。然后有能力添加另一个dropbox..

这里是我的new_order.php

<div class="page_forms">
    <div class="centered">
        <div class="container-fluid">
            <div class="col-xs-12 col-sm-6 col-sm-offset-3">
                <div class="account-wall">
                    <div class="account-wall-title">
                        Select Products on Order
                    </div>
                    <div class="form-group col-xs-12 col-sm-6 col-sm-offset-3">
                        <a href="#" id="AddMoreFileBox" class="form-control btn btn-info">Add Product</a>
                    </div>
                        <form id="new_order_client_part_2" method="post" action="">
                        <div id="InputsWrapper">
                        <!-- This is where the dropbox will be displayed-->
                        <div style="clear:both"></div>  
                        </div>
                        <div class="new_order_submit col-xs-12 col-sm-6 col-sm-offset-3">
                            <input class="form-control" name="new_order_part_2_submit" type="submit" value="Next">
                        </div>
                        <div style="clear:both"></div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

这是product_request.php

<?php 
    include ("../core/init.php");
    $result = mysql_query("SELECT * FROM `product`");
    $data = array();
    while ($row = mysql_fetch_array($result)) {
         $data[] = $row;
    }
    echo json_encode($data);
?>

这是我的main.js

$(document).ready(function() {
var MaxInputs       = 8; //maximum input boxes allowed
var InputsWrapper   = $("#InputsWrapper"); //Input boxes wrapper ID
var AddButton       = $("#AddMoreFileBox"); //Add button ID

var x = InputsWrapper.length; //initlal text box count
var FieldCount=1; //to keep track of text box added
$(AddButton).click(function (e) {
    if(x <= MaxInputs) {
    FieldCount++;
    $.ajax({                                      
        url: 'ajax/product_request.php', data: "", dataType: 'json',  success: function(rows)        
        {
            for (var i in rows)
            {
                var row = rows[i];          
                var product_id = row[0];
                var product_name = row[1];

                $("#InputsWrapper").append('<div class="col-xs-12"><div class="input-group"><span class="order_quantity input-group-btn"><input class="form-control" type="number" placeholder="Quantity"></span><select id="order_product" class="form-control" name="products[]"><option value="'+product_id+'">'+product_name+'</option></select><span class="input-group-btn removeclass"><button class="btn btn-danger" type="button">X</button></span></div></div><div style="clear:both"></div>');
                x++;
            } 
        } 
    });
}
return false;
});
$("body").on("click",".removeclass", function(e){ //user click on remove text
if( x > 1 ) {
    $(this).parent('div').remove(); //remove text box
    x--; //decrement textbox
}
return false;
}) 
});

所以,是的,我知道问题在我的追加…它正在为每个结果附加下拉框…我真的不知道该怎么写……

如果你能帮忙的话,提前谢谢你:)

彼得

PHP代码不是在客户端执行的,所以当您追加下拉列表时,PHP代码不会被执行。建议使用AJAX。我知道评论中会有很多关于这个的废话,但是我觉得jQuery的AJAX是最容易理解的。您只需将一个关联数组传递给AJAX函数。例子:

$.ajax({
    url: "script.php", //File you wish to execute
    method: "GET", //Can be GET or POST
    data: "thing=1&thing2=2", //Just like the GET parameters in a URL
    success: function(data) {
        //Do what you want, data is the returned data from the PHP script
    },
});

例如,快速查看一下您的代码,对于您想要添加的"order_product"选择,将PHP移到另一个文件中,对其进行AJAX处理,并对其进行追加。您甚至可以在success函数中添加追加符,或者为更多依赖的选择调用另一个AJAX。

或者,如果你想在一次调用中获取所有的数据,只是动态地添加东西(不确定这是否是你想要的,但似乎是这样的,也许),你可以使用jQuery依赖的选择。编写自己的代码并不难,但如果您只是在寻找拖放解决方案,那么这里是GitHub: jquery-dependent-selects。好运!

我在你的HTML代码中没有看到#AddMoreFileBox。你是不是漏掉了什么?对于你的问题,我有两种方法来解决。

  1. 你可以复制第一个div类col-xs-12,然后附加到#InputsWrapper
  2. 使用sql结果,您可以将其分配给javascript变量as当前php文件中的Json。然后你可以添加新的选择Json
var data = <?php echo json_encode($sql_result);?>;

我想首先感谢大家的帮助…我算出来了。

这里是我的new_order.php

<div class="page_forms">
    <div class="centered">
        <div class="container-fluid">
            <div class="col-xs-12 col-sm-6 col-sm-offset-3">
                <div class="account-wall">
                    <div class="account-wall-title">
                        Select Products on Order
                    </div>
                    <div class="form-group col-xs-12 col-sm-6 col-sm-offset-3">
                        <a href="#" id="AddMoreFileBox" class="form-control btn btn-info">Add Product</a>
                    </div>
                        <form id="new_order_client_part_2" method="post" action="">
                        <div id="InputsWrapper">
                        <!-- This is where the dropbox will be displayed-->
                        <div style="clear:both"></div>  
                        </div>
                        <div class="new_order_submit col-xs-12 col-sm-6 col-sm-offset-3">
                            <input class="form-control" name="new_order_part_2_submit" type="submit" value="Next">
                        </div>
                        <div style="clear:both"></div>
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>

这是product_request.php

<?php 
    include ("../core/init.php");
    $result = mysql_query("SELECT * FROM `product`");
    $data = array();
    while ($row = mysql_fetch_array($result)) {
         $data[] = $row;
    }
    echo json_encode($data);
?>

这是我的main.js

$(document).ready(function() {
        var MaxInputs       = 8; //maximum input boxes allowed
        var InputsWrapper   = $("#InputsWrapper"); //Input boxes wrapper ID
        var AddButton       = $("#AddMoreFileBox"); //Add button ID
        var x = InputsWrapper.length; //initlal text box count
        var FieldCount=0; //to keep track of text box added
$(AddButton).click(function (e) {
    if(x <= MaxInputs) {
        FieldCount++;
        $.ajax({                                      
        url: 'ajax/product_request.php', data: "", dataType: 'json',  success: function(rows)        
            {
                var product_id = rows[0];
                var product_name = rows[1];
                var options = $("#order_product_"+ FieldCount +"");
                $.each(rows, function() {
                    options.append($("<option />").val(this.product_id).text(this.product_name));
                });
            } 
        });
        $("#InputsWrapper").append('<div class="col-xs-12"><div class="input-group"><span class="order_quantity input-group-btn"><input class="form-control" type="number" placeholder="Quantity"></span><select id="order_product_'+ FieldCount +'" class="product_on_order form-control" name="products[]"></select><span class="input-group-btn removeclass"><button class="btn btn-danger" type="button">X</button></span></div></div><div style="clear:both"></div>');
        x++;
    }
    return false;
});
$("body").on("click",".removeclass", function(e){ //user click on remove text
    if( x > 1 ) {
        $(this).parent('div').remove(); //remove text box
        x--; //decrement textbox
    };
    return false;
});

});

所有修复和工作干杯!!

彼得