使用PHP和JQuery执行Query / StoredProcedure作为字段值存储在数据库表中?

时间:2014-11-03 19:30:28

标签: php jquery mysql ajax mysqli

我想要实现的目标有点复杂,所以我会尽量解释。

Here is a working fiddle只是为了让您了解我想要展示的内容 当你点击DIV时,它会切换另一个DIV里面的信息(从我控制的数据库表中取出),这就是我要从电话显示“TIME”的地方表!

提前谢谢,如果我需要澄清一些事情,请告诉我,因为我真的被卡住了!

我有以下两个表和服务器:

connection server 1: mario2001
table: overlays
+---------------------------------------------------------------------------------------------+
| q_id | button    |                query                                                     |                                                                                              
+---------------------------------------------------------------------------------------------+
|   12 | AHT_Stats | CALL telephony.sp_get_spec_stat_all_agents( '2014-11-02', '2014-11-02' ) |      
+---------------------------------------------------------------------------------------------+

我只对下面的服务器/表格具有READ权限

connection server 2: mario2003
table: telephony
+-------------+
| memo | time |  
+-------------+
| JOE  | 410  |
+-------------+

问题:

我想通过单击带有onClick事件的HTML按钮来了解是否可能(如果是这样?)在表覆盖中执行查询。现在,我知道我需要JQuery,AJAX和/或JS。我不是很擅长他们,这就是我需要帮助的地方。我的“覆盖”表中的STORED PROCEDURE是从“电话”表中获得的结果。

map.php(此处显示的所有内容)获取我的StoredProcedure字段值并将其存储为变量:

    //Overlay table
    $query_overlay_sql    = "SELECT query FROM overlays";
    $query_overlay_result = mysqli_query($dbh1,$query_overlay_sql);

    //get the query from the "query" field in the overlay table 
    //and store it as a variable for later use for the AHT button
    if($row = mysqli_fetch_assoc(($query_overlay_result))){
        $sp_value = $row['query']; 
    }

HTML / JQuery的:

 <!-- show the results in this DIV below-->
 <div id="resultdiv" class="resultdiv" style="display:none">Time: <? /* get the time value*/ ?></div>   

<script type="text/javascript">
            $(document).ready(function() {
                $('#aht').click(function(){
                    var sp_value_to_send = <?php echo $sp_value; ?>;
                $.ajax({
                    type:"POST",
                    url : "show_aht.php",
                    data: { sp_value: sp_value_to_send }, // pass data here
                    success : function(data){
                        $('#resultdiv').show();
                      $('#resultdiv').html(data);
                    }//end success
                })//end ajax
              });//end click
            });//end rdy
        </script>

show_aht.php:

<?php
include 'db_conn_retca2003.php';


/****************************************************
Execute the query_value when AHT button is clicked
/****************************************************/
 $dbh2_result = mysqli_query($dbh2, $query_value) 
 or die("Query fail: " . mysqli_error());

//loop the result set

 while ($row2 = mysqli_fetch_assoc($dbh2_result)){   
    $memo  = $row2['memo_code'];
  $time  = $row2['avg_handle_time'];
  echo '<p>memo: '. $memo . ' time:' . $time . '</p><br>';
  }
?>

1 个答案:

答案 0 :(得分:1)

您需要添加配置项以传递数据 -

<script type="text/javascript">
$(document).ready(function() {
    $('#aht').click(function(){
        var sp_value_to_send = <?php echo $foo; ?>;
        $.ajax({
            type:"POST",
            url : "show_aht.php",
            data: { sp_value: sp_value_to_send }, // pass data here
            success : function(data){
                $('#resultdiv').show();
                $('#resultdiv').html(data);
            }
        });
    });
});
</script>

该值现在可以在show_aht.php中的$_POST['sp_value']变量中找到。您可以像使用任何其他变量一样使用它。

一旦您的AJAX通话设置正确,您就可以在浏览器的控制台中观看请求/响应。这样,您就可以验证AJAX请求是否正在发送正确的数据,然后您从请求中收回正确的数据。

其他注意事项:我将您的代码放在文档就绪处理程序中,因为我不确定您的代码放在页面的总体布局中的哪个位置。您应该养成使用文档就绪处理程序的习惯,即使您将jQuery代码放在结束</body>标记之前。

您将在success : function(data)功能中接收数据。返回的信息将显示在data中,可以在您的页面中用于多种用途,包括与#resultdiv

一样的显示