如何在PHP代码中包含表单

时间:2014-01-08 17:02:01

标签: javascript php html forms

我正在尝试在这样的php语句中插入一个表单

    while($row = mysql_fetch_array($result))
  {
  echo "<form id='send' action='up.php' method='POST'>
  <tr>
  <td>" .  $row['s_no'] ."</td>
  <td> <label for='student_name'><textarea name='student_name' >".$row['student_name']."</textarea></label></td>
   <td> <textarea name='roll_no'>".$row['roll_no'].     "</textarea></td>
   <td> <textarea name='company'>".$row['company'].     "</textarea></td>
   <td> <textarea name='contact_no' >".$row['contact_no'].  "</textarea></td>
   <td> <textarea name='email'>" .$row['email'].       "</textarea></td>
   </tr>
   <input type='text' name='batch_name' disabled='disabled' size='7' value=" .$_POST['batch_name']. "> 
   <p align='center'><button id='submit' type='submit'>Update</button></p>
  </form>";
  }

我从数据库中获取数据并将其作为默认值放入texareas中,因此可以编辑。所以我计划使用UDPDATE查询来进行如下改动:

    <html>
<title>Alumini Update</title>
<head>

<?php
$con = mysql_connect("localhost","root","momsgift");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("alumini", $con);

mysql_query("UPDATE $_POST[batch_name] SET contact_no = $_POST[contact_no] WHERE roll_no = '2321'");

mysql_close($con);
?>

但是在发送查询时,textarea中的数据没有加载到数据库中(BUt它重定向到up.php页面) 可能是什么原因?

4 个答案:

答案 0 :(得分:0)

您正在生成无效的HTML。

如果不将表格包裹在整个表格中,则无法将表格包裹在表格行周围。

您的浏览器通过移动表单元素进行错误恢复。这是意外结果的最可能原因。

在生成的HTML上使用a validator

答案 1 :(得分:0)

在MySQL更新查询中,您只更新contact_no没有其他字段。

此外,您已将查询打开以进行SQL注入

$batch_number = mysql_real_escape_string($_POST['batch_name']);
$contact_no = mysql_real_escape_string($_POST['contact_no']);
$student_name = mysql_real_escape_string($_POST['student_name']);
$roll_no = mysql_real_escape_string($_POST['roll_no']);
$company = mysql_real_escape_string($_POST['company']);
$email = mysql_real_escape_string($_POST['email']);

mysql_query("UPDATE ('" . $batch_no.  "')
SET contact_no = ('" . $contact_no .  "'),
student_name = ('" . $student_name.  "'),
company = ('" . $company .  "'),
email = ('" . $email .  "'),
WHERE roll_no = ('" . $roll_no .  "')");

这个(m​​ysql_real_escape_string)不会解决所有问题,使用PDO是一种更好的方法,但它是一个非常好的垫脚石。

答案 2 :(得分:0)

首先写下这个并查看结果,如果它显示textarea的文本,则表明文本正在以正确的方式发送。问题出在你的sql代码中。         echo $ _POST ['contact_no']; 然后你可以回显查询并复制并在phpmyadmin中运行它并查看sql的错误。

答案 3 :(得分:0)

    //EXAMPLE 1

       if (isset($_POST['update']))
        {           
        $result = pg_query($db_con, "UPDATE mydbtable SET mydbrecord = '$_POST[my_var1]' WHERE mydbrecord_id = '$_POST[myfilterbyid_var]'");  

        if (!$result)  
        {  
          echo "Update failed!!";  
        }
        else  
           {  
             echo "Update successfull!";  
           }  
        }


    //EXAMPLE 2

<form name="display" action="" method="post">  
<select name="mydropdown" action="test.php" method="post">
  <?php
     while($row = pg_fetch_assoc)
    {
     echo "<option id=\"{$row['result_var']}\">{$row['result_var']}</option>";
    }
?>
</select>