Как установить ввод формы в качестве переменной в файле php печати Json? - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть два php-файла, файл A и файл B, которые получают данные из одной базы данных. Файл A отображает данные в абзаце на сайте, а файл B используется AJAX для отображения данных в графике, созданном с помощью graph.js. Оба файла делают свою работу, кроме.

В обоих файлах у меня есть переменная с именем $employeeNumber, которая является именем поля ввода в форме, используемой пользователем для ввода того номера сотрудника, с которым они хотели бы просмотреть данные. Файл А позволяет мне использовать $employeeNumber = $_POST["employeeNumber"]; для получения ввода и точного отображения данных, но файл B не позволяет мне использовать $_POST[], $_REQUEST[] или $_GET[]. Вместо этого он заставляет меня жестко закодировать уникальный номер. Это не желательно.

Файл B предназначен для ввода данных, введенных в форму, и обновления графика данными, относящимися к введенному номеру сотрудника.

Я использовал echo $row["empnumber"]; для файла A, чтобы отобразить данные, а для файла B я использовал print json_encode($data); Может быть, я ошибся?

Файл B (График не обновляется, если я жестко не кодирую employeeNum)

<?php

header('Content-Type: application/json');

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";




//BELOW IS WHERE THE ISSUE LIES.
//WHEN I HARDCODE THE UNIQUE NUMBER LIKE THIS, THE GRAPH UPDATES ACCORDINGLY. WITH ACCURATE DATA FROM THE EMPLOYEE THAT THE UNIQUE NUMBER BELONGS TO.

$employeeNum = 8020;


//THIS (BELOW) I ANTICIPATED WOULD GET THE EMPLOYEE NUMBER FROM THE USERS INPUT IN THE FORM WHICH I HAVE NOW INCLUDED BUT IT PRODUCES AN ERROR. 

$employeeNum = $_POST["employeeNum"]; //this is line 9

//HERE IS THE ERROR WHEN I OPEN THE Graphdata.php FILE

<br />
<b>Notice</b>:  Undefined index: employeeNum in <b>C:\wamp64\www\Graphdata.php</b> on line <b>9</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>C:\wamp64\www\Graphdata.php</b> on line <b>22</b><br />
<br />
<b>Fatal error</b>:  Uncaught Error: Call to a member function close() on bool in C:\wamp64\www\Graphdata.php:26
Stack trace:
#0 {main}
  thrown in <b>C:\wamp64\www\Graphdata.php</b> on line <b>26</b><br />




//Connect to database
$dbconnect = new mysqli($servername, $username, $password, $dbname);

//If failed to connect
if(mysqli_connect_error()){
    die("Database connection error".mysqli_connect_error());
}
//Create query
$sql = "SELECT Mathematics, English, Afrikaans, Geography, Physics, History, Life_Orientation FROM studentresults WHERE employeeNumber = $employeeNum";

//Run query
$result = $dbconnect->query($sql);

//Produce result
$data = array();
foreach ($result as $row){ //THIS IS LINE 22
    $data[] = $row;
}

$result -> close();

$dbconnect -> close();

//Print the result
print json_encode($data);
?>

Файл A (Работает нормально)



<?php 

//connecting to database
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "mydb";
    $employeeNum = $_POST["employeeNum"];

    $connect = new mysqli($servername, $username, $password, $dbname);

//checking connection

    if (mysqli_connect_error()) {
        die ("Database connection failed: ". mysqli_connect_error());
    } 

// Query the database
        $sql = "SELECT Salary FROM myEmployees WHERE employeeNumber = $employeeNum";

        $result = $connect->query($sql);

//print out result
while($row = mysqli_fetch_array($result)) {
        echo $row["English"];
    }

$result -> close();
?>

Вот код AJAX, который делает запрос

$.ajax({

//Graphdata.php is the name of FILE B

    url: "http://localhost/Graphdata.php",
    type: "GET",
    success : function(data){
        console.log(data);

        var Salary = [];
        var timeWorked = [];
        var Age = [];
        var userid = [];

        for(var i in data){

            userid.push("UserID " + data[i].userid);
            Salary.push(data[i].Salary);
            Age.push(data[i].Age);
            timeWorked.push(data[i].timeWorked);


        }
//Create the graph
        var ctx = document.getElementById('myChart').getContext('2d');

var chart = new Chart(ctx, {

Вот код формы.

<form action="Graphdata.php" method="post">
    <p class="name">Username</p>
<input class="inp1" type="text" name="name">
    <p class="password">Password</p>
<input class="inp2" type="password" name="email">
    <p class="employeeid">Employee ID</p>
<input id = "employeeNum" class="inp3" type="int" name="employeeNum">

1 Ответ

0 голосов
/ 06 апреля 2019

Проблема в том, что когда вы звоните через AJAX, вы не передаете никаких данных на сервер.

Далее, когда вы используете method=GET, массив $_POST будет пустым.

Измените свой метод на POST и включите данные, подобные этим:

$.ajax({
  method: "POST",
  url: "http://localhost/Graphdata.php",
  data: {employeeNum: someValue}
  ...
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...