Так что я использую x-editable для начальной загрузки, что очень здорово для меня.
Может кто-нибудь помочь мне, как установить значения параметров из базы данных MySQL в X-редактируемые опции выбора
это мой php код
$result1 = ("SELECT * FROM users where type='agent'") or mysql_error();
$users=mysql_query($result1);
while($rowa = mysql_fetch_array($users)){
?>
<option name="agent" value = "<?php echo $rowa['username']; ?>" >
<?php echo $rowa['username']; ?>
</option>
<?php
}
?>
Итак, что вы хотите сделать, это на самом деле создать строку JSON, которую вы поместите в anchor
элемент. Давайте посмотрим, как это выглядит.
Сначала вам нужно вставить имена пользователей в объект массива it, затем json кодировать его. Это будет выглядеть так:
$usernames = array();
while(.....){
$usernames[] = $rowa['username'];
}
$usernames = json_encode($usernames);
<a href="#"id="username" //your reference
data-type="select" //so the x-editable library makes a select list
data-name="username"data-pk="1"data-value="5"data-original-title="Select Username"data-source="<?php echo $usernames?"> //this is your JSON array of usernames.
">
Username
</a>
И это приведет к выбору списка имен пользователей.
Я также наткнулся на те же проблемы, что и Йоханнес Киль.
Однако после небольшого расследования я обнаружил следующее и, наконец, исправил его — каким-то образом. Это может быть не самый элегантный подход, поэтому идеи для улучшения очень приветствуются.
Вот чего я хотел добиться:
В поле выбора должны отображаться результаты запроса MySQL. После успешного выбора я хочу обновить div новым контентом, также загружаемым через внешний PHP-файл.
Проблема в решении, указанном выше:
JSON-массив, возвращаемый PHP (в моем случае) выглядит следующим образом:
[{"value":"1","text":"TEXT1"},{"value":"2","text":"TEXT2"}]
Массив, используемый в скрипте, выглядит следующим образом:
{'1': 'something', '2': 'another thing'}
Поэтому я предположил, что двойные кавычки могут быть проблемой.
Я сделал тогда в PHP:
$myarray = str_replace("\"", "'", $myarray);
И легко, как раз-два-три, это сработало. Вот и все, что завершено:
Javascript для определения редактируемого элемента выбора:
$('#myselect-id').editable( {
success: function(response, newValue) {
$( "#mydiv-id" ).load("loading-external-results.php");
}
});
PHP
<?php
$myarray = array();
$query = "SELECT id, field1 FROM mytable";
$result = mysqli_query($dbconnect, $query);
while ($row = mysqli_fetch_array($result))
{
$myarray[] = array('value' => $row['id'], 'text' => $row['field1']);
}
$myarray = json_encode($myarray);
$myarray = str_replace("\"", "'", $myarray);
?>
HTML для генерации элемента select:
<a href="#" id="myselect-id"data-type="select"data-name="fieldname-in-table-to-update"data-pk="id-of-the-affected-mysql-row"data-value="5"data-url="post.php"data-source="'.$myarray.'">Text for Select</a>
<div id="mydiv-id">
Some Content, replaced on success of select element.
</div>