在查询中插入动态文本框值

时间:2015-01-07 06:25:41

标签: javascript php mysql

这是我的javascript和php代码,也是一个表单。如何为table中的多个动态文本框插入值。请告诉我如何在查询中插入数组以插入值 查询我的代码。

<?
if(isset($_POST['submit']) && $_POST['submit']=="Submit")
{

  $filter_attr=$_POST['filter_attr'];

    $query=mysql_query("insert into filter (filter_attr,addedon)values ('".$filter_attr."','".date("Y-m-d H:i:s")."')");

  }
?>


<script language="javascript">
var i = 1;
function changeIt()
{

my_div.innerHTML = my_div.innerHTML +"<br><input type='text' size='70' id='filter_attr' name='filter_attr'+ i>"
i++;
}
</script>

    

<tr height="20"></tr>
<tr height="25">
<td width="30%">Filter Attribute</td>
<td width="50%"><input type="text" name="filter_attr" size="70" id="filter_attr" filter="50"><div id="my_div"></div></td>
<td width="20%"> <input type="button"  value="ADD" onClick="changeIt()"></td>
</tr>
</table>
</form>

4 个答案:

答案 0 :(得分:1)

只是演示如何实现它     

  $postedData=$_POST;
  $keys = implode(',', array_keys($postedData));
  $values = implode(',', $postedData);

    $query=mysql_query("insert into filter ('".$keys."',addedon)values ('".$values."','".date("Y-m-d H:i:s")."')");

  }
?>

代码未经过测试,因此请注意

答案 1 :(得分:1)

@Vidhipriya Joshi,您应该对现有代码进行一些更改,如下所示: 在HTML文件中,您可以:

<input type="text" name="filter_attr[]" size="70" id="filter_attr" filter="50">

注意:name属性是一个存储所有输入值的数组,在js和php文件中也是如此。

建议:最好使用jquery append function 取代innerHTML。

请参阅链接以获取更多指导..

Add/Remove Input Fields Dynamically in php

希望它能满足你的需求.. :)

答案 2 :(得分:1)

只需修改您的JS脚本

    <script language="javascript">
    var i = 1;
    Function changed ()
    {

my_div.innerHTML = my_div.innerHTML +"<br><input type='text' size='70' id='filter_attr[]' name='filter_attr'+ i>"
    i++;
    }
    </script>

提交表单后,您将获得php中的filter_attr

试试这个。

答案 3 :(得分:1)

这是用于处理表单的PHP:

<?php
// before form submitted $_POST has a null value
if( isset($_POST) && $_POST != null) {
    $post = $_POST['filter_attr'];

   // assuming an input contains only alphabetical characters
   if ( ctype_alpha( $post ) || is_array( $post ) ) {

       // var_dump($post); 
       // rest of processing, i.e. create insert query ...
  }
   else
   {
     // the data is unacceptable, so you may wish to end the script.
     exit;
   }
}    
?>

这是JavaScript:

<script language="javascript">
var i = 1;
function changeIt()
{
var d = document;
d.getElementById("my_div").innerHTML += "<br>";
d.getElementById("my_div").innerHTML += "<input type='text' size='70' id='filter_attr" + i  +  "'  name='filter_attr[]'><br>";
i++;
}
</script>

如果静态和动态输入的name属性为“filter_attr []”,PHP将识别提交的表单包含filter_attr数据数组。但是,如果您希望JavaScript使用document.getElementById访问它,则ID必须是唯一的。因此,第一个动态输入的id为“filter_attr1”,名称为“filter_attr []”。

请注意:

  1. 最好写: document.getElementById("my_div")比直接使用ID或名称(请参阅Why don't we just use element IDs as identifiers in JavaScript?上的讨论)

  2. 使用DOM及其方法创建动态输入是可取的。如果您愿意,可以使用jQuery简化DOM的使用。

  3. 上面的HTML似乎缺少提交按钮。但是,即使它存在于实际代码中,以下代码也不起作用:

  4.   

    if(isset($ _POST ['submit'])&amp;&amp; $ _POST ['submit'] ==“Submit”){

    当表单通过POST或GET请求提交时,提交的内容是键值对数据,即来自表单元素的数据,用户必须提供某种响应,无论是文本还是标记复选框或单选按钮。提交按钮有助于提交数据,但如果您没有提到名称,则其本身不会被提交,并且名称必须与其类型相同,即“提交”。我恭敬地建议我之前的PHP代码做出的回答问题的方式,“是否提交了一个表单?如果是,它是否包含任何数据?”

    1. 代码需要假设帖子可能被污染。这意味着您需要在使用之前验证发布的数据。

    2. 自PHP5.5起,不推荐使用mysql扩展;见The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead的讨论。

    3. 最后,应限制使用HTML TABLE来显示表格数据,不应将其用于布局。相反,使用DIV元素并通过样式化它们可以实现所需的布局。这个结果在语义上是正确的并且可以节省内存。