php动态⽣成复选框列表
我⼏乎是个PHP⼩⽩,但做⼀个项⽬正需要php动态⽣成复选框列表,我是从⼏个代码段⾥总结实验后得到我想要的结果,完美实现动态⽣成复选框列表。我感觉这个⽐java或其他语⾔要简单(关键代码30⾏),条理也清晰,也可能是别的语⾔我不懂。
先说⼀下项⽬要求:
1. 扫描/home/pi/music/⽬录下的⾳乐⽂件并⽣成⽂件列表⽂件(txt)。
2. 删除⽂件中的⾮⾳乐⽂件。
3. 以列表⽂件为内容动态⽣成复选框列表。
4. 选择以后按确定按钮,⽣成mplayer播放的list⽂件,供mplayer调⽤(本例尚未完成)。
实现思想:php和shell配合以txt⽂件做为数据交换完成要求。
实现⽅法:
1. 扫描⽣成列表⽂件:
ls /home/pi/music/ >musicfilet1122.list
之所以⽤这个⼀个⽐较奇怪的名字是因为尽量不要与本来的⾳乐⽂件有重复,如有重复会被后⾯的sed删除。
2. 因为mplayer要求播放列表⽂件必须与⾳乐⽂件在同⼀⽂件夹,所以虽然第⼀次没问题,但以后再⽤的时候,⽂件列表内必然有⼀个
musiclist1122.list⽂件,所以必须删除。
sed -i ‘/^musicfile1122/d’ muscifile1122.list
3. 将上⾯两⾏代码写⼊sh⽂件中,以供php⽂件调⽤。
musicfile1122.sh代码:
#! /bin/bash
cd /home/pi/music
ls >musicfile1122.list
sudo sed -i  '/^musicfile1122/d' musicfile1122.list
4. ⽣成复选框列表,这部分是根据⼏段代码组成的,由于原内容⽹址不记得,所以没贴出来,在此感谢各位⼤神!这⾥的代码基本我解
释不了,拿来就⽤也基本没问题。⾥⾯也有⼀些东西要优化,以后优化好了,再贴出来。不多说,直接上全部代码。
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>⾳乐列表⽣成</title>
</head>
<body>
<h2>>⾳乐列表已⽣成……</h2>
<h3>请选择要播放的歌曲:</h3>
</body>
</html>
<?php
$cmd='sudo bash /home/pi/musicfile1122.sh';
shell_exec($cmd);
>
<?php //定义⽣成列表数函数
function all_checkboxes($name,$options, $default=array()) {
if (!is_array($default)){
$default = array();
}
foreach($options as $value => $label) {
$html .= "<input type=checkbox ";
if (in_array($value, $default)){
$html .= "checked ";
$html .= "checked ";
}
$html .= "name=\"{$name}[]\" value=\"$value\">";
$html .= $label . "<br>";
}
html播放音乐代码return($html);
}
//打开列表⽂件
$file = fopen("musicfile1122.list", "r");
$options=array();
$i=0;
//输出⽂本中所有的⾏,直到⽂件结束为⽌。
while(! feof($file))
{
$options[$i]= fgets($file);//fgets()函数从⽂件指针中读取⼀⾏ $i++;
}
fclose($file);
$options=array_filter($options);
$html = all_checkboxes("interests",$options, $interests);
>
<form action="" method=post>
<?php echo $html;?>
<input type=submit value="确定">
</form>
<?php //显⽰选择结果
foreach($_REQUEST as $k=>$v){
echo $k;echo "--";
echo $v;echo "</br>";
}
echo "</br>";
if(isset($_POST['interests'])){
foreach($_POST['interests'] as $k=>$v){
echo $k;echo "--";
echo $v;echo "</br>";
}
}
>

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。

发表评论