2015-02-27 7 views
0

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

Вот то, что я до сих пор ...

Для каждого ящика проверил я из положил это в модальный:

<div class="form-group"> 
<label>Permission Name</label> 
<input class="del-'+row.id+' form-control" id="name['+row.name+']" type="text" name="name['+row.id+']" value="'+row.name+'" > 
<input class="del-'+row.id+' form-control" id="id['+row.name+']" type="hidden" name="id['+row.id+']" value="'+row.id+'" > 
</div> 

Вот что код JS выглядит для выше:

$("#editModalForm").append('<div class="form-group"><label>Permission Name</label><input class="del-'+row.id+' form-control" id="name['+row.name+']" type="text" name="name['+row.id+']" value="'+row.name+'" ><input class="del-'+row.id+' form-control" id="id['+row.name+']" type="hidden" name="id['+row.id+']" value="'+row.id+'" ></div>'); 

Вот PHP код, когда я отправить форму:

//Update permission level names 
$permissionId = $_POST['id']; 
if($permissionDetails['name'] != $_POST['name']) { 
    $permission = trim($_POST['name']); 
    $previousName = $permissionDetails['name']; 

    //Validate new name 
    if (permissionNameExists($permission)) { 
     $errors[] = lang("ACCOUNT_PERMISSIONNAME_IN_USE", array($permission)); 
    } elseif (minMaxRange(1, 50, $permission)) { 
     $errors[] = lang("ACCOUNT_PERMISSION_CHAR_LIMIT", array(1, 50));  
    } else { 
     if (updatePermissionNames($permissionId, $permission)) { 
      $successes[] = lang("PERMISSION_NAME_UPDATE", array($previousName, $permission)); 
     } else { 
      $errors[] = lang("SQL_ERROR"); 
     } 
    } 
} 

Вот функция, которая обновляет базу данных:

//Change a multiple permission level names 
function updatePermissionNames($id, $name) { 
global $mysqli,$db_table_prefix; 
$i = 0; 
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."permissions 
    SET name = ? 
    WHERE 
    id = ? 
    LIMIT 1"); 
foreach($id as $ids) { 
    $stmt->bind_param("si", $name, $ids); 
    $result = $stmt->execute(); 
} 
$stmt->close(); 
return $result; 
} 

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

+0

Что вы пытаетесь объединить в значениях вашего HTML-атрибута? Это не JavaScript. – PHPglue

+0

'$ _POST ['name']' будет массивом, а не строкой. – Barmar

+0

Я не опубликовал полный код JS. Просто добавьте его для справки. – iamthestreets

ответ

0

, если вы хотите получить значение входа с именем = "идентификатор [ '+ row.id +']" вы должны сделать использовать

$arrID = $_POST['id'] 
foreach($arrID as $key => $value){ 
    echo $key; 
    echo $value; 
} 

потому что ввод ID [1] является массивом, когда сообщение на сервер, это не строка.

Смежные вопросы