Передача массива и пользовательского ввода с помощью формы

Мне трудно работать с формой, которая передает массив. Я включил 5 переменных («$ a, $ b, $ c, $ d, $ e») в массив с именем $ product, затем я передал его в другую форму использования кадра вместе с вводом, требующим ввода пользователем значения. . Таким образом, одновременно будет передаваться массив и ввод. Так что я должен использовать «отправить» или «получить»? Кажется, я должен использовать "post" для передачи массива, но пользовательский ввод может быть передан только через "get", верно? Ниже приведен код, который у меня был (форма находится внутри таблицы):

print "<td><form class=button action='bottom_right.php' method='post' target='bottom_right'>
        <input type='text' name='quantity'>
        <input type='hidden' name='product' value='<?php echo($product) ?>'>
        <button type='submit' class='btn btn-primary mb-2'>Add</button>
      </form></td>";

Кроме того, как мне получить содержимое из другого фрейма? Это должно быть что-то вроде ниже? Как я мог вывести одну переменную из массива?

<?php  
session_start();
$quantity=$_POST['quantity'];
$product=$_POST['product'];
echo $quantity;
echo $product['a'];
echo $b;
?>

Жду вашего ответа! Ваше здоровье!

У вас не может быть открытого тега PHP и эха внутри печатаемой строки. И повторение массива тоже не сработает.

Don't Panic 14.05.2018 18:44

Немного запутался. Как это выглядит при просмотре визуализированного источника? value='<?php echo($product) ?>.

ficuscr 14.05.2018 18:45

@ficuscr Я бы предположил, что это похоже на value='<?php echo(Array()) ?> (с уведомлением о преобразовании массива в строку).

Don't Panic 14.05.2018 18:46

Можете ли вы показать, как вы создаете массив $product, некоторые примеры значений и пример того, что вы пытаетесь получить от него при отправке формы?

Don't Panic 14.05.2018 18:48

@ Don'tPanic Привет! Я попробовал "echo $ product ['a']" во фрейме, который отправляет форму, это работает. Но эта же команда не работает в целевом кадре. Похоже, целевой фрейм не получает массив.

张剑桥 14.05.2018 18:52

Привет! Не могли бы вы отредактировать свой вопрос, чтобы показать вывод var_dump($product), пожалуйста?

Don't Panic 14.05.2018 18:54

@ Don'tPanic Это примерно так: "$ product = array (" a "=> $ a," b "=> $ b," c "=> $ c," d "=> $ d," e "=> $ e);" Я получил эти переменные из базы данных mysql, и мне нужно поместить эти переменные в новую таблицу в соответствующем столбце целевого фрейма.

张剑桥 14.05.2018 18:57

Хорошо. Ожидаете ли вы, что пользователь введет список значений, разделенных запятыми, которые соответствуют a, b, c, d и e?

Don't Panic 14.05.2018 18:58

Одно целое число от пользователя

张剑桥 14.05.2018 19:00

@ Don'tPanic значения этих переменных уже были присвоены из базы данных.

张剑桥 14.05.2018 19:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
10
257
1

Ответы 1

Это может быть так же просто, как использование взорваться / взорваться для транспортировки массива.

<input type='hidden' name='product' value='<?= implode(',', $product) ?>' />

А затем в PHP вы будете искать строку концентрированных значений под ключом product.

<?php  

$quantity = (isset($_POST['quantity'])) $_POST['quantity'] ? : null;
$product = (isset($_POST['product'])) $_POST['product'] ? : '';
$productArray = explode(',', $product);

var_dump($productArray);

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

<!-- would probably POST if going this route...? -->
<input type='hidden' name='product[a]' value='<?= $product['a'] ?>' />
<input type='hidden' name='product[b]' value='<?= $product['b'] ?>' />

Поиграйте с ним и используйте var_dump($_POST);, чтобы понять, как подходы изменяют то, что вы получаете.

Я согласен! Хотя все еще существует проблема, что весь раздел HTML, содержащий $product, является строковым выводом с print

Don't Panic 14.05.2018 18:55

"Фрейм" меня сбивает.

ficuscr 14.05.2018 18:56

Да, здесь то же самое, я не уверен, что это имеет в виду в данном контексте.

Don't Panic 14.05.2018 18:57

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

张剑桥 14.05.2018 18:59

@ 张 剑桥 Не зацикливайтесь на кадрах так сильно. Думаю, это излишне усложняет. С iFrames вы можете рассматривать его как 3 отдельные страницы.

ficuscr 14.05.2018 19:01

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

ficuscr 14.05.2018 19:07

Другие вопросы по теме