Как передать переменную PHP в другой PHP-файл через JavaScript?

Привет всем! У меня возникла проблема с передачей данных между PHP и JavaScript. Вот что я пытаюсь сделать:

У меня есть изображение в PHP, при клике на которое должна вызываться JavaScript-функция:

<img src="картинка.jpg" onclick='удалитьПрограмму("$имяПрограммы")' />

JavaScript-функция выглядит так:

function удалитьПрограмму(имяПрограммы) {
  if (confirm("Вы уверены?")) {
    location.href = "удалить.php?программа=" + имяПрограммы;
  }
}

В PHP-файле я пытаюсь получить переданное значение:

$имяПрограммы = $_GET['программа'];
// Далее код для удаления

Но почему-то переменная не передается, и я получаю ошибку. Что я делаю не так? Как правильно передать значение из PHP в JavaScript, а затем обратно в другой PHP-файл? Буду благодарен за любую помощь!

Проблема в кавычках. В PHP используй двойные кавычки для строки с переменной: onclick="удалитьПрограмму(‘$имяПрограммы’)". Так переменная будет правильно подставлена. А в JavaScript функции используй одинарные кавычки для значения параметра. Еще советую использовать urlencode() для имени программы, чтобы избежать проблем с пробелами и спецсимволами.

слушай, у меня была похожая проблема недавно. я решил ее так - вместо onclick использовал data-атрибуты для хранения данных. типа так:

а потом в js ловил клик и брал значение из атрибута:

document.querySelectorAll(‘.delete-btn’).forEach(btn => {
btn.addEventListener(‘click’, e => {
let program = e.target.dataset.program;
if (confirm(‘точно удалить?’)) {
location.href = удалить.php?программа=${encodeURIComponent(program)};
}
});
});

так намного удобнее и безопаснее чем пихать php-переменные прямо в onclick. попробуй, должно сработать!

Чтобы правильно передать переменную, используй encodeURIComponent() в JavaScript. Вот как можно исправить функцию:

function удалитьПрограмму(имяПрограммы) {
if (confirm(“Вы уверены?”)) {
location.href = “удалить.php?программа=” + encodeURIComponent(имяПрограммы);
}
}

Это закодирует спецсимволы и пробелы, чтобы они корректно передались в URL. В PHP-файле потом можно использовать urldecode() для расшифровки значения, если нужно.