2017-05-29 109 views
1

我想從數據庫中獲取一些信息以表示課程,如圖所示。然後我想給用戶提供一個按鈕來點擊以獲取更多信息。爲了知道哪個帖子被點擊了,我已經創建了一個表單,並且把課程ID放在裏面,然後我提交該表單。但問題是,一旦我提出我得到所有職位相同的ID這是第一個ID我想提交一個表格,但提交的值只屬於第一個

<?php 
     $name = $_SESSION["uname"];    
     $sql = "SELECT * FROM `courses` where course_lec = '$name'"; 
     $result = $conn->query($sql); 
     if ($result->num_rows > 0) { 
      while($row = $result->fetch_assoc()) { 
       echo ' 
        <div class="col-md-4"> 
        <span class="fa-stack fa-4x"> 
        <i class="fa fa-circle fa-stack-2x text-primary"></i> 
        <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i> 
        </span> 
        </br> 
        <a href="javascript: functionTest()">Search</a> 
        <form name="myform" id="form" action="checkMarks.php" method="post"> 
        <input type= "text" value ="'. $row["course_id"].' " name="test"></input> 
        </form> 
        </br> 
        </div>'; 

          } 

        } 

?> 
       <script > 
        function functionTest() { 

         document.getElementById("form").submit(); 

          } 


       </script> 

任何想法,我怎麼能解決呢? enter image description here

+0

每個表格都需要有一個唯一的ID--或者根本沒有。 javascript函數只會根據它的id找到第一個表單...你需要一個不同的方法 – RamRaider

+0

答案已經很正確了。對此進行檢查。如果可以的話,我的建議是將你的課程與表格分開。然後當用戶點擊時,使用JavaScript或jquery填充表單然後提交。 –

回答

1

由於您的所有表單都有相同的ID,因此JavaScript會挑選第一個表單並提交。

你將不得不給他們所有不同的ID,然後提交一個用戶點擊以獲得所需的結果。

示例:您的回顯將更改爲將不同的ID分配給不同的形式和該函數的參數。

... '<a href="javascript: functionTest('.$row["course_id"].')">Search</a> 
    <form name="myform" id="form'.$row["course_id"].'" action="checkMarks.php" method="post"> 
     <input type= "text" value ="'. $row["course_id"].' " name="test"></input> 
    </form>' ... 

和腳本也會隨之改變:

<script > 
    function functionTest(course_id) { 
     document.getElementById("form"+course_id).submit(); 
    } 
</script> 

PS - 這可能不是這樣做的最佳方式,但一個良好的開端。

2

這個問題是適當的,因爲在while循環加班你正在填充數據具有相同的ID(形式),解決,在PHP中創建一個變量讓我們說$ formId = 0和intialise與0和evertime增加它與while環

$formId = 0 
    while(){ 
echo"<form id="'.$formId.'" /form>" 
$formId++; 
} 
1

你必須爲你的表單的唯一ID:

<?php 
    $name = $_SESSION["uname"];    
    $sql = "SELECT * FROM `courses` where course_lec = '$name'"; 
    $result = $conn->query($sql); 
    if ($result->num_rows > 0) { 
     $form_id = 1; 
     while($row = $result->fetch_assoc()) { 
      echo ' 
      <div class="col-md-4"> 
      <span class="fa-stack fa-4x"> 
      <i class="fa fa-circle fa-stack-2x text-primary"></i> 
      <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i> 
      </span> 
      </br> 
      <a href="javascript: functionTest()">Search</a> 
      <form name="myform" id="form-'.$form_id++.'" action="checkMarks.php" method="post"> 
      <input type= "text" value ="'. $row["course_id"].' " name="test" /> 
      </form> 
      </br> 
      </div>'; 

     } 
    } 
?> 
<script > 
    function functionTest() { 
     document.getElementById("form").submit(); 
    } 
</script> 
1

每個元素都必須有一個唯一的ID或根本沒有。如果您刪除了ID,則需要使用其他方法來查找特定表單。

<?php 
     $name = $_SESSION["uname"];    
     $sql = "SELECT * FROM `courses` where course_lec = '$name'"; 
     $result = $conn->query($sql); 
     if ($result->num_rows > 0) { 
      while($row = $result->fetch_assoc()) { 
       echo ' 
       <div class="col-md-4"> 
        <span class="fa-stack fa-4x"> 
         <i class="fa fa-circle fa-stack-2x text-primary"></i> 
         <i class="fa fa-shopping-cart fa-stack-1x fa-inverse"></i> 
        </span> 

        </br> 

        <a href="javascript: functionTest()">Search</a> 
        <!-- remove the ID --> 
        <form name="myform" action="checkMarks.php" method="post"> 
         <input type= "text" value ="'. $row["course_id"].' " name="test"></input> 
        </form> 
        </br> 
       </div>'; 

      } 
     } 

?> 

<script> 
    function functionTest(event){ 
     try{ 
      var a=event.target; 
      var parent = a.parentNode;/* this will be the containing DIV */ 
      /* search within container for a form */ 
      var form=parent.querySelectorAll('form[name="myform"]')[0]; 
      /* submit the data */ 
      if(form)form.submit(); 
     }catch(err){ 
      alert(err) 
     } 
    } 
</script> 

使用javascript是一種解決方案 - 您可以在每個表單中提供一個類似純文本的提交按鈕。或者,您可以使用單個表單並在提交之前使用JavaScript來設置值。