Здравствуйте. Имеется вот такая форма: PHP: <form action="" method="post"> <input type="hidden" name="perms[adminAccess]" value=0> <input type="checkbox" <?=checked (groups ('id', $id, 1)['adminAccess'])?> name="perms[adminAccess]" class="inputText" value=1> <input type="hidden" name="perms[adminAccess]" value=0> <input type="checkbox" <?=checked (groups ('id', $id, 1)['seeLogs'])?> name="perms[seeLogs]" class="inputText" value=1> <input type="hidden" name="perms[adminAccess]" value=0> <input type="checkbox" <?=checked (groups ('id', $id, 1)['editLogs'])?> name="perms[editLogs]" class="inputText" value=1> <input type="submit" name="gSubmit" class="button"> </form> И вот такой обработчик: PHP: $id = $_GET['id']; if (isset ($_POST['gSubmit'])) { $newPerms = serialize ($_POST['perms']); $q = $db->query ("UPDATE `groups` SET `title` = '{$_POST['gTitle']}', `tBefore` = '{$_POST['gTBefore']}', `tAfter` = '{$_POST['gTAfter']}', `permissions` = '$newPerms' WHERE `id` = '$id'"); } Проблема в том. что про отправке формы в базу записывается строка, а не число (0/1). И из-за этого немного ломается логика. Можно было бы использовать intval, но может посоветуете какой другой вариант? Может там у serialize есть какое-то свойство, чтоб он преобразововал строки в число. А если и intval - то как его применить для записи в БД? P/S. В БД записывается такая строка: Код (Text): a:17:{s:11:"adminAccess";s:1:"1";s:7:"seeLogs";s:1:"1";s:8:"editLogs";s:1:"1";} а должна такая: Код (Text): a:18:{s:11:"adminAccess";i:1;s:7:"seeLogs";i:1;s:8:"editLogs";i:1;}
Строка: `title` = '{$_POST['gTitle']}' Число: `title` = {$_POST['gTitle']} +в БД столбец зарегестрирован как строковые данные --- Добавлено --- у вас записывается в БД как OBJECT JSON {} ключи сохраняются
Не, ты не понял. Ну понятно что сериализованный массив это строка. Мне нжно чтоб значения в этом массиве были именно в виде числа.
Ну... Так а как мне всё таки превратить строку "1" в число 1, которое приходит методом пост после отправки формы с чекбоксами и обрабатываясь через serialize уходит в БД? --- Добавлено --- Я понимаю что если я напишу строку то это и будет строка.... Вопрос в том, как лучше её в число преобразовать.
Но почему тогда конструкция PHP: $array = array ( 'adminAccess' => 1, 'seeLogs' => 1, 'editLogs' => 1, 'usersCreate' => 1, 'usersEdit' => 1, 'usersBan' => 1, 'usersPermban' => 1, 'usersIPban' => 1, 'groupsCreate' => 1, 'groupsEdit' => 1, 'newsCreate' => 1, 'newsEdit' => 1, 'commentsCreate' => 1, 'commentsEdit' => 1, 'downloadFiles' => 1, 'changeSkin' => 1, 'changePrefix' => 1, 'shopDiscount' => 5, //Скидка в магазине в процентах ); $arrayS = serialize($array); echo $arrayS; возвращает правильную строку?
В GET и POST всегда строки. То, что вы написали value=1, а не value="1" (что стандартнее) не делает из единицы целое число. Попробуйте перед сериализацией пробежаться по массиву и сделать intVal.
Да я так и хотел сразу сделать, но домал, может можно как-то сократить код, может в какой-то функции есть параметр, который сразу преобразует типы в такие как надо) Такое в php часто встречается)). Ладно, спасибо всем. Щас так и сделаю.