我正在编写一个html/php代码,如下所示。在它中,只需点击html代码中的一个按钮,它就会进入php中Line#B的foreach块中。
<?php
$mp4_files = array_values($mp4_files);
print_r($mp4_files); // Line #A
if($_SERVER['REQUEST_METHOD'] == "POST")
{
foreach ($mp4_files as $f) // Line#B
{
// conversion of mp4 into mp3 is happening, not pasting the full code.
}
}
?>
<form action="" method="POST">
<table>
<tr>
<th>MP4 Name</th>
<th>Action</th>
</tr>
<?php
$mp4_files = array_values($mp4_files);
foreach ($programs as $key => $program) {
$file = $mp4_files[$key];
print_r($file); // Line#B
?>
<tr>
<td><?php echo basename($file); ?></td>
<td><button type="submit" name="go-button" value="Go">Go</button</td>
</tr>
<?php } ?>
</table>
</form>
上面的html/php代码显示以下内容:
在上面的屏幕截图中,我们有mp4文件的列表和它们各自的按钮。
Line#A从上的html/php代码中打印以下数组
Array ( [0] => 36031P.mp4 [1] => hello.mp4 )
和Line#B:
36031P.mp4 hello.mp4
此时此刻,点击任何表格行中的Go按钮,所有mp4文件到mp3的转换开始发生(这不是我的要求)
问题陈述:
我想知道我应该在上面的html/php代码中做什么更改,以便如果我在屏幕截图中从上面的第一行点击Go按钮,第一行 mp4文件到mp3的转换应该开始发生,反之亦然。
发布于 2019-06-06 05:14:50
一种很糟糕的方法是为每个按钮添加一个name属性,该属性带有您希望该按钮附加到的文件的相应文件名。当您发布时,您将收到一个数组密钥,其中包含应该转换的文件的文件名。你只需要遍历你的MP4数组就可以得到一个匹配的键。
也许更好的方法是将每个文件名/按钮分解成它自己的迷你表单,在每个表单中创建一个隐藏字段,并将值设置为应该转换的文件名。
这样,当您发布时,您将把应该转换的文件的名称附加到一个您已经知道其名称的密钥
发布于 2019-06-06 22:59:55
使用Ajax请求可以做到这一点
在html文件的底部创建javascript函数convert_video
function convert_video(video_id){
$.ajax({
url: 'server.com/converttomp3.php',
type: 'POST',
data: {video_id:video_id},
beforeSend: function(){
//
},
success: function(data)
{
var crude = JSON.parse(data);
if(crude.status){
alert('Success message');
window.location.href = window.location.href;
} else {
alert(crude.message);
}
},
error: function (jqXHR, textStatus, errorThrown)
{
//Error
}
然后从HTML作为您的循环视频
<td><button type="submit" onclick="return convert_video('<?php echo $array['video_id'] ;')" name="go-button" value="Go">Go</button</td>
最后,在您的服务器端代码中
if($_SERVER['REQUEST_METHOD'] == "POST")
{
$video_id = $_POST['video'];
// processs your video here .
}
https://stackoverflow.com/questions/56467383
复制相似问题