Мне трудно работать с формой, которая передает массив. Я включил 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;
?>
Жду вашего ответа! Ваше здоровье!
Немного запутался. Как это выглядит при просмотре визуализированного источника? value='<?php echo($product) ?>.
@ficuscr Я бы предположил, что это похоже на value='<?php echo(Array()) ?> (с уведомлением о преобразовании массива в строку).
Можете ли вы показать, как вы создаете массив $product, некоторые примеры значений и пример того, что вы пытаетесь получить от него при отправке формы?
@ Don'tPanic Привет! Я попробовал "echo $ product ['a']" во фрейме, который отправляет форму, это работает. Но эта же команда не работает в целевом кадре. Похоже, целевой фрейм не получает массив.
Привет! Не могли бы вы отредактировать свой вопрос, чтобы показать вывод var_dump($product), пожалуйста?
@ Don'tPanic Это примерно так: "$ product = array (" a "=> $ a," b "=> $ b," c "=> $ c," d "=> $ d," e "=> $ e);" Я получил эти переменные из базы данных mysql, и мне нужно поместить эти переменные в новую таблицу в соответствующем столбце целевого фрейма.
Хорошо. Ожидаете ли вы, что пользователь введет список значений, разделенных запятыми, которые соответствуют a, b, c, d и e?
Одно целое число от пользователя
@ Don'tPanic значения этих переменных уже были присвоены из базы данных.






Это может быть так же просто, как использование взорваться / взорваться для транспортировки массива.
<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
"Фрейм" меня сбивает.
Да, здесь то же самое, я не уверен, что это имеет в виду в данном контексте.
На самом деле мне нужно разделить всю страницу на три раздела: левый раздел, раздел top_right и bottom_section, каждый из которых используется для отображения разного содержимого.
@ 张 剑桥 Не зацикливайтесь на кадрах так сильно. Думаю, это излишне усложняет. С iFrames вы можете рассматривать его как 3 отдельные страницы.
Я бы лично посмотрел на несколько скрытых входов, присвоив каждому конкретное значение из $products. Он более явный и упростит получение ожидаемых данных POST от целевого скрипта PHP.
У вас не может быть открытого тега PHP и эха внутри печатаемой строки. И повторение массива тоже не сработает.