数据库的设计本人认为可以这样,提交表单应该再设置一个隐藏域,储存题目ID,例如
创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、乌鲁木齐网络推广、小程序开发、乌鲁木齐网络营销、乌鲁木齐企业策划、乌鲁木齐品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供乌鲁木齐建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
" name="an_id"
处理页面可以使用将获取到的答案数组
$_POST['itm']进行遍历,用循环$value查找question,可以使用函数strpos(),该函数如果返回数字,则是正确答案,如果返回false,则是错误答案
if(isset($_POST['an_id'])){
$an_id = $_POST['an_id'];
$qus_sql = "select `question` from `vote_answer` where id = $an_id";
$query = mysql_query($qus_sql);
while($row = mysql_fetch_row($query)){
$question = $row[0];
}
$user_question = $_POST['itm'];
foreach($user_question as $value){
if(strpos($question,$value){
echo '正确答案';
}else{
echo '错误答案';
}
}
}全手写代码,有错误请百度HI我!
HTML可以这样写input type="checkbox" value="中国" name="Country[]" 所有的复选框都用 name="Country[]" 这样提交上去那边 PHP 收到的这个值 就直接是一个数组 $_POST['Country'] 这个取得的就是一个数组,当然表单要以POST方式提交。然后可以像另一位朋友说的那样来保存。取出来的时候再 explode(',',字段内容) 来折分成数组,就好处理了。
如果你实在不明白,可以百度HI上找我。
?php
if(!empty($_POST["t1"]))
{
$array = $_POST["t1"];
$str =implode(',',$array);
echo $str."br"; //输出 篮球,足球,乒乓球,排球 //$str 存入数据库
$arr=explode(',',$str);//从数据库取出数据时用。
print_r($arr);//输出 Array ( [0] = 篮球 [1] = 足球 [2] = 乒乓球 [3] = 排球 ) //数据库输出用explode变回数组array
$serialize=serialize($array);
echo "br".$serialize."br"; //输出 a:4:{i:0;s:4:"篮球";i:1;s:4:"足球";i:2;s:6:"乒乓球";i:3;s:4:"排球";} 存入数据后也是这样子。
$unserialize = unserialize($serialize);
print_r($unserialize); //输出 Array ( [0] = 篮球 [1] = 足球 [2] = 乒乓球 [3] = 排球 ) 变回array
}
?
form method=post action="" name="form1"
input type="checkbox" name="t1[]" value="篮球"篮球br
input type="checkbox" name="t1[]" value="足球"足球br
input type="checkbox" name="t1[]" value="乒乓球"乒乓球br
input type="checkbox" name="t1[]" value="排球"排球br
input type="submit"
/form
不知道的情况,先获取打印出来,你就知道了。
获取出来的是个数组,也就是相同名字归为一个数组,然后你通过 循环一个个的赋值插入即可。
类似:
获取到的值: $arr = array( 'xmuser'=array(0='x',1='y') , 'bumen'=array(0='x1',1='y'1) );
计算数组内最大值,直接 count( $arr['xmuser'] ) ;
他是按顺序来接收数值的,所以,按照顺序:0、1、2、3 ... 赋值变量插入即可。 或者你可以改成MySQL 的 批量插入方法,一样。 量不大都可实现。 MySQL 批量插入是有一个峰值的。
for 或 foreach 直接循环 就行。 自己练着写吧。
多选框..注意name后面有[]for($i=0;$i\" method=\"POST\"[i]a[i]b[i]c[i]d[i]e[i]f[i]
命令行模式下,或者web模式下保存的路径在服务器中,可以达到你的要求(有该路径的权限即可)
如果是在web模式下,不提示直接保存到访客的电脑中的某个位置,是不可以的。
web模式保存到客户端,只能通过下载,由用户指定,或保存到默认的下载目录。
以下是代码示例:
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
//连接数据库 pdo
try {
$dbh = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND = "SET NAMES 'UTF8'"));
} catch (PDOException $e) {
echo 'Connection failed: ' . $e-getMessage();exit;
}
//读取数据, 具体sql你根据情况修改
$stat = $dbh-prepare('SELECT * FROM `table` WHERE `id`0 LIMIT 100;');
$stat-execute();
$result = $stat-fetchAll(PDO::FETCH_ASSOC);
//创建csv文件并打开文件指针
$filepath='file.csv';
$fp = fopen($filepath, 'w');
//写入数据
foreach($result as $i=$row){
//写入标题行
if($i==0){
fputcsv($fp, array_keys($row));
}
fputcsv($fp, $row);
}
//关闭文件指针
fclose($fp);
//把文件输出到下载
$file = fopen($filepath,"r"); // 打开文件
$size=filesize($filepath);
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".$size);
Header("Content-Disposition: attachment; filename=download.csv");
echo fread($file,$size);
fclose($file);
相关知识点:
PHP: fputcsv
PHP:PDO
数据库查询的时候只返回列名,防止列出现重复,csv里会有重复的数据