PHP MYSQL редактировать форму, пытаясь взорвать / взорвать строку в флажки? - PullRequest
1 голос
/ 18 августа 2011

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

Значения хранятся в строке БД, разделяя их запятыми, а INSERT

GetSQLValueString(implode($_POST['r_category'],", "), "text"),

Таким образом, в базе данных у меня может быть запись, которая выглядит следующим образом:

2,3,6,12

Это номера категорий.

Сейчас я создаю функцию формы редактирования, которую можно использовать для редактирования иОБНОВИТЬ эти записи.Я не могу найти способ "ВЗРЫВАТЬ" значения в флажки в форме редактирования ??

Так что, если вы войдете в систему и перейдете к ЗАПИСИ, которую вы хотите редактировать, например, у меня есть флажки, разделяющие категории, поэтому будет легко проверять и снимать отметку для добавления, а не для добавления ... Я перепробовал все, что мог, чтобы получить значения в POST и проверить при просмотре этой формы редактирования.

Вот примеродин из моих флажков категории на моей странице редактирования формы, но он не работает, когда у меня несколько категорий, как в примере выше. 2,3,6,12 ??:

  <input type="checkbox" name="r_category[]" 
<?php if (!(strcmp("2", $row_Recordset2['r_category']))) {
              echo "checked=\"checked\"";} ?> value="2" />Cat 2

Заранее спасибо, Ниндзя !!

Ответы [ 3 ]

5 голосов
/ 18 августа 2011

Я не могу найти способ "ВЗРЫВАТЬ" значения в флажки в форме редактирования

Эта строка настолько близка к ответу, что мне серьезно интересно, если этопост шутки.

Учитывая вашу структуру базы данных, как есть, вы можете использовать функцию explode(), чтобы разбить значение в массив на основе разделителя.Например:

$values = "1,2,3,4";
$array_of_values = explode(",", $values);

После этого $array_of_values будет содержать массив из четырех элементов со значениями 1, 2, 3 и 4 соответственно.

При принятии решения, отображать или нет флажок как отмеченный, вы можете использовать функцию in_array(), чтобы сделать этот вызов:

if (in_array("2", $array_of_values)) {
  echo 'checked="checked"';
}

Помимо этого, позвольте мне принять этовозможность повторить то, что @MarkB сказал в комментариях к этому вопросу: это плохая идея хранить несколько значений в одном поле базы данных.Это усложняет поиск вещей, усложняет добавление значений ... просто усложняет все, что нужно.

Лучший способ справиться с этим - иметь таблицу «многие ко многим»который хранит строки элементов и категорий, с одной строкой для каждой категории, к которой принадлежит элемент.

Другими словами, где у вас в настоящее время есть это:

Item | Category
---------------
123  | 1,2,3,4

Вместо этого у вас будеттаблица, которая выглядит так:

Item | Category
---------------
123  | 1
123  | 2
123  | 3
123  | 4
0 голосов
/ 18 октября 2014

Это условное выражение in_array никогда не работало на меня. Вместо этого я разработал полностью интерфейсное решение, которое работает как шарм и автоматически обновляется на основе изменений в базе данных. Если вам интересно, проверьте это здесь. https://stackoverflow.com/a/26433841/1896348

0 голосов
/ 15 мая 2013

Вы можете использовать его, как показано ниже, это может быть полезно

if (in_array("2", $row_Recordset2['r_category'])) {echo "Checked";} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...