#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! Когда я впервые попробовал это, это не сработало, но я посмотрел, что с моей стороны была опечатка. Теперь значение передается просто отлично.