2012-09-24 42 views
1

我有一个表单,其字段可以通过点击'[+]'符号来增加。我想在数据库中存储动态可扩展表单的数据

,我使用的形式的代码是 说明 数量 价格 “;

// Loop to prepare the display of 100 product lines 
for ($i=0; $i<100; $i++) { 

    if ($text['quantity'][$i] == "") $text['quantity'][$i] = 1; 
    if ($text['unit'][$i] == "") $text['unit'][$i] = "0.00"; 
    // Display only the first line 
    if ($nbr_ligne == 0) $nbr_ligne = 1; 
    if ($i >= $nbr_ligne) $display = 'style="display:none"'; 
    echo ' 
    <tr id="cell'.$i.'" '.$display.'> 
     <td> 
      <textarea name="text[detail]['.$i.']">'.stripslashes($text['detail'][$i]).'</textarea> 
      <br /> 
      <a href="javascript:void(0)" onclick="javascript:document.getElementById(\'cell'.($i+1).'\').style.display=\'table-row\'; this.style.display=\'none\'">[+]</a> 
     </td> 
     <td> 
      <input name="text[quantity]['.$i.']" id="q'.$i.'" value="'.stripslashes($text['quantity'][$i]).'" size="4" /> 
     </td> 
     <td> 
      <input name="text[unit]['.$i.']" id="u'.$i.'" value="'.stripslashes($text['unit'][$i]).'" size="7" /> USD 
     </td> 
    </tr>'; 
} 

echo ' 
    </table> 
    <input type="submit" name="save" value="Save" /> 
</form> 
'; 
if(isset($_POST['save'])) 
{ 
    echo $text['quantity']['.$i.']; 

     mysql_connect("localhost","root",""); 
     mysql_select_db("rvt") or die("unable to select db"); 
     extract($_POST); 
     $insert=mysql_query("insert into add(description, quantity, price) values('$text[detail][".$i."]','$text[quantity][".$i."]','$text[unit][".$i."]')"); 
    if($insert) 
    { 
     echo "hi"; 
    } 
} 
?> 

我想将数据存储到数据库。它不起作用。

Plz帮助我将数据存储在数据库中。

+0

它不工作如何? – Petah

+0

@Petah它不会在数据库中插入数据。 –

+0

把回声mysql_error($ db),看看它说什么? –

回答

0

由于PHP解析器“bug”,您的查询不起作用。它不是一个贪婪解析器,所以像:

echo "$array[1][2]"; 

实际上会产生作为输出

Array[2] <---yes, the literal word 'Array'. 

而不是任何值存储在子阵列的索引2索引1

,因为PHP的解析器在第一组[]之后停止考虑数组引用。您需要使用{}符号:

... values('{$text['detail'][$i]}', etc... 
      ^    ^

注意{}的位置,和周围的细节关键的附加'。请使用extract(),尤其是_GET/_POST。你基本上是在重新编写php中打开register_globals时非常可怕的恶劣日子。这是一个正在等待被利用的安全漏洞。

+0

也应该只连接到db一次每个PHP脚本,所以你应该在使用'for循环'之前进行连接 –

相关问题