Как передать переменную PHP в value HTML?
Есть две формы.
В одной из форм из выпадающий список и каждому пункту присвоен идентификатор в графе value
Из этой графы я вытаскиваю значение и записываю его в переменную PHP через POST
Но потом мне нужно передать эту переменную во вторую форму в графу value, но я не пойму как.
- Вопрос задан более трёх лет назад
- 1404 просмотра
3 комментария
Простой 3 комментария
Дмитрий @slo_nik Куратор тега PHP
Добрый вечер.
Это можно сделать и без php используя jquery/js.
Если Вы хотите сначала отправить на сервер, а потом получить в ответе от сервера — используйте ajax.
Как передать переменную JavaScript в PHP и наоборот?
На форумах очень часто можно встретить вопросы вроде:
Как передать переменную в JavaScript из PHP? или Как передать данные из PHP в JavaScript?
Эти вопросы выдают новичков и сейчас я постараюсь объяснить почему. А также ответить как же все-таки это сделать.
Почему вопрос о передаче переменной из языка в язык — вопрос новичка? Потому что невозможно это сделать! Языки программирования работают каждый самостоятельно. А передача напрямую между ними невозможна. Сейчас объясню почему.
Дело в том, что PHP и JavaScript связаны лишь условно. PHP работает на сервере, а JavaScript — в браузере.
Напомню алгоритм работы интернета. То есть, что происходит, когда вы запрашиваете адрес. Например, что должно произойти чтобы выполнилась JavaScript функция на странице http://dayte2.com.
- Браузер формирует заголовки запроса, присоединяет к в них какую-то важную информацию о себе и отсылает их на этот адрес.
- Сервер принимает заголовки и понимает что нужно отдать документ. Он понимает, что запрашивается не документ, а программа. Тогда он запускает эту программу и отдает ей все данные, что получил от браузера.
- Программа (php-скрипт) запускается, отрабатывает и просто печатает результат своей работы. Результатом работы может быть html-страница, куда включены JavaScript-скрипты. Но мы помним, что в данный момент работает PHP и JavaScript для него ничем не отличается от любых других данных. Просто буковки.
- Сервер получает то, что напечатала программа. Прикрепляет заголовки ответа и отсылает все это запросившему браузеру.
- Браузер получает код страницы и отображает его. Догружает нужные файлы (js, css, картинки), применяет их к html-коду. И только теперь включается JavaScript, встроенный в браузер.
Если посмотреть внимательно на этот порядок работы, можно ответить на вопрос
Как передать переменную из PHP в JavaScript?
Нужно во время выполнения скрипта PHP просто сформировать такой текст, чтобы он потом мог выполниться в браузере. Например.
alert("'.$var.'"); ?>
Если вы создадите файл php с таким содержимым и запустите его из браузера — вы увидите пустую страницу и сообщение alert.
Разумеется, нужно помнить, что синтаксис должен быть JavaScript. Фактически, когда мы формируем код JS на PHP — мы должны помнить, что сначала php что-то сгенерирует и это что-то должно быть валидным JS.
В данном случае наш php-скрипт формирует строку:
А это — вполне корректный JavaScript, который будет выполнен браузером.
Как передать переменную из JavaScript в PHP?
Можно догадаться, тут дела обстоят труднее. Ведь php генерирует JS, а вот обратная связь не подразумевается особо. Так что хочешь-не хочешь, а придется формировать новый запрос к серверу, передавая в нем данные для скрипта. У нас есть два основных метода передачи данных. Реализация может быть как через синхронные, так и через асинхронные запросы. Синхронные вызовут перезагрузку страницы, а асинхронные используют Ajax.
Синхронный метод передачи данных в php из JavaScript
Этот код немедленно перенаправит пользователя по адресу http://dayte2.com/index.php?message=Hello%2C%20server!
PHP-код в файле index.php получит данные из GET и сформирует суперглобальные массивы.
Асинхронная передача переменной из JavaScript в PHP
Это подразумевает использование Ajax. По сути, осуществляется то же, что и в предыдущем случае, но не перезагружается страница браузера. Проще всего это проиллюстрировать используя библиотеку jQuery.
Как видим, все еще проще. Не нужно применять функцию encodeURIComponent, ее применяет за нас jQuery. Мы описываем функцию, которая принимает ответ сервера и складывает его в переменную data. Если index.php возвращает просто значение переменной $_GET[message], то мы увидим alert с текстом «Сервер ответил: Hello, server!».
Передача сложных объектов из php в Javascript
Мы помним, что при генерации JavaScript из php, нужно придерживаться синтаксиса JavaScript. Поэтому нужно перевести данные из представления PHP в представление JavaScript. Проще всего это сделать, воспользовавшись форматом JSON и функцией json_encode(), которая превратит объект или массив php в строку, которая при выполнении движком JavaScript, даст объект JavaScript.
'123','key'=>'value'); $js_obj = json_encode($arr); print ""; ?>
Тут можно начать путаться. Но ничего страшного нет. Достаточно помнить последовательность. Сперва выполняется php, затем — JavaScript. После выполнения php получится:
Что при выполнении выведет нам alert с текстом ‘123’.
Итого
Нужно помнить что php генерирует JS, поэтому передавать из него данные довольно просто. Нужно формировать JS так же, как формируется html. С соблюдением синтаксиса JavaScript.
Для передачи данных из JS в PHP всегда используется дополнительный запрос. Как он осуществляется — дело десятое. Например, может формироваться и отправляться форма. Или открываться iframe. Но суть остается. Понимая эту суть, можно перекидывать любые данные из браузера на сервер и обратно довольно просто.
- Получение контента с чужого сайта Ajax-ом
- Сниппет для MODx импорт RSS
- Домены .рф
- Способы определения четности и быстродействие Perl php
- Грабим погоду с Gismeteo.ru
- Новый скрипт для скачивания музыки вконтакте
- Делаем классную ленту изображений с автопрокруткой
- Выбор пунктов из таблицы на JS
Как передать переменную через адресную строку?
Доброго времени суток! При передачи переменной через адресную строку приходит пустое значение, подскажите в чем может быть проблема.
"; echo "".$row['id']." "; echo "".$row['name']." "; echo "".$row['count']." "; echo "".$row['cost']." "; echo "Редактировать "; echo ""; > ?>
1 ответов
Не вижу здесь массива $_GET[«name»] для получения параметра адресной строки браузера или я не понял ваш вопрос. Из мануала по PHP: Подразумевается, что пользователь ввел в браузере адрес http://example.com/?name=Иван
Результатом выполнения данного примера будет что-то подобное:
Привет, Иван!
Sign up or Log in to write an answer
- Интерактивные уроки и курсы программирования и создания сайтов (дистанционное обучение) помогут вам в игровой форме изучить основы языков программирования веб-разработки и веб-программирования с нуля. Обучение онлайн 24/7.
Общие ссылки
- Отзывы
- Политика конфидециальности
- Условия использования
- Блог
- Цена и оплата
- Курсы и скринкасты
- Сертификаты
- Партнерская программа
- Комьюнити
Наши курсы и скринкасты
- HTML/CSS Advanced
- Bootstrap 4
- Vue JS
- Linux, GIT and web-hosting
- HTML and CSS
- Modern Javascript
- Javascript/jQuery
- Codeigniter
- Все курсы и скринкасты
Передача переменных по ссылке в apply_filters(), do_actions()
В этой заметке показано, как передать в фильтр переменную по ссылке. Такое бывает нужно крайне редко, но иногда все же нужно. Суть проблемы. Фильтр в WordPress изменяет передаваемое значение: изменяет значение переданной переменной и возвращает его в контекст, откуда был вызван фильтр. Но делает он это только с первой переменной, а остальные, дополнительные переменные просто передаются в фильтр и могут быть там использованы для всяких целей, но изменить их, так чтобы изменение повлияло на ту переменную которая передавалась мы никак не можем. Например в PHP мы можем сделать так:
function func( $string, & $number ) < $number = 2; return $string . ' апельсин'; >$num = 1; $str = 'сумасшедший'; $str = func( $str, $num ); echo $str; //> сумасшедший апельсин echo $num; //> 2
Как видно, мы повлияли на переменную $num из функции. Это и есть передача переменной по ссылке из текущего контекста в контекст функции. Но в фильтрах WordPress мы так не получится:
// функция для фильтра function func( $string, & $number ) < $number = 2; return $string . ' апельсин'; >// подключаем функцию к фильтру add_filter( 'myfilter', 'func', 0, 2 ); // вызываем фильтр $num = 1; $str = 'сумасшедший'; // оба вызова фильтра завершатся ошибкой PHP $str = apply_filters('myfilter', $str, $num ); //> ошибка: функция ждет ссылку $str = apply_filters('myfilter', $str, & $num ); //> ошибка: неожиданный символ &
Передача переменной по ссылке в фильтрах WordPress
В качестве решения данной задачи, можно использовать глобальную переменную, которая будет видна из любого контекста. Но это плохое решение, потому что использование глобальной переменной может повлиять на работу других процессов и вызывать конфликты. Костыли конечно наше все, но только когда без них никак.
Вариант 1
Нужно передать в первом параметре фильтра, сразу две переменные, так мы сможем влиять на обе сразу, а не только на первую. Передать две переменные можно сунув их в массив и передав этот массив. Выглядит это так:
// функция для фильтра function func( $array ) < list( $string, $number ) = $array; $string = $string . ' апельсин'; $number = 2; return array( $string, $number ); >// подключаем функцию к фильтру add_filter( 'myfilter', 'func' ); // вызываем фильтр $num = 1; $str = 'сумасшедший'; list( $str, $num ) = apply_filters( 'myfilter', [ $str, $num ] ); // смотрим что получилось echo $str; //> сумасшедший апельсин echo $num; //> 2
Вариант 2
Текущую проблему также можно решить, используя специальную для этого функцию apply_filters_ref_array()
Передача переменной по ссылке в событиях WordPress
Ко всему выше сказанному нужно добавить, что в событиях WordPress есть возможность передавать переменные по ссылке. Для этого есть специальная функция событий do_action_ref_array()
// цепляем хук add_action( 'myhook', 'myhook_func' ); function myhook_func( & $num ) < $num = 2; // изменяем переменную по ссылке >$num = 1; // обрабатываем хук do_action_ref_array('myhook', array( & $num ) ); echo $num; //> 2
А в заключении, предлагаю ознакомиться со всеми функциями хуков WordPress.
Передача объекта в фильтр или событие по ссылке
Объекты всегда передаются по ссылке. Поэтому если в фильтре мы указываем объект, то не обязательно что-то придумывать, можно использовать стандартные функции хуков: apply_actions() или apply_filters() .
class MyClass < public $var; function __construct()< $this->var = 'Привет'; > > add_filter( 'myfilter', function( $MyClass )< $MyClass->var .= ' Мир!'; return $MyClass; > ); $MyClass = new MyClass(); $MyClass = apply_filters( 'myfilter', $MyClass ); print_r( $MyClass ); /* MyClass Object ( [var] => Привет Мир! ) */
До этого из: Код (коддинг)
- Kama_Post_Meta_Box — создаем метаполя для записей
- PHP 5.3 — 8.2 — Синтаксис, Новинки
- Количество элементов на странице для таблиц WP_List_Table
Как передать переменную PHP в HTML документ
Имеется HTML страница запущенная на IIS и PHP страница запущенная на Denwer Можно ли передать переменную из php страницы в html документ, если они находятся в разных директориях? Пишу php код внутри html — не выполняется.
Отслеживать
задан 25 июл 2018 в 4:09
Николай Василенков Николай Василенков
481 2 2 серебряных знака 14 14 бронзовых знаков
пример вашего кода в студию пожалуйста
25 июл 2018 в 5:28
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Можно ли передать переменную из php страницы в html документ, если они находятся в разных директориях?
Вот простой пример как это можно сделать:
Имеется такая структура проекта:
/docroot /someDir --inc-file.php index.php
Index
Если вы передаете переменную в файл с расширением php , то можно, но файл с другим расширением не будет знать, что делать с кодом-переменной из php .
Отслеживать
ответ дан 25 июл 2018 в 5:50
5,811 3 3 золотых знака 15 15 серебряных знаков 24 24 бронзовых знака
- php
- html
- iis
- denwer
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.11.15.1019
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как передать переменную из php в php
У меня есть файл test1.php, в котором есть рабочий код. Я выполняю этот файл из консоли, в файле есть переменная $var = «значение». Задавая значение жестко, выполняя этот файл, я получаю результат на выходе.
Моя задача состоит в том, чтобы я смог задавать значение переменной из другого php, наподобие, как это делается с html через filter_input — как я понял для php-php этот метод не подходит. Как это можно сделать?
Добавлено через 31 минуту
Я пробовал создать переменные в другом php(назову его test0.php) и подключить к нему include «test1.php», но в таком варианте программа срабатывает один раз, после чего выдает ошибку
PHP Fatal error: Cannot redeclare function
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Как передать переменную php из 1.php в 2.php без include
Всем добрый день, как передать в подобном примере переменную без include, require? Есть 1.php с.
Передать переменную из index.php через ajax в handler.php и обратно
Пытаюсь разобраться в основах основ. Есть три файла: index.html, ajax.html и handler.php. 1. При.
Как передать в HTML переменную из php
Как передать в HTML переменную из php? Причем HTML код содержится в .php файле.
Как передать переменную из JavaScript в PHP
Очень прошу помочь, застрял и не могу двигаться дальше Проблема вот в чем: Разрабатываю корзину.
Регистрация: 12.12.2014
Сообщений: 184
Желательно увидеть полный код двух файлов, но попробую дать правильный ответ без них:
1 2 3 4
// Здесь и ниже пишите любой свой код, который должен выполняться в другом файле, также можно создавать переменные и передавать их. $var = 'значение'; $var1; echo $var;
1 2 3 4
include_once 'test1.php'; $var1 = 'значение2'; echo $var1;
При выполнении test0.php будет выполняться код из test1.php и присваиваться переменная $var1. Вы этого хотели. если я правильно понял?
Регистрация: 27.06.2019
Сообщений: 130
Ваш пример для меня срабатывает только один раз. Если использую include_once, то просто результат получаю один раз, дальше код просто не из test1 просто не выполняется. Если использую просто include, то получаю ошибку
PHP Fatal error: Cannot redeclare Function (previously declared
Попробую привести код. В test0.php он такой
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
while (true) { sleep(2); $updates = $telegramApi->getUpdates(); foreach ($updates as $update){ if (isset($update->message->text)) { $text = $update->message->text; $chat_id = $update->message->chat->id; $first_name = $update->message->chat->first_name; //$username = $update->message->chat->username; if(strpos($text, '/command') === 0){ $usertext = explode(' ',$text); //$telegramApi->sendMessage($chat_id,$usertext[1]); " $var1= "on"; $var2= array(array( "par1" => $usertext[1], "par2" => $usertext[2] )); echo $var1; echo $var2; include('test1.php'); } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
require_once "php/Class_ModbusTcp.inc"; $globalcontent = array(); if (!isset($globalcontent["content"])) { $globalcontent["content"] = loadcontent(); } $mb = new ModbusTcp; if (!isset($globalcontent["mbvar2"])) { $globalcontent["mbvar2"] = $mb->InitcontentMap(); } else { $mb->InitcontentMap( $globalcontent["mbvar2"]); } $var = 'значение'; $var1; $var2; echo $var; $ret = null; if ($var1=="get-content") { $a = getcontent($var2); $a = is_array($a) ? $a : array(); $b = getMbcontent($var2); $b = is_array($b) ? $b : array(); $ret = array_merge($a, $b); prtwo_r($ret); } elseif ($var1=="set-content") { $a = setcontent($var2); $a = is_array($a) ? $a : array(); $b = setMbcontent($var2); $b = is_array($b) ? $b : array(); $ret = array_merge($a, $b); } else { exit("Error command"); } echo json_encode($ret); //exit(0); function getMbcontent($var2) { global $mb; $mb->ModConn(); $ret = $mb->MbVarRead($var2); $mb->ModClose(); return $ret; } function setMbcontent($var2) { global $mb; $mb->ModConn(); $ret = $mb->MbVarWrite($var2); $mb->ModClose(); return $ret; } function loadcontent() { $queue = new ZMQSocket(new ZMQContext(1), ZMQ::SOCKET_REQ, "MySock100500"); $queue->connect("ipc:///var/run/sql_sync"); $res = $queue->send("select * from content_0 order by uid;\0"); $raw_var2 = $queue->recv(); $lines = preg_split("/[\n]+/", $raw_var2); $var2ByName = array(); $var2ByUid = array(); foreach ($lines as $line) { $fields = preg_split("/[\t]+/", $line); $fc = count($fields); if (!isset($var2ByUid[$fields[0]]) && ($fc > 2) ) { $var2ByUid[$fields[0]] = array("uid" => $fields[0]); } if ($fc > 2) { $var2ByUid[$fields[0]][$fields[1]] = $fields[2]; } } foreach ($var2ByUid as $var) { $var2ByName[$var["name"]] = $var; } return $var2ByName; } function docontent($request, $mode = 0) { global $globalcontent; $var2 = $globalcontent["content"]; $shm_key = ftok("/dev/shm/wsi", 'b'); $shm_id = shmop_open($shm_key, "w", 0666, 65704); $sel = array(); $var_addr = array(); if ($request == null) { foreach($var2 as $name=>$var) { if (!empty($var["virtual"]) && $var["virtual"]==true) continue; if (empty($var["name"])) continue; array_push($var_addr, $var); } } else { foreach($request as $reqvar) { if ($var2[$reqvar["name"]]) { $var2[$reqvar["name"]]["value"]=$reqvar["value"]; array_push($var_addr, $var2[$reqvar["name"]]); } } } $ret = array(); foreach ($var_addr as $z) { $addr=(two)($z["c_offset"]) + 24; if ($z["type"] == "one") { if ($mode == 1) { shmop_write($shm_id, pack("c", $z["value"]), $addr); } $val = unpack("c", shmop_read($shm_id, $addr, 1)); } elseif ($z["type"] == "two" ) { if ($mode == 1) { shmop_write($shm_id, pack("s", $z["value"]), $addr); } $val = unpack("s", shmop_read($shm_id, $addr, 2)); } elseif ($z["type"] == "four") { if ($mode == 1) { shmop_write($shm_id, pack("l", $z["value"]), $addr); } $val = unpack("l", shmop_read($shm_id, $addr, 4)); } elseif ($z["type"] == "three") { if ($mode == 1) { shmop_write($shm_id, pack("f", $z["value"]), $addr); } $val = unpack("f", shmop_read($shm_id, $addr, 4)); } $var = array( "value" => $val[1], "name" => $z["name"], "direction" => $z["direction"], "src" => "shm", "type" => $z["type"], ); array_push($ret, $var); } shmop_close($shm_id); return $ret; } function getcontent($request) { return docontent($request, 0); } function setcontent($request) { return docontent($request, 1); }
Как передать переменную PHP в value HTML?
Есть две формы.
В одной из форм из выпадающий список и каждому пункту присвоен идентификатор в графе value
Из этой графы я вытаскиваю значение и записываю его в переменную PHP через POST
Но потом мне нужно передать эту переменную во вторую форму в графу value, но я не пойму как.
- Вопрос задан более трёх лет назад
- 1404 просмотра
3 комментария
Простой 3 комментария
Дмитрий @slo_nik Куратор тега PHP
Добрый вечер.
Это можно сделать и без php используя jquery/js.
Если Вы хотите сначала отправить на сервер, а потом получить в ответе от сервера — используйте ajax.
Как передать из php в javascript
Для передачи данных из PHP в JavaScript можно использовать несколько способов:
Использование тега внутри PHP-кода и вставка переменной внутри скрипта:
$my_var = "Hello, World!"; ?> var js_var = " echo $my_var; ?>"; console.log(js_var); // выводит "Hello, World!" в консоль
Создание скрытого элемента на странице и передача значения через его атрибут:
$my_var = "Hello, World!"; ?> type="hidden" id="my_var" value=" echo $my_var; ?>"> var js_var = document.getElementById("my_var").value; console.log(js_var); // выводит "Hello, World!" в консоль
Использование AJAX-запроса для получения данных из PHP-скрипта:
$my_var = "Hello, World!"; echo $my_var; // выводим переменную на экран ?> let xhr = new XMLHttpRequest(); xhr.open('GET', 'script.php', false); // false - синхронный запрос xhr.send(); console.log(xhr.responseText); // выводит "Hello, World!" в консоль
В каждом из этих способов мы передаем переменную $my_var из PHP в JavaScript. Выберите тот способ, который подходит вашей задаче лучше всего.