簡體   English   中英

無法獲得函數調用以在PHP中工作

[英]Can't get function call to work in PHP

我在使用$.getJSON請求獲取JSON數據時遇到麻煩。 在一個PHP文檔中,我有我的功能。 代碼是:

function get_topchart($dbc, $var_ziekenhuis_id, $var_department_id) {

    if($var_department_id == "Not Entered") {

        $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' ORDER BY afdeling DESC";
        $result = mysqli_query($dbc,$query);

        $data = array();
        while ( $row = $result->fetch_assoc() ) {
          $data[] = $row;
        }
        echo json_encode( $data );
        //return(json_encode( $data ));

    } else {

        $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' and afdeling='$var_department_id' ORDER BY afdeling DESC";
        $result = mysqli_query($dbc,$query);

        $data = array();
        while ( $row = $result->fetch_assoc() ) {
          $data[] = $row;
        }
        echo json_encode( $data );
        //return(json_encode( $data ));
    }
}

我正在使用以下代碼來調用上述在getcharts.php中的函數:

<?php 
session_start();

include('../functions/datafunctions.php'); 
include('../config/db.php');


if(!isset($_SESSION['username'])) {
    header('Location: ../login.php');
}

//Determine the function that should be called
$var_function_id = $_GET['funcid'];
//Set variables
$var_ziekenhuis_id = $_GET['hosp'];
$var_department_id = $_GET['dept'];

switch ($var_function_id) {
    case "top_chart":
        //Call function
        get_topchart($dbc, $var_ziekenhuis_id, $var_department_id);
    case "bottom_chart":
        //New code here 
}
?>

我使用的$.getJSON是:

$.getJSON('functions/getcharts.php', {
    "hosp":hospital,
    "dept":department,
    "funcid":functionid},

當我跳過整個getcharts.php並直接使用switch函數時,事情就起作用了。 該代碼是:

<?php 

session_start();
include('../config/db.php');

//Controleer eerst of gebruiker succesvol is ingelogd:

if(!isset($_SESSION['username'])) {
    header('Location: ../login.php');
}

//Determine the function that should be called
$var_function_id = $_GET['funcid'];
//Set variables
$var_hospital_id = $_GET['hosp'];
$var_department_id = $_GET['dept'];

switch ($var_function_id) {
    case "top_chart":

        //function get_topchart($dbc, $var_ziekenhuis_id, $var_department_id) {

            if($var_department_id == "Not Entered") {

                $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' ORDER BY afdeling DESC";
                $result = mysqli_query($dbc,$query);

                $data = array();
                while ( $row = $result->fetch_assoc() ) {
                  $data[] = $row;
                }
                echo json_encode( $data );
                //return(json_encode( $data ));

            } else {

                $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' and afdeling='$var_department_id' ORDER BY afdeling DESC";
                $result = mysqli_query($dbc,$query);

                $data = array();
                while ( $row = $result->fetch_assoc() ) {
                  $data[] = $row;
                }
                echo json_encode( $data );
                //return(json_encode( $data ));
            }
        //}
}

?>

在這種情況下, $getJSON代碼為:

$.getJSON('functions/datafunctions.php', {
    "hosp":hospital,
    "dept":department,
    "funcid":functionid},

我究竟做錯了什么?

取消對函數返回語句的注釋:function get_topchart($ dbc,$ var_ziekenhuis_id,$ var_department_id){

if($var_department_id == "Not Entered") {

    $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' ORDER BY afdeling DESC";
    $result = mysqli_query($dbc,$query);

    $data = array();
    while ( $row = $result->fetch_assoc() ) {
      $data[] = $row;
    }
    return(json_encode( $data ));

} else {

    $query = "SELECT afdeling, ligduur as ld FROM datavoorbeeld WHERE ziekenhuis='$var_hospital_id' and afdeling='$var_department_id' ORDER BY afdeling DESC";
    $result = mysqli_query($dbc,$query);

    $data = array();
    while ( $row = $result->fetch_assoc() ) {
      $data[] = $row;
    }
    return(json_encode( $data ));
}

}

並在調用變量時影響函數對變量的return語句。

變更:

get_topchart($dbc, $var_ziekenhuis_id, $var_department_id);

$topchart = get_topchart($dbc, $var_ziekenhuis_id, $var_department_id);

更換

echo json_encode( $data );

return json_encode( $data );

更換

switch ($var_function_id) {
    case "top_chart":
        //Call function
        get_topchart($dbc, $var_ziekenhuis_id, $var_department_id);
    case "bottom_chart":
        //New code here 
}

與:

switch ($var_function_id) {
    case "top_chart":
        //Call function
        echo get_topchart($dbc, $var_ziekenhuis_id, $var_department_id);
    case "bottom_chart":
        //New code here 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM