php 在处理 form 表单时提交多个 name 属性值相同的 input 标签 如何解决

 更新时间:2017年7月6日 23:49  点击:1840
这篇文章主要介绍了php 处理 form 表单提交多个 name 属性值相同的 input 标签问题的解决方法,需要的朋友参考下吧

一 问题

在公司的开发过程中,遇到了一个问题:如何处理 form 表单提交了多个 name 属性值相同的 input 标签?源码如下(源码是在 form 表单之中的):

 

 代码如下复制代码

<!--{loop$address$index$one}-->

<divclass="address_item">

   <p>

    <label>

    <input type="hidden"name="express_price"value="{$one['express_price']}"/>

    <input type="hidden"name="state_fare"value="{$one['state_fare']}"/>

    <input type="hidden"name="id"value="{$one['id']}"/>

    <input type="radio"<!--{if$one['default']=='Y'}-->checked<!--{/if}-->name="address"value="{$one['id']}"/><span name="mobile">{$one['mobile']}</span>

    </label>

   </p>

</div>

<!--{/loop}-->

 

二 解决方法

在上述源码中,通过 loop 循环,在 form 表单中生成了多个name属性值相同的 input 元素,当点击提交时,后台的 php  文件使用 $_POST 仅能获取到一个 div 元素中的 input元素传过来的值,但是,radio 类型的 input  元素传过来的值一定是被选中的那一个。据此,修改上述源码中一些 input 元素的相同 name 属性值为数组,再在后台 php 文件通过被选中的  radio 类型的 input 元素的 name 属性值,确定所传过来的整个 div 元素。修改后的代码如下:

 

 代码如下复制代码

<!--{loop$address$index$one}-->

<divclass="address_item">

   <p>

    <label>

    <input type="hidden"name="express_price[]"value="{$one['express_price']}"/>

    <input type="hidden"name="state_fare[]"value="{$one['state_fare']}"/>

    <input type="hidden"name="id[]"value="{$one['id']}"/>

    <input type="radio"<!--{if$one['default']=='Y'}-->checked<!--{/if}-->name="address"value="{$one['id']}"/>

    <span name="mobile">{$one['mobile']}</span>

    </label>

   </p>

</div>

<!--{/loop}-->

 

php 文件:

 

 代码如下复制代码

$key= 0;

$address_id=intval($_POST["address"]);

foreach($_POST['id']as$k=>$v) {

  if($v==$address_id)

     $key=$k;

}

$_POST['express_money'] =$_POST['exporess_price'][$key];

 

以上所述是小编给大家介绍的解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题,希望对大家有所帮助。在此也非常感谢大家对本网站的支持!

这篇文章主要为大家详细介绍了php使用curl实现简单模拟提交表单功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

php 使用curl 进行简单模拟提交表单,供大家参考,具体内容如下

 

 代码如下复制代码

//初始化curl

$ch= curl_init();

$url='xxx'

$option= [

 CURLOPT_URL =>$url,

 CURLOPT_HEADER => 1,

 CURLOPT_RETURNTRANSFER => 1,

];

curl_setopt_array($ch,$option);

$output= curl_exec($ch);

preg_match_all('/Set-Cookie: (.*);/i',$output,$str);//正则匹配

//如果有token的话就获取token

preg_match('/token = \"(.*)\"/i',$output,$token);

if(empty($str)) {

 returnfalse;

}

$cook=$str[1];

$cookie= implode('',$cook);

 

$up_url='xxx'

$post_data= [

 'name'=>'test_',

 'tel'=>�',

 'email'=>'qqhahadfdfads@163.com',

 'message'=>'this is my message;',

 '_token'=>$token[1],

];

$options= [

 CURLOPT_URL =>$up_url,

 CURLOPT_RETURNTRANSFER => 1,

 CURLOPT_HEADER => 1,

 CURLOPT_USERAGENT  =>"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36  (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36",

 CURLOPT_COOKIESESSION => 1,

 CURLOPT_POST => 1,

 CURLOPT_POSTFIELDS =>$post_data,

 CURLOPT_COOKIE =>$cookie

];

