Отправка одного значения скрытого ввода в текущей строке нажала

Как передать одно значение текущей строки множественного скрытого ввода в PHP. У меня есть следующий код:

foreach($portfolio as $portfolio){
echo  "<tr class ='table-comments'>";
echo  "<td>".$portfolio['portfolio_title']."</td>";
echo  "<td class = 'comment-content'>".$portfolio['portfolio_client']."</td>";
echo  "<td><a target = '_blank' href = ".$portfolio['portfolio_link'].">".$portfolio['portfolio_link']."</a></td>";
echo  "<td>";
echo  "<input type='hidden' name='portfolio_id' value='" . $portfolio['portfolio_id'] . "' />";
echo "<input type = 'submit'  value = 'Edit'>";
echo "<input type = 'submit' value = 'Move to Trash' class = 'action-button'>";
echo  "</td>";
echo  "</tr>";
}

У меня также есть кнопка отправки каждой строки, которая вызывает форму. Когда я нажимаю кнопку отправки, она передает все значения строки скрытого ввода. Я хочу только значение строки кнопки, на которую нажали кнопку.

URL выглядит так:

/portfolio?portfolio_id=1&portfolio_id=2&portfolio_id=3&portfolio_id=4 и так далее

Я только хочу

/portfolio?portfolio_id=3

3 ответа

Решение

Есть новая форма для каждого ряда...

<form method="get">

</form>

Как это:

foreach($portfolio as $portfolio){

    echo  "<tr class ='table-comments'>";
    echo  "<td>".$portfolio['portfolio_title']."</td>";
    echo  "<td class = 'comment-content'>".$portfolio['portfolio_client']."</td>";
    echo  "<td><a target = '_blank' href = ".$portfolio['portfolio_link'].">".$portfolio['portfolio_link']."</a></td>";
    echo  "<td>";
    echo '<form method="get">';
    echo  "<input type='hidden' name='portfolio_id' value='" . $portfolio['portfolio_id'] . "' />";
    echo "<input type = 'submit'  value = 'Edit'>";
    echo "<input type = 'submit' value = 'Move to Trash' class = 'action-button'>";
    echo "</form>";
    echo  "</td>";
    echo  "</tr>";

}

Если вы отправляете только этот идентификатор и используете GET вместо POST с тем же успехом вы можете даже не использовать формы и использовать ссылки. При желании вы все еще можете оформить ссылку так, чтобы она выглядела как кнопка, но использование ссылки будет иметь смысл в семантическом смысле. Удалите скрытый ввод, и у каждой ссылки будет нужный URL-адрес.

Тег формы должен быть включен в цикл.

изменить это

foreach ($portfolio as $portfolio) {
    echo  "<tr class ='table-comments'>";
    echo  "<td>".$portfolio['portfolio_title']."</td>";
    echo  "<td class = 'comment-content'>".$portfolio['portfolio_client']."</td>";
    echo  "<td><a target = '_blank' href = ".$portfolio['portfolio_link'].">".$portfolio['portfolio_link']."</a></td>";
    echo  "<td>";
    echo  "<input type='hidden' name='portfolio_id' value='" . $portfolio['portfolio_id'] . "' />";
    echo "<input type = 'submit'  value = 'Edit'>";
    echo "<input type = 'submit' value = 'Move to Trash' class = 'action-button'>";
    echo  "</td>";
    echo  "</tr>";
}

чтобы:

foreach ($portfolio as $portfolio) {
    echo  "<tr class ='table-comments'>";
    echo  "<td>".$portfolio['portfolio_title']."</td>";
    echo  "<td class = 'comment-content'>".$portfolio['portfolio_client']."</td>";
    echo  "<td><a target = '_blank' href = ".$portfolio['portfolio_link'].">".$portfolio['portfolio_link']."</a></td>";
    echo  "<td>";
    echo  "<form action='process.php' method='get'>";
    echo  "<input type='hidden' name='portfolio_id' value='" . $portfolio['portfolio_id'] . "' />";
    echo "<input type = 'submit'  value = 'Edit'>";
    echo "<input type = 'submit' value = 'Move to Trash' class = 'action-button'>";
    echo "</form>";
    echo  "</td>";
    echo  "</tr>";
}
Другие вопросы по тегам