Значение GET XMLHttpRequest не будет вводиться в mysqli_query SQL - PullRequest
0 голосов
/ 23 февраля 2019

Я не могу получить идентификатор коммутатора для динамической вставки в запрос mysqli.Если я вставлю текст в SQL, если возвращает результат, но $ _GET не работает.From:

 function format_switch(sw_id)
{
  var xhttp = new XMLHttpRequest();
  var sw_id = (sw_id);
  xhttp.open("GET", "return.php?sw_id="+sw_id, true);
  console.log(sw_id);
  xhttp.send();
}

в журнале консоли отображается правильный sw_id (switch_1).

Но этот код PHP:

<?php
  ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$switchnumber = $_GET['sw_id'];
$address = "localhost";
$user = "root";
$password = "CBR1000f";
$database = "pinetdb";
$con = new mysqli($address,$user,$password,$database);
$result = mysqli_query($con, "SELECT switchnumber,state FROM pinetdb.Switches WHERE switchnumber = '$switchnumber'");
if (mysqli_num_rows($result) > 0){
    if ($row = mysqli_fetch_assoc($result)) {
        echo $row["switchnumber"]. ", " .$row["state"] ."<br>";
    }
}
?>

возвращает:

Notice: Undefined index: swt_id in /var/www/pinet/html/return.php on line 4
mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 0 [type] => 0 )

Если я введу ожидаемое значение sw_id в SQL, код вернет мой ожидаемый результат:

<?php
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 
$switchnumber = $_GET[sw_id];
$address = "localhost";
$user = "root";
$password = "CBR1000f";
$database = "pinetdb";
$con = new mysqli($address,$user,$password,$database);
$result = mysqli_query($con, "SELECT switchnumber,state FROM pinetdb.Switches WHERE switchnumber = 'switch_1'");
if (mysqli_num_rows($result) > 0){
    if ($row = mysqli_fetch_assoc($result)) {
        echo $row["switchnumber"]. ", " .$row["state"] ."<br>";
    }
}
?>

вернет:

Notice: Undefined index: swt_id in /var/www/pinet/html/return.php on line 4
switch_1, 1
mysqli_result Object ( [current_field] => 0 [field_count] => 2 [lengths] => [num_rows] => 1 [type] => 0 ) 

, как и ожидалось.

Я сделал это к этому моменту (начиная с новой установки Linux) из других ответов, но не могу найти способ продвинуться с этим.Очень похожий php, который выполняет запрос на обновление, работает, но я не могу отобразить обновленное поле.Пожалуйста, дайте мне знать, что не так с моим сценарием / с.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я добавил код, скопированный из W3Schools, в мой js и получил поле для обновления под кнопкой, а не на другой странице.Достаточно хорошо!В моем php не было ничего плохого - я полагаю, что он не сохраняет детали $ _GET после завершения скрипта, поэтому не будет отображаться при открытии файла .php в браузере.

Вот мой пересмотренный javascript:

 function return_switch(swt_id)
    {
  var xhttp = new XMLHttpRequest();
  var swt_id = (swt_id);
  xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
  document.getElementById("switchstate").innerHTML = this.responseText;
  }
  };
  xhttp.open("GET", "return.php?swt_id="+swt_id, true);
  console.log(swt_id);
  xhttp.send();
  }

и вот HTML-код с включением <p><\p> для хранения динамически возвращаемого поля базы данных:

    <!doctype html>
    <html>
    <head>
    <script src="change_switch.js"></script>
    </head>
    <body>
    <h1> Click the button to turn on the Switch</h1>
    <br>
    <button type="button" onclick="update_switch(this.id); return_switch(this.id)"  id="switch_1">Switch 1</button>
    <button type="button" onclick="update_switch(this.id); return_switch(this.id)"  id="switch_2">Switch 2</button>
    <button type="button" onclick="update_switch(this.id); return_switch(this.id)"  id="switch_3">Switch 3</button>
    <button type="button" onclick="update_switch(this.id); return_switch(this.id)"  id="switch_4">Switch 4</button>
    <button type="button" onclick="return_switch(this.id); update_switch(this.id)"  id="switch_5">Switch 5</button>
    <br>
    <p id="switchstate"></p>
    <br>
    <button type="button" onclick="location.href='/index.html'">Home</button>
    </body>
    </html>
0 голосов
/ 23 февраля 2019

Измените эту строку в вашем php

$switchnumber = $_GET[sw_id];

на

$switchnumber = $_GET['sw_id'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...