将一种形式的价值转化为另一种形式

时间:2012-02-21 17:02:53

标签: php javascript html

我正在寻找一个简单的解决方案。代码使用的是JQuery和PHP。我所拥有的是2个表格 - 1个选择学生,值为2位数代码。另一个表单为该学生上传文档,我需要第一个表单中的student_id与第二个表单一起提交。我看了,并没有看到一个非常有效的解决方案。只是寻找简单的东西,如果有另一篇文章可行,我很乐意接受一个链接:) 第一种形式:(我为格式化道歉,它不正确,我上学迟到了)

<form>
<select id="student_id" name="student_id" onChange="showInvoicesForStudent();">

<option value=''>Select Student</option>

<?php
     $temp = mysql_query("select * from students order by lname");
     while ($row = mysql_fetch_array($temp)) {
          echo "<option value='" . $row['student_id'] . "'>" . $row['lname'] . ", " . $row['fname'] . "</option>";
      }
      echo "</select>";

     $DB->close();

     ?>
</form>

第二个(我正试图将student_id从上面带入:

 <form name="upload_invoice" method="post" action="upload_invoice.php" enctype="multipart/form-data" >

<input type="hidden" value="document.getElementById('student_id');" id="student_id"/>

4 个答案:

答案 0 :(得分:1)

两种形式意味着:两个独立的php文件?

  1. 解决方案(一个php文件):你在“值”放置的小javascript代码并没有那么糟糕。但是a)它不被认为是javaScript而b)它是错误的地方。你应该把它放在按钮提交(onClick)。 但是,如果两个表单都放在同一页面上:为什么有两个单独的表单?如果您将student_id字段嵌入到第二个表单中,则会将其提交。

  2. 解决方案(两个php文件):但是如果第二个表单放在另一个php文件上,你将无法通过javascript访问第一个表单。因此你应该使用php标签和“$ _REQUEST ['student_id']”来打印这个值。 (请记住要做好逃脱,这样任何人都不能违反这种形式。)

答案 1 :(得分:1)

如果两个表单都在同一页面上,您可以将它们组合在一起,或者如果这不可能,您可以使用jQuery将值从第一个表单添加到第二个表单。在这种情况下,您需要更改第二个表单的ID,因为不允许在同一页面上具有两个具有相同ID的HTML元素。 (以下代码未经测试)

<script>
$(document).ready(function(){
  $('#student_id').change(function() {
    $('#student_id2').val($('#student_id).val());
  });
});
</script>

如果表单位于不同的页面上,则不需要使用jQuery,而是使用$_GET$_POST(取决于表单的方法)。如果第二个表单不在紧跟第一页的页面上,则需要将student_id保存在cookie中(使用set cookie)并使用($_COOKIE

访问它

答案 2 :(得分:0)

   function getCodeIdForStudent(){
       var   selectedBox=document.getElementById('student_id');
       var selectedItem=selectedBox.value;
       var hiddenText=document.getElementById('hidden_text_id');
       hiddenText.value=selectedItem; 
    }

<select id="student_id" name="student_id" onChange="getCodeIdForStudent();">

答案 3 :(得分:0)

    **this code will give you the exact result**


 //upload_invoice.php   
print_r($_POST);

    //index.php
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <script type="text/javascript" >

    function showInvoicesForStudent(student_id)
    {
        document.getElementById('studentForm_id').value=student_id;
        document.upload_invoice.submit();
    }
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
    </head>
    <body>
    <select id="student_id" name="student_id" onChange="showInvoicesForStudent(this.value);" >

    <option value=''>Select Student</option>

    <?php
         $temp = mysql_query("select * from students order by lname");
         while ($row = mysql_fetch_array($temp)) {
              echo "<option value='" . $row['student_id'] . "'>" . $row['fname'] . ", " . $row['lname'] . "</option>";
          }

         $DB->close();

         ?>
         </select>
    <form name="upload_invoice" method="post" action="upload_invoice.php" enctype="multipart/form-data" >

    <input type="hidden" name="studentForm_id" id="studentForm_id"/>
    </form>
    </body>
    </html>