2012-06-10 2 views
3

정말 긴 제품 목록에서 표를 만듭니다. 각 행을 업데이트 할 수 있어야합니다. 하나의 표 안에 여러 양식을 넣으면 HTML이 유효하지 않습니다. 해결책은 각 행마다 하나의 테이블을 만드는 것이지만 형식은 정말 못 생깁니다.하나의 HTML 표 내에 여러 형식이 있습니다

나는 이것을하고 싶습니다 : 그것은 유효하지 않습니다

<table> 
<tr><form><td><input type=\"text\" name=\"name\" value=\"".$row['name']."\" /></td>\n"; 
</td><td></td>....<td><input type=\"submit\" name=\"Submit_btn\" id=\"Submit_btn\" value=\"Update\"></td></tr></form> 
<tr><form><td></td><td></td>....<td><input type=\"submit\" name=\"Submit_btn\" id=\"Submit_btn\" value=\"Update\"></td></tr></form> 
. 
. 
. 
</table> 

. 내가 뭘 할 수 있니?

답변

2

전체 표 주위에 하나의 양식을 사용하십시오.

서버에 도착한 후에 필요없는 데이터를 필터링하십시오.

+0

문제는 변경 사항을 필터링하는 것입니다. 그렇지 않으면 전체 테이블을 더 많거나 적게 업데이트해야합니다. – Manuel

0

행을 지정하려면 id를 사용하십시오. 또한 변경된 행의 ID를 필터에 보내 서버에 보냅니다.

1

당신은 자바 스크립트를 사용하지 않고,이 크로스 브라우저를 수행 할 경우

이름이 ID 정보를 포함하는 각 행에 대해 다르게 제출라는 이름의 버튼을 사용합니다. 마찬가지로

<input type="submit" name="id[589] value="update this row"> 

는 너무 오래 버튼 TPO에 사용자 중 제출 '버튼을 클릭하거나 탭 등의 프레스 제출 만 브라우저가 안정적으로 그 제출 버튼의 이름을 보내드립니다 입력 (다음 포커스를주고, 양식 초점을 입력 요소의 다른 유형에있을 때 사용자가 type=text처럼, Enter 키를 통해 양식을 제출하면 버튼), 그리고 당신은 문제가,

$id = key($_POST['id']); 

를 통해 ID를 얻을 수 있지만, 예를 들면. 양식 제출하지만, 어떤에서 모든 버튼을 제출의 다른 브라우저 중 하나

1)에 이름을 전송하지 않습니다,

2) 또는 폼의 HTML 소스에 표시하는 최초의 제출 버튼의 이름을 보내드립니다 .

당신이 더미를 배치하면

양식의 시작 버튼을 제출 한 다음 안정적으로 업데이트를 수행 할 수 없습니다

isset($_POST['dummySubmit']); 

를 통해 양식 제출의 유형을 검색 할 수 있습니다, CSS/w를 숨길 수 있지만, 사용자가 명시 적으로 제출 단추를 클릭해야한다는 메시지와 함께 게시 된 모든 값을 다시 사용자에게 출력 할 수 있습니다 (작업이 손실되지 않도록).

또는 ... 당신은 개별 버튼을 사용하지 않고 모든 레코드를 업데이트 할 수 있으며, 매번 생각만큼 나쁜 것은 아닙니다. 일반적으로 SQL 쿼리를 줄이기 위해 레코드가 변경된 것을 필터링하는 것이 많은 이점이라고 생각하지 않습니다. 그러나 정말로 원한다면 어쩌면 함께 연결된 행 데이터의 md5 해시를 보낸 다음 제출 및 비교시 해쉬를 다시 계산하십시오.

+0

이 솔루션을 사용할 수 있다고 생각합니다. 모두에게 감사드립니다! – Manuel

관련 문제