Вопрос по php – PHP передать и получить двумерный массив из формы

2

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

Первоначально попробовал двухмерный массив ... отказались от этого подхода. Теперь попробуем использовать два одномерных массива согласно предложению ниже. Я собираюсь с массивами, потому что количество записей в форме зависит от того, сколько категорий создал пользователь. Таблица категорий имеет поля id (int), cat (text) и userid (int)

Сложность передачи двух массивов заключается в том, как связать два. Если я передаю категории в виде массива на принимающую страницу, я могу перебирать значения для создания операторов SQL для изменения каждой записи. Однако я не могу понять, как получить правильный идентификатор, необходимый для идентификации записи. Если я использую foreach ($ idarray как $ id) внутри foreach (catsarray как $ val), я получу несколько идентификаторов для каждой кошки. Как перебрать идентификаторы в синхронизации с переборами кошек? Большое спасибо за помощь, так как я потратил два дня на это :(

<code>//I am working with $catsarray and $idarray, each with identical indexes, 1,2,3 etc.
//How do I get appropriate id for each cat
foreach($catsarray as $val) {
$sql = "UPDATE cats, set name = $val WHERE (userid ='$userid' AND id=??????)";
mysql_query($sql);
}
</code>

Ваш Ответ

1   ответ
4

хороший и единый синтаксис для создания двумерного массива;

  <input type="text" name="cat[]" value="cat1">
  <input type="text" name="cat[]" value="cat2">
    ...

При получении кошек;

echo $_POST['cat'][0] // echoes cat1
echo $_POST['cat'][1] // echoes cat2

Дальнейший пример;

Согласно этому определению,

<input type="text" name="cat[$cat][$id]" value="cat1">

foreach ($_POST['cat'] as $a=>$b){
    // $a == $cat
    foreach($b as $c=>$d) {
       // $c == $id
    }
}
$a=>$b означает ключ => значение. Наши ключи - это $ cat и $ id, которые мы хотим отправить на сервер. уведомление$b является массивом идентификаторов, который принадлежит $ категории. Чтобы быть более понятным, создайте форму для второго примера и посмотритеprint_r($_POST['cat']);
Согласитесь с @miqbal, вместо того, чтобы пытаться создать двумерный массив с двумя значениями: cat и id, просто создайте два одномерных массива, один для cat, а другой для id. Затем зациклите оба вместе на стороне POST.
Конечно, вы можете использовать.
Я распечатал. Так что я могу использовать $ a выше и $ c в качестве cat и id соответственно? user1260310
Используя вариант второго примера, & lt; input type = & quot; text & quot; name = & quot; cat [$ i] [name] & quot; значение = & Quot; cat1 & Quot; & GT; и & lt; тип ввода = & quot; скрытый & quot; name = & quot; cat [$ i] [id] & quot; значение = id1, я передал то, что выглядит как действительный массив (повторяется как массив). Должен ли я использовать foreach и проходить через, чтобы получить значения каждого? Заменяет ли $ a == & gt; $ b место $ val в одномерном массиве, чтобы я мог затем вызывать $ a или $ b по мере необходимости? Многие, спасибо! user1260310

Похожие вопросы