Как обновить в базе данных после изменения выбора в HTML выберите в Zend

У меня есть html выбор выпадающего списка на мой взгляд

    <?php $level = $this->escapeHtml($user->level); ?>

<?php if ($level == 1): ?>
<option value="1" selected ="selected">Administrator</option>
<option value="2" <?php IsSelected($level,2); ?>> Manager</option>
<option value="3" <?php IsSelected($level,3); ?>>HR Staff</option>
<?php elseif ($level == 2): ?>
<option value="1" <?php IsSelected($level,1); ?>>Administrator</option>
<option value="2" selected ="selected">Manager</option>
<option value="3" <?php IsSelected($level,3); ?>>HR Staff</option>
<?php elseif ($level == 3): ?>
<option value="1" <?php IsSelected($level,1); ?>>Administrator</option>
<option value="2" <?php IsSelected($level,2); ?>>Manager</option>
<option value="3" selected ="selected">HR Staff</option>
<?php endif; ?>
</select>

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

Я пытался использовать событие onchange Javascript

 <script type='text/javascript'>function changeLevel(level){
var user_id = level.value;
$.ajax({
type: 'GET',
url: '/editLevel/'+user_id,
cache: false,
success: function(response) {
$("#test").html(response);
}
});
alert(user_id);
}

</script>

но он не может вызвать родительский URL.
это выводы HTTP: // локальный / IJM / государственный /% 7B% 7BURL ()% 7D% 7D / editLevel / 2
вместо HTTP: // локальный / IJM / государственный / пользователь / editLevel / 2

кроме этого, как я могу обновить свою пользовательскую таблицу из этой функции javascript?

это моя функция в userController

public function editLevelAction()
{
//return $this->$view;
$id = (int) $this->params()->fromRoute('id', 0);
$data = array(
'level' => $level
);
$this->update('user', $data, 'id = ' .'39');

//return $this->redirect()->toRoute('user');}

Что мне нужно сделать, чтобы это работало? Заранее спасибо.

Здесь сейчас весь код.

<?php
$title = "Manage Users ";
$this->headtitle($title);

$identity = $this->identity()->level;
?>
<!-- these should be between the <head> tags, but make sure they are at least after the head if they can't be in the head-->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>
<div class="page-header">
<h1><?php echo $this->escapeHtml($title); ?><small>User list</small></h1>
</div>

<ul class="nav nav-tabs">
<li class="pull-right"><a href="<?php echo $this->url('user/add'); ?>"><i class="icon-plus"></i>&nbsp;Add new user</a></li>
</ul>
<?php if (count($users)): ?>
<table class="table table-hover">
<thead>
<tr>
<th>Name</th>
<th>E-mail</th>
<th>Level</th>
<th></th>
</tr>
</thead>
<?php foreach ($users as $user): ?>
<tr>
<td><a href="<?php echo $this->url('user/edit', array('id' => $user->id)); ?>"><?php echo $this->escapeHtml($user->first_name . ' ' . $user->last_name); ?></a></td>
<td><?php echo $this->escapeHtml($user->email); ?></td>
<td>
<div id="test"></div>
<?php $level = $this->escapeHtml($user->level); ?>
<select name="level" id= "level" onchange="changeLevel(this)">
<option value="1" <?php IsSelected($level,1); ?>>Administrator</option>
<option value="2" <?php IsSelected($level,2); ?>> Manager</option>
<option value="3" <?php IsSelected($level,3); ?>>HR Staff</option>
</select>
</td>
<td style="text-align: right;">
<a href="<?php echo $this->url('user/delete', array('id' => $user->id)); ?>" class="btn btn-mini btn-danger" rel="tooltip" title="Delete this user"><i class="icon-remove icon-white"></i></a>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php else: ?>
<h3>There are no registered users available.</h3>
<?php endif; ?>

<script type='text/javascript'>
function changeLevel(level){
var user_id = level.value;
$.ajax({
type: 'GET',
url: '/editLevel/'+user_id,
cache: false,
success: function(response) {
$("#test").html(response);
alert(user_id);
}
});

}
</script>

0

Решение

Попробуйте использовать AJAX (вот jQuery). Это просто быстрый пример, основанный на вашем:

jQuery Хостинг Библиотеки

<!-- jQUERY Libraries -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/themes/smoothness/jquery-ui.css" />
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js"></script>

Форма: Выбрать

<!-- Just a div to display results if you want to -->
<div id="test"></div>

<form>
<?php
// Here is just a quick function to help fix your redundant
// select check. This could probably be done better, but you
// don't need to echo out all 3 sets of options 3 times
function IsSelected($value = 1,$level = 1) {
echo ($value == $level)? 'selected="selected"':"";
}

$level = $this->escapeHtml($user->level); ?>

<select name="level" id= "level" onchange="changeLevel(this)">
<option value="1"<?php IsSelected($level,1); ?>>Administrator</option>
<option value="2"<?php IsSelected($level,2); ?>>Manager</option>
<option value="3"<?php IsSelected($level,3); ?>>HR Staff</option>
</select>
</form>

JQuery AJAX

<script type='text/javascript'>

function changeLevel(level){
var user_id = level.value;
$.ajax({
type: 'GET',
url: '/editLevel/'+user_id,
cache: false,
success: function(response) {
$("#test").html(response);
}
});

}
</script>
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]