Как я могу запустить одну функцию PHP, которая дает разные результаты в зависимости от значения кнопки?

#php

#php

Вопрос:

Прежде всего, я прошу прощения, если об этом спрашивали раньше или что-то подобное. Я работаю над этим небольшим проектом для дома и чтобы помочь мне немного изучить PHP.

Чего я пытаюсь добиться здесь, так это иметь кнопки / ссылки, которые динамически генерируются путем чтения каталога из одной функции. Я выполнил это, что работает так, как задумано для этого аспекта. Как только они будут сгенерированы и отображены пользователю на веб-странице. Я хочу использовать только одну функцию для всех кнопок, которая в зависимости от значения / имени кнопки, которое передается функции, отображает соответствующий каталог в HTML.

Как я могу передать значение из динамических кнопок в переменную в другой функции?

Код, который у меня есть до сих пор:

Эта первая функция работает по назначению (она выводит эхо из определенного каталога):

 function btnSeries(){
    $season = "./SomeDirectory/";
    $files = glob("./Some/Directory_images/*.*");
    for ($i=0,  $f=1; $i<count($files) amp;amp; $f<count($files); $i  , $f  )
    {
        $num = $files[$i];
            print '<div class="col-md-4">';
            print '<div class="card">';
            print '<img class="card-img-top" src="'.$num.'"alt="Season '.$f.'">';
            print '<div class="card-body">';
            //print '<br>';
            print '<form method="post" action="episodes.php">';
            print '<input type="submit" class="btn btn-primary" value="Season'.$f.'" name="button" />';
            print '</form>';
            //print '<a href="'.$season."Season".$f.'"class="btn btn-primary">Season '.$f.'</a>';
            print '</div>';
            print '</div>';
            print '</div>';
    }
}
  

Единственная функция, которая получает значение для переменной из события onclick

 if(array_key_exists('button', $_POST)) { 
    seasonEpisodes();
}

function seasonEpisodes(){
    $buttonValue = "value" //Value passed from button (ie: button name which represent the folder of series)
    $season = "./SomeDirectory/";
    $files = glob("./Series/.$buttonValue/*.*");
    include 'layout/header.php';
    print '<td>';
    print '<p align="center">';
    print '<img border="0" src='.$someVar.' width="370" height="529">';
    print '</p>';
    print '</td>';
        
    for ($i=0,  $f=1; $i<count($files) amp;amp; $f<count($files); $i  , $f  )
    {
        $num = $files[$i];
            print '<p align="center"><font color="#FFFFFF" size="6">';
            print '<a href=".$season.$file.">';
            print '<font color="#FFFFFF">.$file.</font></a>'
    }
    print '</td>'
    include 'layout/footer.php';
}
  

Подумал, что я бы предоставил обновленную функцию с возможностью передачи переменной во вторую функцию благодаря RGriffiths. Добавление этого сработало как шарм.

 function btnSeries(){
    $season = "./SomeDirectory/";
    $files = glob("./Some/Directory_images/*.*");
    for ($i=0,  $f=1; $i<count($files) amp;amp; $f<count($files); $i  , $f  )
    {
        $num = $files[$i];
            print '<div class="col-md-4">';
            print '<div class="card">';
            print '<img class="card-img-top" src="'.$num.'"alt="Season '.$f.'">';
            print '<div class="card-body">';
            //print '<br>';
            print '<form method="post" action="episodes.php">';
            print '<input type="hidden" value="Season'.$f.'" name="seasonClicked" />';
            print '<input type="submit" class="btn btn-primary" value="Season'.$f.'"/>';
            print '</form>';
            //print '<a href="'.$season."Season".$f.'"class="btn btn-primary">Season '.$f.'</a>';
            print '</div>';
            print '</div>';
            print '</div>';
    }
}
if(array_key_exists('button', $_POST)) { 
    seasonEpisodes();
    $buttonValue = $_POST["seasonClicked"]; //Value passed from button 
    $season = "./SomeDirectory/";
    $files = glob("./Series/$buttonValue/*.*");
    include 'layout/header.php';
    print '<td>';
    print '<p align="center">';
    print '<img border="0" src='.$someVar.' width="370" height="529">';
    print '</p>';
    print '</td>';
        
    for ($i=0,  $f=1; $i<count($files) amp;amp; $f<count($files); $i  , $f  )
    {
        $num = $files[$i];
            print '<p align="center"><font color="#FFFFFF" size="6">';
            print '<a href=".$season.$file.">';
            print '<font color="#FFFFFF">.$file.</font></a>'
    }
    print '</td>'
    include 'layout/footer.php';
}
  

Ответ №1:

Скрыть ввод значения сезона для каждой формы:

 print '<form method="post" action="episodes.php">';
    print '<input type="hidden" value="Season'.$f.'" name="seasonClicked" />';
    print '<input type="submit" class="btn btn-primary" value="Season'.$f.'"/>';
print '</form>';
  

Комментарии:

1. Спасибо, RGriffiths! Когда я впервые попробовал это, это не сработало, но я посмотрел, что с моей стороны была опечатка. Теперь значение передается просто отлично.