2017-05-29 3 views
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> 
        <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> 

あるすべての記事のために同じIDを取得提出しかし、一度問題がありますか? enter image description here

+0

各フォームは一意のIDを持つ必要があります。 javascript関数は、そのIDに基づいた最初のフォームのみを見つけます...別のアプローチが必要です – RamRaider

+0

答えは既にかなり正しいです。その点を確認してください。あなたができるなら、私はあなたのコースとフォームを分けています。その後、ユーザーがクリックすると、javascriptまたはjqueryを使用してフォームにデータを入力して送信します。 –

答えて

1

すべてのフォームに同じIDがあるので、javascriptは最初のものを選択して送信します。

あなたはそれらにすべて異なるIDを与えてから、希望の結果を得るために1人のクリックを送信しなければなりません。

例:異なるフォームに異なる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

この問題は、同じID(フォーム)を使用してデータを入力するwhileループevertimeのように適切です。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を使用することが1つの解決策です。各フォームには、プレーンテキストに似せるスタイルの送信ボタンがあります。あるいは、フォームを1つ作成し、JavaScriptを使用して値を設定してから送信することもできます。

関連する問題