Я пытаюсь включить переменные JavaScript в PHP-код как переменные PHP, но у меня возникают проблемы с этим. Когда нажимается кнопка, вызывается следующая функция:
<script type="text/javascript"> function addTraining(leve, name, date) { var level_var = document.getElementById(leve); var training_name_var = document.getElementById(name); var training_date_var = document.getElementById(date); <?php $result = "INSERT INTO training(level, school_name, training_date) VALUES('level_var', 'training_name_var', 'training_date_var')" or die("Query not possible."); ?> </script>
Является ли это возможным?
PHP запускается на стороне сервера. JavaScript запускается на стороне клиента в браузере пользователя, запрашивающего страницу. К тому времени, когда выполняется JavaScript, на сервере нет доступа к PHP на сервере. Пожалуйста, прочитайте эту статью с подробной информацией о кодировании на стороне клиента и на стороне сервера .
Что происходит в двух словах:
В вашем случае PHP будет писать JS-код на страницу, поэтому он может быть выполнен, когда страница отображается в вашем браузере. К тому времени часть PHP в вашем фрагменте JS больше не существует. Он был выполнен на сервере уже. Он создал переменную $result
, содержащую строку запроса SQL. Вы не использовали его, поэтому, когда страница отправляется обратно в ваш браузер, она исчезла. Посмотрите исходный код, когда страница отображается в вашем браузере. Вы увидите, что в позиции, в которую вы помещаете PHP-код, ничего нет.
Единственный способ сделать то, что вы хотите сделать, это либо:
со значениями, которые вы хотите вставить в базу данных.
<script type="text/javascript"> var jvalue = 'this is javascript value'; <?php $abc = "<script>document.write(jvalue)</script>"?> </script> <?php echo 'php_'.$abc;?>
Кажется, вы запутываете код на стороне клиента и сервера. Когда кнопка нажата, вам нужно отправить (отправить, получить) переменные на сервер, на котором может быть запущен php. Вы можете отправить страницу или использовать вызов ajax для отправки только данных. -дон
PHP работает на сервере. Он выводит некоторый текст (обычно). Затем он обрабатывается клиентом.
Во время и после разбора на клиенте выполняется JavaScript. На этом этапе для скрипта PHP слишком поздно что-либо делать.
Если вы хотите что-то вернуть на PHP, вам нужно создать новый HTTP-запрос и включить в него данные (либо в строке запроса (данные GET), либо в теле сообщения (данные POST).
Вы можете это сделать:
FormElement.submit()
) Какой бы вариант вы ни выбрали, PHP по сути тот же. Читайте из $_GET
или $_POST
, запустите свой код базы данных, затем верните некоторые данные клиенту.
У меня была такая же проблема несколько недель назад, как и у вас; но я придумал блестящее решение для обмена переменными между PHP и JavaScript. Это сработало для меня хорошо:
Создание скрытой формы на HTML-странице
Создайте текстовую или текстовую область в этой скрытой форме
После всего вашего кода, написанного в скрипте, сохраните окончательное значение переменной в этом текстовом поле
Используйте строку $ _REQUEST ['textbox name'] в вашем PHP, чтобы получить доступ к значению вашей переменной JavaScript.
Надеюсь, этот трюк будет работать для вас.
Вы можете принимать все значения следующим образом:
$abc = "<script>document.getElementByID('yourid').value</script>";
Вы можете делать то, что хотите, но не так. Что вам нужно сделать, так это сделать запрос AJAX от JavaScript обратно на сервер, где отдельный сценарий PHP может выполнять операцию с базой данных.