@sv2204

Как изменить переменную php по событию onclick?

Как изменить переменную php по событию onclick?
Есть код php который добавляет из файла значения в select
<?php
$file = 'list.txt';
$arr = file($file);
$count = count($arr);
    echo '<select name="sll">';
for ($i = 0; $i < $count; $i++) {
    echo '<option value="'.trim($arr[$i]).'">'.trim($arr[$i]).'</option>';
}
    echo '</select>';
?>

как правильно сделать что бы добавить перед этим кодом 2 кнопки при нажатии на которые менялось бы название файла в этой строке:
$file = 'list.txt';
и соответственно в select подгружались бы значения из другого файла.
  • Вопрос задан
  • 2644 просмотра
Пригласить эксперта
Ответы на вопрос 1
nazares
@nazares
Software Engineer
передавать значение переменной через $_GET например

<button  onclick="javascript:document.location.href='yourfile.php?file=text.txt'">Button</button>

а потом $file = $_GET['file'];

index.php
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script src="source.js"></script>
    </head>
    <body>
   <form action="" method="post"> <!-- метод POST  или  GET отпрака через форму без JS --> 
        <input type="submit" name="btn" value="file1"> 
        <input type="submit" name="btn" value="file2">
    </form>
        <button id ="a">btnjs1</button> <!-- Кнопки к которым привязан JS -->
        <button id= "b">btnjs2</button>
    </body>
</html>

<?php

if (isset($_POST['btn'])){ // получаем переменную  которую посылали через форму 
    $action = $_POST['btn'];
switch ($action) {
    case 'file1' : $file_post = 'file1.txt'; break;
    case 'file2' : $file_post = 'file2.txt'; break;
};
} else {
    $file_post ='file1.txt';
};


 if (isset($_GET['file'])){ // получаем переменную которую отсылали через JS
   $file_get = $_GET['file'];
 } else {
     $file_get = 'file2.txt';
 };

$files_post = file($file_post);
echo "<p>Text area  with POST from PHP</p>";
echo '<textarea rows="10" cols="45">';
foreach ($files_post as $line) {echo $line;}
echo '</textarea>';

$files_get = file($file_get);
echo "<p>Text area  with GET from JS</p>";
echo '<textarea rows="10" cols="45">';
foreach ($files_get as $line) {echo $line;}
echo '</textarea>';
?>

source.js то что за коментами тоже самое только на jQuery
//;$(function(){

// $("#a").click(function(){
//     $(location).attr("href", "index.php?file=file1.txt");
// });

// $("#b").click(function(){
//     $(location).attr("href", "index.php?file=file2.txt");
// });
//});

;document.addEventListener("DOMContentLoaded", function(event){

document.getElementById('a').onclick = function (){
    document.location.href = 'index.php?file=file1.txt';
};

document.getElementById('b').onclick = function (){
    document.location.href = 'index.php?file=file2.txt';
};

});
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы