텍스트 폼/체크박스 등 수십개를 한번에 저장되는 형태. (2020.1.25 ㅠㅠ)
체크박스로 선택하는 것이 아니라, 해당 여러레코드를 한번에 수정/저장하기
간단할 줄 알았는데... 막연하게 배열과 update 문을 생각했다. 하다보면 될 줄 알았다... ㅠㅠ 맞긴 맞지 뭐.
그냥 막연하게 검색해봐도, 못찾겠더라. 배열에 대한 여전한 거부감으로... ㅠㅠ
일단 해봤다.
- 각각의 input text 의 name 값을 배열로 뒀다. ex) name="title[]" name="name_ko" .............
- 체크박스 폼 문제 발생. 다른 텍스트 폼과 마찬가지로 cxl[] 했는데, 계속 오류가 났다. 위에서 했던 방식으로 3항 연산자 사용했으나 실패.
원인 :
일반적인 체크박스 배열처럼 cxl[] 사용시, 미체크한 것은 배열원소에서 아예 빠져버리는게 문제였다. isset 으로 처리하려해도, 배열의 전체갯수가 적기 때문에, 다른 폼배열값과 같은 횟수 반복시, array 오류를 뿜음. ㅠㅠ - 해결방향1
검색해보니, hidden 값으로 아래 한줄 더 넣고, 자바스크립트로 처리하는 방식이 거의 유일해보였다. 자바스크립트 미사용시 불가능하듯이 돼있었다. ㅠㅠ
아직 자바스크립트 모른다고!!!!!!!!!!!!!!! ㅠㅠ 더러워서 배워야될 때가 된 것 같다.. 하..... 책 닫고, 속성으로 javascript 해야하나 .. .고민에 또 우울 망망대해 속.. - 해결방향2 영카트 수정폼을 참조하기로 했다.
while ($row=mysqli_fetch_array($result)) { 과 폼이름 배열로 [ ]를 사용하고 있었는데,
영카트는 for ($i=0;$i<레코드;<$i++){ 로 폼이름 배열을 [ ] 대신, ---['.$i.']--- 로 직접 배열숫자를 기록하면서사용하고 있었다. 게다가 폼 id 와 label 에도 뒤에 $i 를 붙이면서 코딩돼있었다. 오...역시 영리하다.... +_+ 감동. - 해결
전송하면, 자바스크립트로 처리하려나 하는 생각에 form action 을 봤더니, class 로 처리해서, 폼저장 파일을 못찾겠다. 제길. 하지만, 의미는 있었다. 단일 행 일때와 달리, 체크 여부와 관계없이, 동일한 배열원소수가 만들어졌으니.... 이렇게 3항연산자에도 배열을 적용한 후, 반복문 실행하면 됨! $cxl[$i] = isset($_POST['cxl'][$i]) ? 1 : 0;
그러면, 결국 자바스크립트가 필요없는거네.
허....이거 참..................
아 정말 큰 산 넘었다.엉엉
이제 폼수정/업데이트는 모두 다 처리할 수 있겠다!!!!
기술적으로 보면, update 쿼리도 반복을 줄여야 한다... 음.. 요건 아무리 많아야 20개 안팎일텐데.. 음..
update 쿼리는 insert 반복문보다 훨씬 더 어렵든데. ㅠㅠ 이건 정말 미루자. 휴우..
update case set when then else 어쩌고 저쩌고 있더라. 에혀.............
근데, 이런거 넘어가는게 증말 찝찝하다 .ㅠㅠ
일단 함수코드가 있던데, 좀 더 이해하고 쓰자.
댓글