2012-03-22 70 views
-1

我有这样的代码:PHP添加多个输入字段到mysql

<html> 
<body> 

<form id="myForm" method="post" action="add-data.php"> 
     <input type="submit"> 
     <input type="text" name="pollquestion"> 
     <input type="text" name="polloption1"> 
     <input type="text" name="polloption2"> 
</form> 
<a href="javascript:addOption();">Add option</a> 

<script> 
     var optionNumber = 3; 
     function addOption() { 
       var theForm = document.getElementById("myForm"); 
       var newOption = document.createElement("input"); 
       newOption.name = "polloption"+optionNumber+""; // poll[optionX] 
       newOption.type = "text"; 
       theForm.appendChild(newOption); 
       optionNumber++; 
     } 
</script> 
</body> 
</html> 

如果我增加更多的投入,我会是这样的:

<input name="pollquestion" type="text"> 
<input name="polloption1" type="text"> 
<input name="polloption2" type="text"> 
<input name="polloption3" type="text"> 
<input name="polloption4" type="text"> 
<input name="polloption5" type="text"> 
<input name="polloption6" type="text"> 

PHP代码是这样的:

$qu = $_POST['pollquestion']; 
$op1 = $_POST['polloption1']; 
$op2 = $_POST['polloption2']; 
$query = "INSERT into `".$db_table."` (question, option1, option2) VALUES ('" . $qu . "','" . $op1 . "','" . $op2 . "')"; 

如何将这些数据添加到每个添加的行的MySQL?谢谢!许多

+0

什么你问的是不明确 – 2012-03-22 12:01:09

回答

1

的一种方式......

$query = "INSERT into `$db_table` SET `question` = '".mysql_real_escape_string($_POST['pollquestion'])."'"; 

foreach (range(1,6) as $idx) { 
    if (!empty($_POST['polloption'.$idx])) { 
     $query .= ", `option$idx` = '".mysql_real_escape_string($_POST['polloption'.$idx])."'"; 
    } 
} 
当然

的mysql_real_escape_string重要的是要避免http://en.wikipedia.org/wiki/SQL_injection

1

首先,你需要知道你有多少选择提交这样新增一个常量输入形式:

<input type="hidden" id="numOptions" name="numOptions"/> 

addOption()功能更新其值(增加optionNumber前):

document.getElementById("numOptions").value = optionNumber; 

在您需要动态地创建查询,像这样在服务器端:

$options = array(); 
$values = array(); 
$numOptions = intval($_POST[ "numOptions" ]); 

for ($i = 1; $i <= $numOptions; $i++) 
{ 
    $options[] = "option$i"; 
    $values [] = "'" . mysql_real_escape_string($_POST[ "polloption$i" ]) . "'"; 
} 

$query = "INSERT INTO $db_table(" . implode(',', $options) . ") VALUES('" . 
     implode(',', $values); 

请介意收到字符串的转义!防止SQL注入非常重要。

0

可以遍历$ _POST,有规律,这样的事情匹配的密钥:

foreach($_POST as $key => $value) { 
    preg_match('/(\w+)(\d+)/Uis', $key, $m); 
    if($m[1] == 'polloption') { 
     // concatenate new values to your query 
    } 
} 

记住关系型数据库,你已经在你的桌子固定属性的数量。所以你应该加固定的选项数。

1

HTML

<input name="title" type="text"> 
<input name="descr" type="text"> 

<input name="question[1]" type="text"> 
<input name="option[1][1]" type="text"> 
<input name="option[1][2]" type="text"> 
<input name="option[1][3]" type="text"> 
<input name="right[1]" type="radio" value=1> 
<input name="right[1]" type="radio" value=2> 
<input name="right[1]" type="radio" value=3> 

<input name="question[2]" type="text"> 
<input name="option[2][1]" type="text"> 
<input name="option[2][2]" type="text"> 
<input name="option[2][3]" type="text"> 
<input name="right[2]" type="radio" value=1> 
<input name="right[2]" type="radio" value=2> 
<input name="right[2]" type="radio" value=3> 

PHP

$title = mysql_real_escape_string($_POST['title']) 
$descr = mysql_real_escape_string($_POST['descr']) 
$query = "INSERT into `polls` (title,descr) VALUES ('$title', '$descr')"; 
$id = $db->query($query); 

foreach ($_POST['question'] as $num => $q) { 
    $q = mysql_real_escape_string($q) 
    $query = "INSERT into `poll questions` (poll,question) VALUES ($id,'$q')"; 
    $db->query($query); 
    foreach ($_POST['option'][$num] as $i => $opt) { 
    $right = ($_POST['right'][$num]) == $i)?1:0; 
    $opt = mysql_real_escape_string($opt) 
    $num = intval($num); 
    $query = "INSERT into `poll options` (poll,num,option,right) 
      VALUES ($id,$num,'$opt',$right)"; 
    } 
} 
+0

它只广告数据到调查表,这一点,如果我删除的foreach {}语句 – bizkit1 2012-03-22 13:50:25

+0

这并非是准备一个真正的代码工作 – 2012-03-22 14:02:40

+0

我需要它为学校的项目和我真的初学者到PHP,所以我不'吨了解不多 – bizkit1 2012-03-22 14:22:15