2010-08-02 5 views
3

동적 내용이 포함 된 양식을 디자인합니다.동적 양식 콘텐츠를 처리하는 더 좋은 방법은 무엇입니까?

예 : 양식에 Paper_Name에 대한 텍스트 필드와 Paper_Link에 대한 텍스트 필드가 있습니다. 사용자는 최대 10 개의 종이 이름과 종이 링크를 추가 할 수 있습니다. 다음과 같이

각 용지의 이름과 종이 링크의 ID는 다음과 같습니다

papername01, paperlink01, ..., papername10, paperlink10.

이러한 ID는 JavaScript로 동적으로 생성됩니다. 즉, 사용자가 용지 추가 버튼을 클릭하여 양식을 제출하지 않으면 서버에서 수신 할 수있는 필드는 paperlink01 및 papername01뿐입니다.

이제 제출 된 양식 내용을 처리하기 위해 서버 PHP 스크립트를 설계하는 것이 더 나은 방법일까요?

  1. Ajax 양식 플러그인을 사용 하시겠습니까?

  2. 정규 양식 제출을 사용하고 모든 변수를 반복하고 그 중 어떤 것이 설정되어 있는지 확인하십시오.

  3. JSON 데이터 형식을 사용 하시겠습니까?

네, 질문은 서버와 클라이언트 모두 관련이 있습니다. 최선의 방법을 알고 그에 따라 고객을 변경하고 싶습니다. 도와주세요와

형태의 설계는 다음과 같습니다 감사합니다 : 사용자가 클릭 버튼을 추가 할 때, 새로운 사업부가 유일한 차이점 작성됩니다

<div id="divDummy001"> 
<div id="paperTitle001Fld"> 
    <label for="papertitle001">Title of Paper 001</label> 
    <div> 
    <input type="text" size="16" value="" id="papertitle001" name="papertitle001"/> 
    </div> 
</div> 

<div id="paperURL001Fld"> 
    <label for="paperurl001">Paper Link 001</label> 
    <div> 
    <input type="text" size="96" value="" id="paperurl001" name="paperurl001"/> 
    </div> 
</div> 
</div> 

는 ID가 증가 될 것을 1.

답변

4

같은 배열을 사용해야합니다. papername[1], papername[2]과 같은 이름의 텍스트 필드를 만들면 PHP 스크립트에 배열로 나타납니다.

+0

안녕하세요 Mchl을 내가 사용하는 경우 해 모두가 할

은 '당신의 HTML 요소를 정의 name 속성을 추가 된 [] 함께 내 첫 번째 종이 이름에 papername [1], foreach 함수를 사용하는 데 문제가 있습니까? 0부터 시작하기 때문에 ?? 감사합니다. – q0987

+0

아니요. foreach는 배열의 첫 번째 요소로 시작합니다. 열쇠가 무엇인지 상관하지 않습니다. – Mchl

3

[]으로 JS 이름을 구성 할 수 있습니다. 이 일반적으로 어떻게하는지에 대한 설명은 http://www.spsu.edu/cs/faculty/bbrown/papers/php2.html를 참조하십시오

<form method="post"> 
I speak the following languages: 
<input type="checkbox" name="lang[ ]" value="en">English<br /> 
<input type="checkbox" name="lang[ ]" value="fr">Français<br /> 
<input type="checkbox" name="lang[ ]" value="es">Español<br /> 
</form> 

을 수신 코드에서 : 또한 그런 식으로 텍스트 입력의 이름을 수

<?php 
$langs = $_POST['lang']; 
// Note that $snacks will be an array. 
foreach ($langs as $lang) { 
    echo "$lang<br />"; 
} 
?> 

, <input type="text" name="papername[]"> 여러 번 사용. 그런 다음 이름을 배열로 처리 할 수 ​​있습니다.

주의 : ID는 고유해야하며 이름은 필요하지 않습니다.

<input type="text" id="papername01" name="papername[]"> 
<input type="text" id="papername02" name="papername[]"> 
[etc] 
5

배열을 게시하지 않는 이유는 무엇입니까?

바닐라 양식 제출을 수행 한 다음 서버 측에서 다른 PHP 배열과 마찬가지로 POST 배열을 반복 할 수 있습니다.

<input type="text" name="papername[]" value=""/> 

귀하의 PHP 이런 식으로 뭔가 보일 것입니다 :

<?php 
    if(isset($_POST['papername'])) { 
     foreach($_POST['papername'] as $papername) { 
      //do something with $papername... 
     } 
    } 
?> 
+0

안녕 Jacob, 댓글 주셔서 감사합니다. papername []을 사용하여 올바르게 이해했다면 사용자가 제출 한 주문을 잃게됩니다. 나는 다른 논문의 차이점을 지켜야한다. – q0987

+0

@ q0987이면,'papername [1]',''papername [2]'등의 배열 안에 키를 넣을 수 있습니다. 이렇게하면 원래의 키를 보존 할 수 있습니다. – Charles

관련 문제