PHP | Передача option в select

456
14 января 2017, 14:46

Получаю список "Категорий" из таблицы бд MySql. И задача заполнить Select полученным списком.

<script type="text/javascript">
    $.each(selectValues, function(key, value) {
        $('#mySelect')
            .append($("<option></option>")
                .attr("value",key)
                .text(value));
    });
</script>

Все пишут это, но как передать массив тогда в js? Тем более у меня массив не ассоциативный, а Одномерный.

<?php
function getArray($link) {
    $query ="SELECT goods.name as Name FROM goods.categories;";
    $result = mysqli_query($link, $query) or die("Ошибка: ".mysqli_error($link));
    if($result) {
        $i = 0;
        while($row = mysqli_fetch_object($result)) {
            $array[$i] = $row->Name;
            $i++;
        } // while
        mysqli_free_result($result);
    }
    return $array;
}?>>

Вот я получаю массив. Осталось закинуть в select с id="mySelect"...Как?)

Answer 1

Вывод можно посмотреть в другом вопросе, а вот как нужно делать получение

<?php
function getArray($pdo) {
    return $pdo->query("SELECT id, name FROM categories")->fetchAll(PDO::FETCH_KEY_PAIR);
}

Здесь

  • исправлен SQL запрос
  • в качестве индекса возвращаемого массива используется id категории, а не номер по порядку
  • используется PDO, которое, в отличие от mysqli, делает всю работу по получению данных за нас

И да - как правильно заметил автор другого ответа, HTML надо выводить как HTML

$array = getArray($link);//получаем массив опшнов
?>
<select id="mySelect" name="mySelect">
<?php foreach($array as $id => $name): ?>
    <option id="<?=$id?>"><?=$name?></option>
</select>
<?php endforeach ?>
Answer 2

Ну, вероятно так

$array = getArray($link);//получаем массив опшнов
$out = '';
foreach($array as $k => $v){ //пробегаемся по каждому
    $out .= "<option id='$k'>$v</option>"; //каждый опшн добавляем к выводу, обрамляя тэгом и айди
}
$out = "<select id='mySelect'>$out</select>";// обрамляем выводимые опшны в тэг select
echo $out;//выводим наш select

И да, совсем не учел случай, если у автора массив получается через запрос, а не через создание страницы:

//php
$array = getArray($link);
echo encode($array);
//js
$.ajax({
    url: 'myscript.php',
}).success(function(data){
    var response = JSON.parse(data);
    for(i = 0; i < response.length; i++){
        $('#mySelect').append('<option id = \'' + i + '\'>' + response[i] + '</option>' );
    }
});
READ ALSO
Как передать textarea в php

Как передать textarea в php

Пытаюсь настроить отправку сообщенй с формы на e-mailУже все сделал

377
VK Api [IFrame] передача данных в JS

VK Api [IFrame] передача данных в JS

Есть чат на php данные пользователя в chatphp получаю так

363