PHP怎么获取表单中的多条数据

<form action="__URL__/inster/" method="post">
<input style="width:90%; height:18px;" type="text" class="input-text" name="type" id="type" value=""/>
<input style="width:90%; height:18px;" type="text" class="input-text" name="money" id="money" value=""/>
<textarea style="width:90%; height:11px;"class="" name="bask" cols="32" id="bask" /></textarea>
</form>

中间的数据用JS增加了多条,在PHP中怎么写循环。我用的是TP框架
var cell = document.createElement("td");
//cell.appendChild(document.createTextNode(name));
var inputText = document.createElement("input");
inputText.setAttribute("type", "text");
inputText.setAttribute("name", "type");
inputText.style.border = "1px solid #A7A6AA";
inputText.style.width = "90%";
inputText.style.height = "18px";
//inputText.setAttribute("value", name);
cell.appendChild(inputText);
row.appendChild(cell);

inputText.setAttribute("name", "type"); type是表的字段,可能是这名字重复了

在生成的表单元素以及之前的元素的名字加上中括号即可实现
比如: name="contents" => name="contents[]",最后提交获取到的数据是一个数组形式的。

代码如下:

<form name="form1" method="post" action="index.php?action=ok">
1.<input type="text" name="contents[]" value="">
2.<input type="text" name="contents[]" value="">
3.<input type="text" name="contents[]" value="">
<input type="submit" value="提交">
</form>
<?php
if($_GET['action'] == 'ok'){
$contents = $_POST['contents'];

print_r($contents);
}
?>
得到的数据是数组形式的,遍历即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-08-30
<input type=checkbox name=laiwen[] value=<?php echo $row[3];?> />
.......

PHP 接受表单:$count=count($_POST["laiwen"]);
for($i = 0; $i<count($_POST["laiwen"]); $i++){
echo $_POST["laiwen"][$i];
}
大概的意思就是这样 你可以试试看,要插入数据库那就直接在for循环中假如sql语句就可以了
第2个回答  2011-08-28
别管用的是什么框架,表单始终都是post的表单,这是无论如何都改变不了的,你只需要用$_POST接收就行了,连循环都不用追问

不循环不行,只写入一条数据

追答

不是你只写了一条数据,因为你用的是js增加了多条嘛,增的的东西,好歹也是DOM元素吧,既然是DOM元素,又是表单项,后台就没有收不到的道理,只是在原码中你看不到这些东西罢了,你可以先试试,看看结果如何

追问

我试过了,比如写三条数据只能插入一条到数据库

追答

你可以这样,
echo '' . htmlspecialchars(print_r($_POST, true)) . '';die;
看看你得到的数据是不是对的,如果这里是对的,那你只需要组织下你的插入语句罢了,仅此而己

追问

嗯,这样也只显示最后的一条,郁闷

追答

那说明不是后台的问题,而是前台js增加表单项的时候,加的名称是不是重复了,最好把名称改成数组形式的如这样形式的

追问

Array
(
[type] => 1
[money] => 1
[bask] =>
[type0] => 2
[money0] => 2
[bask0] =>
[type1] => 3
[money1] => 3
[bask1] =>
[type2] => 4
[money2] => 4
[bask2] =>
[__hash__] => 6fad457aaad0c29a3447e758df8eeb8d
)

现在用echo '' . htmlspecialchars(print_r($_POST, true)) . '';die;可以全部看到了,但是插入还是不行呢

追答

插入的话,不就是组织组织你的数据,弄成SQL语句就行了啊,除了第一组,其它的就是从0开始计数的嘛,一组数据,加个循环,组装个SQL语句,一次执行就完成了呀

第3个回答  推荐于2017-09-14
对于这个问题,很简单,你是如何解决php接收 checkbox的值的呢?这个也同理。
把表单的 name 属性设置为数组形式的,如 <input style="width:90%; height:18px;" type="text" class="input-text" name="type[]" id="type" value=""/>
<input style="width:90%; height:18px;" type="text" class="input-text" name="type[]" id="type" value=""/>
想几个都行。比如我写的有两个 name 是 type[] 的表单
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf8" />
</head>

<body>
<?php
if(isset($_POST['type'])){
?>
<pre>
<?php
print_r($_POST);
}else{
?>
<form action="" method="post">
<input type="text" name="type[]" id="type" value="" />
<input type="text" name="money" id="money" value="" />
<textarea name="bask" cols="32" id="bask"></textarea>
<input type="text" name="type[]" />
<input type="submit" value="提交" />
</form>
<?php } ?>
</body>
</html>
提交后结果如下,可以看到所有的值都获取了,其中$_POST['type']是个数组,通过 foreach或for来访问里面的值。 这个方法特别适合 PHP 接收 checkbox 的值。
Array
(
[type] => Array
(
[0] => text1
[1] => text2
)

[money] => 100
[bask] => textarea
)追问

foreach($_POST['dform'] as $key=>$value){
$bo=$_POST['type'][$key][$value];
$bo=$_POST['money'][$key][$value];
$bo=$_POST['bask'][$key][$value];
}
我这么写怎么取不到值呢 'dform' 是表面名称
下面是数组的结构,高手麻烦你再指点一下,好了我加点分,谢谢!

追答

