몇 가지 체크 박스가 있는데 DB에 삽입하는 게으른 방법을 택하려고합니다.FORM 및 POST 배열의 확인란의 순서가 동일합니까?
POST 슈퍼 배열의 체크 박스 배열 (체크 박스 [])의 순서가 HTML 페이지의 순서대로 이루어지기를 원했습니다.
그렇지 않다면 나는 게으른 개발자가되는 것을 멈추게 될 것입니다!
도움 주셔서 감사합니다.
몇 가지 체크 박스가 있는데 DB에 삽입하는 게으른 방법을 택하려고합니다.FORM 및 POST 배열의 확인란의 순서가 동일합니까?
POST 슈퍼 배열의 체크 박스 배열 (체크 박스 [])의 순서가 HTML 페이지의 순서대로 이루어지기를 원했습니다.
그렇지 않다면 나는 게으른 개발자가되는 것을 멈추게 될 것입니다!
도움 주셔서 감사합니다.
예, 17.13.4 Form content types of the HTML 4 specification을 참조하십시오. application/x-www-form-urlencoded의 경우 :
제어 이름/값은 문서에 표시된 순서대로 나열되어 있습니다. 이름은
=
의 값과 분리되며 이름/값 쌍은&
으로 서로 구분됩니다.
그리고 multipart/form-data위한
:부품이 대응하는 제어 문서 스트림에 나타나는 순서대로 처리 에이전트로 전송된다.
PHP의 매뉴얼에 같은 (How do I create arrays in a HTML <form>
? 참조)
배열 키를 지정하면 HTML의 선택 사항입니다. 키를 지정하지 않으면 요소가 양식에 나타나는 순서대로 배열이 채워집니다.
굉장합니다, 감사합니다 검보. :) – Abs
기술적으로 대답은 "예"이지만 액세스하는 방법, 실제로 액세스하는 방법에 따라 달라질 수 있습니다.
예를 들어 확인란에 체크 표시가 없으면 POST에 포함되지 않습니다. 브라우저에서 전송하지 않았기 때문입니다. 예, 다른 사람들은 여전히 질서 정연하지만, 당신은 '게으름'속에서 그것을 설명해야합니다.
또한 'checkbox [1]', 'checkbox [2]'등과 같은 양식 필드 이름을 사용하여 작업하는 경우 이러한 순서도 예상 한 순서가 아닐 수 있습니다 PHP에 액세스하는 방법에 따라 달라집니다.
"$ checkbox [$ i]"를 (를) 보면서 "while $ i < $ number_of_known_checkboxes"를하는 것이 좋습니다. 그러나 "while $ i < count ($ checkbox)"를 사용하면 확인란이 선택되지 않은 채로 표시되고 foreach 루프를 사용하면 문제가 발생할 수 있습니다.
주의해야 할 것이 하나 있습니다. HTML 4 사양이 무엇이든간에 DOM에 표시된 순서대로 제출됩니다.
이 (잘못된) HTML을보십시오. 이 경우
<html>
<head>
<title>Test Page</title>
</head>
<body>
<form name="f1" method="get" action="fostered.htm">
<label>A <input type="checkbox" name="a" checked="checked" /></label>
<table>
<tbody>
<tr>
<td>
<label>B <input type="checkbox" name="b" checked="checked" /></label>
</td>
</tr>
<tr>
<label>C <input type="checkbox" name="c" checked="checked" /></label>
</tr>
</tbody>
</table>
<input type="submit" />
</form>
</body>
</html>
복종의 순서는 분석 중에 C의 체크 박스 "포스터 페어런트"때문에 그 테이블 셀 안에 있지 않기 때문에, A는, C, B 테이블의 시작 이전이어야한다.
물론 이것은 일반적으로 렌더링 된 페이지에 표시되지만 CSS는이를 마스크 할 수 있습니다.
HTML의 유효성을 검사하는 데 또 다른 좋은 이유가 있습니다.
C는 숨겨진 필드 된 경우 그래서, "숨겨진"입력 필드가 부모로 육성 해되지 않습니다 주목할 가치, A, B, C.
내가 누락 될 수 있습니다 뭔가 될 것이다 제출의 순서 -I 종종 그렇지만 ... 게으른 게 어때? 제출 된 데이터에 어떻게 액세스하고 있습니까? 나는 $ cleanedVarName = htmlentities (trim ($ _ POST [ 'submittedVarName), ENT_NOQUOTES);)와 같은 것을 사용하는 경향이있다. 그러나 어떤 점에서는'$ variable'이'$ _POST ['variable ']', 틀림없이? –