curl_setopt_array($ch,$options);

$res= curl_exec($ch);

// $info = curl_getinfo($ch);

if($res=== FALSE) {

 p('curl Error: '. curl_error($ch));

}

curl_close($ch);

p($res);

 

取自基于laravel开发的一个网站, laravel中表单中有一个csrf_token 的. 所以就得获取token, 还有带上cookie

这里注意的是, 不能同时初始化两个curl, 否则token或者cookie会发生变化, 如果你需要初始化两个curl的话, 可以使用CURLOPT_COOKIEJAR设置. [详情看手册]

然后运行下:binggo

使用curl时, 比较重要的就是一个cookie的应用, 翻了下手册, 设置cookie的就有四个...CURLOPT_COOKIESESSION、CURLOPT_COOKIE、CURLOPT_COOKIEFILE、CURLOPT_COOKIEJAR

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本网站。

本篇文章主要介绍了PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图等的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧

JpGraph简介

JpGraph是开源的PHP统计图表生成库,基于PHP的GD2图形库构建,把生成统计图的相关操作封装,隐藏了部分复杂的操作,使在PHP页面上输出统计图表变得更加容易。JpGraph的官方网站为:http://jpgraph.net,开发者可以在上面免费下载最新版的JpGraph和阅读相关帮助文档或示例程序。

JpGraph的配置

(1)修改文件php.ini

在include_path中添加jpgraph的目录路径,并将jpgraph解压后的src目录名称更改为jpgraph。

(2)检查PHP是否支持GD库

在php.ini文件中找到语句;extension=php_gd2.dll。把上述语句前的;号去掉,即去掉注释。如果因为PHP版本不同而找不到此语句,则可直接添加extension=php_gd2.dll

(3)修改文件jpgraph_gb2312.php

找到函数:function gb2utf8($gb)

把函数修改为:

 

 代码如下复制代码

functiongb2utf8($gb) {

return$gb;

}

 

即不使用gb2编码方式转utf8方式的那段代码。

折线图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_line.php");

 

$data1=array(523,634,371,278,685,587,490,256,398,545,367,577);//第一条曲线的数组

 

$graph=newGraph(500,300); 

$graph->SetScale("textlin");

$graph->SetShadow();  

$graph->img->SetMargin(60,30,30,70);//设置图像边距

 

$graph->graph_theme = null;//设置主题为null,否则value->Show(); 无效

 

$lineplot1=newLinePlot($data1);//创建设置两条曲线对象

$lineplot1->value->SetColor("red");

$lineplot1->value->Show();

$graph->Add($lineplot1);//将曲线放置到图像上

 

$graph->title->Set("CDN流量图"); //设置图像标题

$graph->xaxis->title->Set("月份");//设置坐标轴名称

$graph->yaxis->title->Set("流 量(Gbits)");

$graph->title->SetMargin(10);

$graph->xaxis->title->SetMargin(10);

$graph->yaxis->title->SetMargin(10);

 

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);//设置字体

$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); 

$graph->xaxis->SetTickLabels($gDateLocale->GetShortMonth());

$graph->Stroke();//输出图像

?>

 

柱状图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_bar.php");

 

$data=array(19,23,34,38,45,67,71,78,85,87,96,145);     

$ydata=array("一","二","三","四","五","六","七","八","九","十","十一","十二");

 

$graph=newGraph(500,300);//创建新的Graph对象

$graph->SetScale("textlin");//刻度样式

$graph->SetShadow();    //设置阴影

$graph->img->SetMargin(40,30,40,50);//设置边距

 

$graph->graph_theme = null;//设置主题为null,否则value->Show(); 无效

 

$barplot=newBarPlot($data);//创建BarPlot对象

$barplot->SetFillColor('blue');//设置颜色

$barplot->value->Show();//设置显示数字

$graph->Add($barplot);//将柱形图添加到图像中

 

$graph->title->Set("CDN流量图"); 

$graph->xaxis->title->Set("月份");//设置标题和X-Y轴标题

$graph->yaxis->title->Set("流 量(Mbits)");                                   

$graph->title->SetColor("red");

