2014-11-17 2 views
1

다른 과제에 학생들의 점수를 입력하기 위해 mySQL 데이터베이스와 상호 작용하는 동적 인 PHP 양식을 만들고 있습니다. 지금까지 나는 데이터베이스에 성공적으로 연결하여 필요한 데이터에 액세스했습니다. 다음 코드는 각 학생에 대해 먼저 이름과 그 학생이 과제에서 얻은 점수를 입력하는 빈 텍스트 입력 상자를 표시합니다.동적 입력 양식 PHP

<?php if(isset($_POST["beginScoring"]) || isset($_POST['submitScores'])){ 
     $result = $connection->query("SELECT id, firstname, lastname FROM student ORDER BY lastname"); 
     if(!$result) 
     { 
      echo "Query Failure";    
     } 
     else 
     { 
      $foo = array(); 
      $c = 0; 
      echo "<tr><td>Last Name</td><td>First Name</td><td>Points Earned</td></tr>"; 
      while ($row = $result->fetch_assoc()) 
      { 
       echo "<tr><td>$row[lastname]</td><td>$row[firstname]</td>";  
       ?> 
       <td><input type="text" size=8 name="" id="" value=""/></td></tr> <!-- I can maybe use an array to store scores . . . --> 
       <?php 
      } 
     } 
    ?> 

문제는 내가 텍스트 입력의 이름을 지정하는 방법입니다. 텍스트 상자의 양이 정해지지 않을 것이므로 입력 항목에 하나의 정적 이름을 사용할 수 없습니다. 맞습니까? POST 배열을 사용하여 텍스트 상자에 쉽게 액세스 할 수 있도록 텍스트 상자의 이름을 지정하는 좋은 방법은 무엇입니까?

+0

가능한 복제본 : http://stackoverflow.com/questions/24971127/how-to-take-inputs-of-dynamically-created-textbox-on-php-and-store-them-in-mysql –

+0

Erm, 이름 []? - 또는 그와 비슷한 것 – Strawberry

+0

나는 중복 된 게시물로 내 문제에 대한 해결책을 실제로보고 있지 않습니다. 양식에서 동적으로 입력 요소의 이름을 지정하는 방법에 대한 아이디어가 있으므로 형식에 따라 입력 필드가 무제한으로 처리 될 수 있습니까? – cheesebal35

답변

2

댓글을 작성한 사람들은 기본적인 질문에 답변했습니다. "varname []"을 사용하면 원하는 솔루션을 얻을 수 있습니다. 그러나 나는이 문제에 더 많은 것이 있다고 생각한다.

어떤 점에서 어떤 점수가 어떤 학생인지 알 필요가 있습니다. 단순히 name = "score []"를 사용하면 백엔드의 $ _POST [ 'score'] 변수에 액세스해도 점수가 속한 학생을 알 수 없습니다. 당신은 그것을 알 수있는 방법이 필요합니다.

이렇게하려면 두 가지 방법이 있습니다.

foreach ($_POST['student'] AS $key => $id) 
{ 
    $score = $_POST['score'][$key]; 
    // $sql = "INSERT INTO scores (`student`,`score`) VALUES ('$id','$score')"; 
} 

하지만 개인적으로 숨겨진를 사용하지 않고 그것을 처리 할 것 :

방법 1 당신이 뭔가를 할 것 백엔드에 숨겨진 변수를

<input type="hidden" name="student[]" value="<?php echo $row['id']?>" /> 
<td><input type="text" size=8 name="score[]" id="<?php echo $row['id']?>" value=""/> 

다음을 사용하는 것입니다. 대신 내 HTML로 다음과 같이 할 것입니다 :

<td><input type="text" size=8 name="score[<?php echo $row['id']?>]" id="<?php echo $row['id']?>" value=""/> 

점수 [] HTML 변수 이름에 학생 ID를 표시합니다. 그런 다음 백엔드에서이 작업을 수행 할 수 있습니다.

foreach ($_POST['score'] AS $id => $score) 
{ 
    // $sql = "INSERT INTO scores (`student`,`score`) VALUES ('$id','$score')"; 
}  

행운을 빈다!

+0

감사합니다, 당신 진짜 MVP입니다! – cheesebal35