2012-02-27 9 views
1

다음과 같은 문제가 있음을 발견했습니다. 임의의 수의 필드가있는 양식이 있습니다. (이것은 사용자가 동료 팀원의 이름을 입력 할 수 있도록 해주 며 팀에 설정된 크기가 없습니다.) 입력 된 데이터가 데이터베이스에 저장 될 준비를 위해 포맷되어 있어야합니다.데이터베이스에 준비중인 임의의 수의 FORM 필드

데이터베이스 구조는 괜찮습니다. 그냥 $_POST의 임의의 숫자를 가져 와서 문제가되는 배열에 넣어 두었습니다.

은 지금까지 나는 id S/name들 (예를 들어 TeamMemberName1, TeamMemberEmail1, TeamMemberName2, TeamMemberEmail2 등) 증가로, 사용자가 필드의 무한한 수를 생성/제거 할 수 있습니다 약간의 자바 스크립트를 가지고있다.

지금 당장 나는 합리적인 금액의 POST 에드 데이터를 다차원 배열에 넣는 못생긴 일련의 PHP 구문을 만들었습니다. 왜 팀이 50보다 커야하는지 알지 못합니다. 데이터베이스에 전달하기 전에 배열을 처리하여 빈 행을 제거하려고했습니다.

예 :

$submittedTeamMembers = 
     array ("teamMember1" => 
      array ("name" => $_POST["teamMemberName1"], 
        "email" => $_POST["teamMemberEmail1"]) 
      ); 

하지만 더 좋은 방법이 같은데요!

+0

. 테이블 (team_id, member_id, memberInforUniqueToTeam) 및 팀 정보가있는 팀 테이블을 가질 수도 있고 팀이 고유하지 않은 열일 수도 있습니다. 그러면 팀 3에 두 사람이 있으면 w 개의 행 (3, member_1)과 (3, member_2). – Kyra

+0

나는 이것을 위해 별도의 테이블을 이미 가지고있다. 데이터베이스 구조는 문제가 아닙니다. –

답변

4

귀하의 입력 이름은 PHP가 완벽하게 이해할 수있는 배열 형태 일 수있다. 예 :

<input type="text" name="teamMembers[0]['name']" /> 
<input type="text" name="teamMembers[0]['email']" /> 

예상대로 PHP는 포스트 후 해석됩니다 : 당신이 팀을 연결하는 두 번째 데이터베이스 테이블을 설정하지 않는 이유는

//print_r($_POST['teamMembers']); 
Array 
(
    [0] => Array 
     (
      [name] => foo 
      [email] => bar 
     ) 

) 
+0

환상적! 이것은 매우 유망 해 보인다! 감사합니다 –

+0

당신의 대답은 내 대답보다 낫습니다 :-) – Travesty3

+0

고마워요. 이것을 구현하는 데는 거의 작업이 필요하지 않습니다. 이유는 그것이 훌륭하고 javascript를 사용하여 필드의 이름을 올바르게 지정하는 것이 쉽습니다. 이로 인해 복잡한 솔루션을 필요로하지 않으면 서 내 데이터를 구조화하여 여러면에서보다 쉽게 ​​내 삶을 살 수있게되었습니다. – Crashspeeder

0

모든 필드에 'TeamMemberName []'또는 'TeamMemberEmail []'의 이름 만 지정하면됩니다. 가치가 있는지 여부에 관계없이 각 항목을 게시해야하므로 항상 일치해야합니다.

은 서버 측 PHP 스크립트 배열로 전달합니다, 그래서 당신과 같이 액세스 할 수 있습니다 :

$teamMemberNames = $_POST["teamMemberName"]; 
$teamMemberEmails = $_POST["teamMemberEmail"]; 

for ($i = 0; $i < count($teamMemberNames); $i++) 
    echo "name = {$teamMemberNames[$i]}, email = {$teamMemberEmails[$i]}\n"; 
+1

나는 @ Crashspeeder의 대답을 더 좋아한다. – Travesty3

관련 문제