Member 13710214 Ответов: 1

Мой AJAX, PHP выпадающий список не выводит данные, и я не могу понять, почему. Помогите плз :(


Я следовал учебнику w3schools о том, как создать раскрывающийся список с помощью AJAX и PHP, который при выборе элемента данные для этого элемента отображаются в табличном формате.

Я успешно создал раскрывающийся список. Однако, когда я выбираю элемент, никакие данные не возвращаются. Я никак не могу понять, почему это происходит.

Что я уже пробовал:

PHP-код

<?php

$Q в = isset и (параметр$_GET['вопрос']) ? Параметр $_GET['вопрос'] : ";
$servername = "localhost";
$имя пользователя = "корень";
$пароль = "";
$данных = "csc_db";

// Создать соединение
$соед = новый в mysqli($имя_сервера,$имя пользователя,$пароль $базе);

// Проверить подключение
if ($conn->connect_error) {
die("ошибка подключения:" . $conn->connect_error);
}
Эхо "успешно подключено";

mysqli_select_db($Конн,"csc_db");
$среда SQL="выбрать * из пользователей, где ID = '".$вопрос."'";
$result = mysqli_query($conn,$sql);



$sql = "SELECT * FROM `table 5` ";
$result = $conn->query($sql);

if ($result-> num_rows > 0) {
// выходные данные каждой строки
еще {
Эхо "0 результатов";
}
if (!$result) {
trigger_error('неверный запрос:' . $conn->ошибка);
}
$conn->закрыть();
?>
<pre>
AJAX-код

function showUser(str) {
    if (str == "") {
        document.getElementById("txtHint").innerHTML = "";
        return;
    } else { 
        if (window.XMLHttpRequest) {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp = new XMLHttpRequest();
        } else {
            // code for IE6, IE5
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById("txtHint").innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET","getuser.php?q="+str,true);
        xmlhttp.send();
    }
}



Раскрывающийся
</head>
<body>

<form>
<select name="users" onchange="showUser(this.value)">
  <option value="">Select a Food:</option>
  <option value="1">Bacon Slices</option>
  <option value="2">Blueberry Pancakes</option>
  <option value="3">Buttermilk Pancakes</option>
  <option value="4">Cake Doughnuts</option>
  </select>
</form>
<br>
<div id="txtHint">Person info will be listed here...</div>

</body>
</html>

1 Ответов

Рейтинг:
1

Patrice T

$sql="SELECT * FROM user WHERE id = '".$q."'";

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]