$graph->title->SetMargin(10);

$graph->xaxis->title->SetMargin(5);

$graph->xaxis->SetTickLabels($ydata);

 

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);//设置字体

$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD);

$graph->xaxis->SetFont(FF_SIMSUN,FS_BOLD);

$graph->Stroke();

?>

 

饼状图

 

 代码如下复制代码

<?php

require_once("jpgraph/jpgraph.php");

require_once("jpgraph/jpgraph_pie.php");

require_once("jpgraph/jpgraph_pie3d.php");

 

$data=array(19,23,34,38,45,67,71,78,85,87,90,96);

 

$graph=newPieGraph(550,500);

$graph->SetShadow();

 

$graph->title->Set("CDN流量比例");

$graph->title->SetFont(FF_SIMSUN,FS_BOLD);

 

$pieplot=newPiePlot3D($data);//创建PiePlot3D对象

$pieplot->SetCenter(0.4, 0.5);//设置饼图中心的位置

$pieplot->SetLegends($gDateLocale->GetShortMonth());//设置图例

$graph->Add($pieplot);

$graph->Stroke();

?>

 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!

本篇文章主要介绍了PHP读取Excel类文件的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧

想要使用PHP读取Excel文件必然要用到PHPExcel开源类库,网上资源应该挺多的。但是每一种的操作必然都是不同的,可原理应该都是大同小异。

这个文件夹里包含的就是PHPExcel类文件

,在外面还有一个入口PHP文件

处理机制:1.读取Excel文件

           2.获取最大行号和最大列号

              3.通过行数循环里面嵌套列数循环来用特殊符号拼接每个小表格里面的数据得到一个字符串

           4.然后使用explode拆分函数将字符串拆分后就得到了一个二维数组(即表格里面的数据)。

代码示例

 

 代码如下复制代码

$path="/wamp/www/xiong/hadf";

    if(is_dir($path)){

      echo"存在";

    }else{

      mkdir($path, 0777, true);

      echo"chuangji";

    }

    require_once"./PHPExcel.php";

    $filePath="./1233.xlsx";

    $PHPReader=newPHPExcel_Reader_Excel2007();

          if(!$PHPReader->canRead($filePath)) {

            $PHPReader=newPHPExcel_Reader_Excel5();

            if(!$PHPReader->canRead($filePath)) {

              echo'no Excel'

              exit;

            }

          }

    $PHPExcel=$PHPReader->load($filePath);

          /**读取excel文件中的第一个工作表*/

          $currentSheet=$PHPExcel->getSheet(0);

          /**取得最大的列号*/

          $allColumn=$currentSheet->getHighestColumn();

          // echo $allColumn;exit;

          /**取得一共有多少行*/

          $allRow=$currentSheet->getHighestRow();

          /**从第二行开始输出,因为excel表中第一行为列名*/

          $val=''

          for($currentRow= 1;$currentRow<=$allRow;$currentRow++) {

          /**从第A列开始输出*/

            for($currentColumn='A'$currentColumn<=$allColumn;$currentColumn++) {

              $val.=$currentSheet->getCellByColumnAndRow(ord($currentColumn)  - 65,$currentRow);//->getValue();/**ord()将字符转为十进制数*/

              $val.="&%|%&";

              /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将GBK编码转为UTF-8编码输出*/

              //$val .= iconv('GBK','UTF-8', $val);

            }

            $val.="\n";

          }$member_info_arr=explode("\n",$val);

          unset($member_info_arr[count($member_info_arr) - 1]);

          $present_time=date("Y-m-d H:i:s");

          if(count($member_info_arr) <= 0) {

            sys_msg_json(0,"会员信息文件中无数据,请添加");

          }

          unset($member_info_arr[0]);

          // var_dump($member_info_arr);exit;

          foreach($member_info_arras$key=>$val) {

            $arr[$key] =explode("&%|%&",$val);

          }

          // var_dump($arr);exit;

          foreach($arras$key=>$val) {

            unset($arr[$key][2]);

          }

          var_dump($arr);

 

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持本网站!

[!--infotagslink--]

相关文章