'dform'是表面名称,这句话我看不懂呀。
首先图中那个数组有三个元素,索引($key)分别是 type, money, bask, __hash__ ,值($value)分别是一个数组,一个数组,一个数组,一个字符串; 所以图中那个是个二维数组。

foreach($_POST['dform'] as $key=>$value){
//获取 "测试一"
$bo=$_POST['dform'][$key][0];
//或者直接 $bo = $value[0]; 因为 $_POST['dform'][$key] 和 $value 是一样的。
// 获取所有的 type
foreach ($value as $v){
echo $v; // 这里直接输出,你也可以作其它处理,比如把 $v 赋值给其它变量等。
}
}

追问

dform是指这个表单名,
用$_POST['dform']取不到任何值,还有我这个是多条插入,不用输出的
foreach($_POST['dform'] as $key=>$value){
$bo=$_POST['type'][$key];
$bo=$_POST['money'][$key];
$bo=$_POST['bask'][$key];
} 这样写不行
我想把值全部给$bo最后一起插入 __hash__ 这个可以不管

追答

form 标签的 name 属性是没用的,一般用在 javascript 操作当前页面的DOM用。对于 PHP 获取表单值用不上。还有你的那个foreach循环中, 三次给 $bo赋值,到最后$bo只能保存一个值,而不能全部保存。 PHP 通过提交表单只能获取 input 、textarea、select等的值。
就拿下面代码说吧

————————————————————————————
PHP 代码:
<?php
$count = count($_POST['type']);
//这里可以 print_r($_POST['type']); 或 print_r($_POST['money']);看一下,其实$_POST['type']和 $_POST['money']都是个一维数组,所以可以用下面的 for 循环来访问

if($count == count($_POST['money'])){
$sql = array();
for($i=0; $i<$count; $i++){
$sql[] = "('{$_POST['type'][$i]}', '{$_POST['money'][$i]}') ";
}
$sqlstr = "insert into `table` (`type`, `money`) values ".implode(',', $sql);
echo $sqlstr;
//mysql_query($sqlstr); //假定前面已经打开到数据库的连接了,这里直接保存到数据库了。
}

本回答被提问者采纳

PHP怎么获取表单中的多条数据
在生成的表单元素以及之前的元素的名字加上中括号即可实现 比如: name="contents" => name="contents[]",最后提交获取到的数据是一个数组形式的。代码如下: 1. 2. 3. <?php if($_GET['action'] == 'ok'){ contents = $_POST['contents'];print_r($contents);} ?> 得到的数据是...

php建立表单中很多个输入框上传值如何解决
1、根据不同name读取,如果是post传值的话$_POST['name1'],$_POST['name2'];2、如果都是同一个name的话,那么$_POST['name']就是一个数组了,只需要foreach这个数组就可以拿到值

PHP怎么获取表单提交的数据啊?
一、用file_get_contents以get方式获取内容,需要输入内容为:1、<?php 2、$url='http:\/\/www.domain.com\/?para=123';3、$html = file_get_contents($url);4、echo $html;5、?> 二、用file_get_contents函数,以post方式获取url,需要输入内容为 1、<?php 2、$url = 'http:\/\/www.domain...

php mysql 怎么同时搜索一个字段下的多个值
用循环吧 比如,输入了$str="a,b,c";arrs = expode(",",$str);for($i=1;$i<count($arrs);$i++){ sql="select * from student where name like ''%'".$arrs[$i]."%'"r = mysql_query9$sql);if($r){ }else{ } } 不知道你看 明白了没有。

在php怎么实现通过表单获取一些信息的输入这种功能?
"> <?php name=$_POST['name'];\/\/通过post方式获取 表单中的 name值 echo $name; \/\/输出获取到的name值。?> 使用方法,新建一个 .php的文件,将该代码拷贝进去,然后放出php环境,访问该文件即可。纯手打,望采纳,可追问。

PHP编程,请问多次提交表单后如何保存数据,不用数据库或文本保存数据
数组应该是不适合吧,脚本执行后,数组就消失了。session_start();_SESSION[keyname]=array();_SESSION[keyname][]=$_POST['inputname'];这样就可以随时引用这个值了 在你的html的页面上想要输出的位置 <?php echo $_session[keyname][0].$_session[keyname][1] \/\/多的话可以改成循环输出 ...

php新手在线等答案:用php如何让提取html表单中输入的数据???
在form中,的属性method=get 或者post方法,在php中获取表单数据如下:_get[表单名]_post[表单名]这样就可以获取到html中表单里面的数据信息

php怎样获取下拉表单中的值
商品介绍:<textarea name="desc" value="desc"><\/textarea> <?phpif($_GET['action'] == '确认'){$contents = $_POST['pice'];echo $contents;}?>

PHP 表单添加多条数据到数据库
name="name2[]"> 提交后$_POST['name1']、$_POST['name2']都会以数组的方式储存着3行tr的每个值,通过foreach可以把它们逐行添加进数据表

急!!!php怎样获取表单的数据,我的代码是这样的,求解决
很明显你的表单对象的 name 设置有问题啊,复选框采用数组,其他可以不用,你初学就不要偷懒直接在DW中复制文本框,这样容易导致 name 和id 属性不对,还是老实点一个一个的插入吧,或者手动修改下属性。<?php if (isset($_POST['submit'])){ print_r($_POST);} ?> <!DOCTYPE html PUBLIC ...

相似回答