Получить базу данных с помощью AJAX - PullRequest
0 голосов
/ 31 марта 2011

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

Теперь вместо того, чтобы просто использовать одно раскрывающееся окно для получения результатов базы данных, я бы также хотел добавить поле ввода. Результаты не должны отображаться после того, как пользователь выбирает значение из раскрывающегося списка, пользователю необходимо также вставить значение в поле ввода для отображения результата. Результат должен основываться на раскрывающемся окне ВМЕСТЕ со значением, вставленным в поле ввода.

Вы можете увидеть php-файл на примере выше, где SQL-запрос выглядит так:

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

Я думаю, что, возможно, новый SQL-запрос должен выглядеть примерно так:

$q=$_GET["q"];
$q=$_GET["d"];
$sql="SELECT * FROM user WHERE id = '".$q."' AND date = '".$d."'";

где $ d представляет значение из поля ввода.

Возможно ли это?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 31 марта 2011

1) Примеры W3Schools используют абсолютно ужасный код PHP.Например, вы скопировали и вставили туда этот код и, вероятно, продолжите использовать его, даже не заметив, что он чрезвычайно склонен к атакам SQL-инъекций .Всегда чистый пользовательский ввод, всегда .В противном случае, не беспокойтесь, когда увидите, что ваша база данных исчезла.

2) Слово «дата» - это зарезервированное слово в словаре MySQL.Он используется для указания типа данных столбца или для форматирования выражения даты для использования в запросе.Не используйте зарезервированные слова для имен столбцов, вы, скорее всего, столкнетесь с ошибкой, и вам будет интересно, что происходит с вашим кодом, который выглядит нормально.

3) Всегда тестируйте свой SQL в графическом интерфейсе( SQLYog - мой любимый), чтобы проверить, работает ли он и можно ли как-то его сломать, основываясь на вводе.

В противном случае - да, попробуйте собственное предложение, лучше всего использовать метод проб и ошибок.способ учиться, потому что он останется с вами навсегда.

1 голос
/ 31 марта 2011

Безусловно, вам просто нужно добавить переменные в вызов ajax:

<html>
<head>
    <script type="text/javascript">
    function showUser()
    {
    str=document.getElementById("users").value;
    txt=document.getElementById("txtinput").value;
    if (str==""||txt=="")
      {
      document.getElementById("txtHint").innerHTML="";
      return;
      }
    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 (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","getuser.php?q="+str+"&d="+txt,true);
    xmlhttp.send();
    }
    </script>
</head>
<body>

<form>
<select id="users" name="users" onchange="showUser()">
<option value="">Select a person:</option>
<option value="1">Peter Griffin</option>
<option value="2">Lois Griffin</option>
<option value="3">Glenn Quagmire</option>
<option value="4">Joseph Swanson</option>
</select>
<input type="text" id="txtinput" onchange="showUser()"/>
</form>
<br />
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...