Получить данные из базы данных mysql для использования в автозаполнении jquery-ui - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть форма ввода, и мне нужно заполнить автозаполнение данными из базы данных.Кажется, мой подход работает, но я уверен, что это не самый эффективный способ.(Я новичок в php, javascript) Вот мой код:

//get all organizations
$org_array = '';
$sql = "SELECT id, name FROM organizations";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$results = $stmt->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
foreach ($results as $row) {
    $sql = "SELECT id, name FROM organizations WHERE id = :id";
    $stmt = $pdo->prepare($sql);
    $id = $row['id'];
    $stmt->bindValue(':id', $id);
    $stmt->execute();
    $org_id = $stmt->fetch(PDO::FETCH_ASSOC);
    //echo $org_id['name'];
    $org_array = $org_array . '"' . $org_id['name'] . '",';
}
}

А вот часть JS:

<input type="text" class="form-control autocompleteOrgs" name="newOrganization" id="newOrganization" aria-describedby="newOrganizationHelp" value="<?php echo 
$my_profile['organization']; ?>">

<script>
$(function() {
  var orgTags = [<?php echo $org_array ?>];
  $(".autocompleteOrgs").autocomplete({
    source: orgTags
  });
});
</script>

1 Ответ

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

Вам не нужно выбирать организации еще раз, лучше подходить так:

$org_array = '';
$sql = "SELECT id, name FROM organizations";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$results = $stmt->fetchall(PDO::FETCH_ASSOC);
if (count($results) > 0) {
    $org_array = implode(',', array_column($results, 'name'));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...