2008-11-16 71 views
0

问候,MySQL和PHP - 窗体帮助

我有以下代码

  <?  
     include("conn.php"); 
     $sn=$_GET["sn"]; 
     $sql="select * from kpi where no='$sn'"; 

     $result=mysql_query($sql,$connection) or die(mysql_error()); 
     while($row=mysql_fetch_array($result)) { 
      $sn=$row['id']; 
      $no=$row['no']; 
      $pdetails=$row['pdetails']; 
      $kpistatus=$row['kpistatus']; 
      $status=$row['status']; 
      $cols=$row['cols']; 
      $rows=$row['rows']; 
     } 
    ?> 

    <form name="form1" method="post" action="formsubmit.php?mode=addtable"> 
     <table width="100%" border="1" align="center" cellpadding="2" cellspacing="2"> 
      <tr> 
      <td colspan="2"><strong>Add Table</strong></td> 
       </td> 
      </tr> 
      <tr> 
      <td>NO</td> 
      <td><input name="no" type="text" id="no" value="<? echo $no; ?>"></td> 
      </tr> 
      <tr> 
      <td>PROJECT DETAILS</td> 
      <td><textarea name="pdetails" rows="10" cols="100"><? echo $pdetails; ?></textarea></td> 
      </tr> 
         <tr> 
      <td>KPISTATUS</td> 
      <td> 
      <? 
      echo "<table border=\"1\" align=\"left\">\n"; 
      $j=0; 
      while ($j < $rows) 
      { 
      echo "<tr>\n"; 
      $i=0; 
      while ($i < $cols) 
      { 
      ?> 
      <td><input type="text" name="kpistatus" id="kpistatus"></td> 
      <? 
      $i++; 
      }  
      echo "</tr>\n"; 
      $j++; 
      } 
      echo "</table>\n"; 
      ?> 
      </td> 
      </tr> 
      <tr> 
      <td>STATUS</td> 
      <td><textarea name="status" rows="10" cols="100"><? echo $status; ?></textarea></td> 
      </tr> 
      <tr> 
      <td colspan="2"><input type="submit" name="Submit" value="ADD TABLE"></td> 
      </tr> 
     </table> 
     </form> 
 elseif($mode=="addtable") { 
     $no=$_POST["no"]; 
     $pdetails=$_POST["pdetails"]; 
     $kpistatus=$_POST["kpistatus"]; 
     $status=$_POST["status"]; 
     $sn=$_POST["id"]; 
     $sql="update kpi set pdetails='$pdetails',kpistatus='$kpistatus',status='$status' where no='$no'"; 
     //echo $sql; 
     $result=mysql_query($sql,$connection) or die(mysql_error()); 
     //header("location: index.php"); 
     } 
     ?> 

截图的形式为: http://img395.imageshack.us/my.php?image=1226818203913yi6.png

用户可以输入多少行和他们需要插入数据的列。在截图我行是10,而列5

现在在哪里卡住了,我怎么能保证,在 <输入类型的所有输入数据=“文本”名称=“kpistatus” ID =“kpistatus部分“>保存在kpistatus mysql表中。

请帮帮我。

谢谢。

回答

4

如果你把方括号放在一个input的名字里,php会自动把它们变成你在post数组中的数组。然后你可以遍历它并根据需要保存它们。在你的表格,你干脆把

<input type="text" name="kpistatus[]" id="kpistatus">

(注:将两个支架的)。

然后,在您的表单处理代码中,您将有$_POST['kpistatus']作为数组。您可以使用PHP的implode函数,通过执行诸如implode(',', $_POST['kpistatus']之类的操作将它变成逗号分隔列表。

快速注意:

在你的代码,你需要在所有的变量都使用mysql_real_escape_string,将其插入。否则,用户可以将SQL代码输入到其中一个输入中,并且可以执行他们想要的任何操作(这称为SQL注入)。

想象一下,如果某人在状态字符串中有单引号,会发生什么情况。最好它会导致错误,最坏的情况是它们可能会覆盖或擦除数据。

对不起,如果这是你很明显,但我只是想确保覆盖它。