Как с помощью скрытого тега передать переменную методом GET в скрипт php?
Я новичок в веб-разработке. Пытаюсь на странице создать таблицу произвольного размера с помощью языка html и php. Мне нужно скрыто хранить размер таблицы и по нажатию кнопки увеличивать или уменьшать его. Написал сам код по прорисовке таблицы и он работает отлично, но не получается передать туда переменную с размером таблицы. И именно не получается вед суперглобальный массив GEt пуст. Использую такой код.
<html>
<body>
<form method="GET">
<input type="hidden" name="size" value="10">
</form>
<?php include 'php/test.php'; ?>//файл в котором прорисовывается таблица
</body>
</html>
Предлагайте и другие варианты хранения скрытой переменной. Буду рад если ещё дадите советы по созданию кнопок для уменьшения и увеличения размера.
Ответы (4 шт):
page.php
<html>
<body>
<form method="GET" action="page.php">
<?php
if( isset( $_GET['size'] ) ) {
$size = $_GET['size'];
} else {
$size = 3;
}
if( isset( $_GET['inc'] ) ) {
$size++;
} else {
if( isset( $_GET['dec']) && ($size > 1 ) ) {
$size--;
}
}
?>
<input type="hidden" name="size" value="<?=$size?>">
<input type="submit" name="dec" value="Уменьшить">
<input type="submit" name="inc" value="Увеличить">
</form>
<?php
include 'table.php';
?>
</body>
</html>
table.php
<table>
<?php
global $size;
for( $i = 1; $i <= $size; $i++ ) {
echo "<tr>";
for( $j = 1; $j <= $size; $j++ ) {
echo "\n<td>Ячейка $i:$j</td>";
}
echo '</tr>';
}
?>
</table>
<style>
table,td {
border:1px solid grey;
}
</style>
$_GET пустой из-за того, что форму надо отправлять (submit), чтобы хранить переменную, которая изменяется от клиента, можно применить следующую тактику:
- Вы формируете отдельный JS скрипт, который считывает событие изменения размерности таблицы (
changeinput-а) и передает черезajaxзначение; - Скрипт-обработчик принимает значение через
$_GET/$_POSTи формирует html код таблицы и отдает его обратно JS скрипту; - JS скипт получает ответ с html кодом таблицы и рисует ее.
Другой вариант - изменить форму вашу на <form method="GET" action"/">. В action прописываете путь страницы, где будет отображаться таблица. Добавляете обязательный <input type="submit"> либо на JS делаете submit формы по нажатию на кнопку. Тут возможно перегрузка страницы.
Советую использовать первый метод - куда лучше решение.
Твоему скрипту доступен глобальный массив $_GET с параметрами, просто укажи в форме параметр action.
<html>
<body>
<form method="GET" action="/">
<input type="hidden" name="size" value="10">
</form>
<?php
global $size;
$size = $_GET["size"]; // используй $size для размерности
if (!$size) $size = 10; //значние по умолчанию
include 'php/test.php'; ?>//файл в котором прорисовывается таблица
</body>
</html>
Но лучше для этой задачи использоваить JS.
В странице оптравки :
<form method="GET" action="send-data.php">
<input type="hidden" name="size" value="10">
<input type="submit" value="Отправить">
</form>
В странице получателя (send-data.php):
<?php echo $_GET['size'] ?> //тут печатается 10
Если захотите пробовать POST то просто замените все слова GET на POST во всех страницах