PHP

많은 수정 폼 업데이트 / update 문 반복

에혀 2020. 1. 26.

텍스트 폼/체크박스 등 수십개를 한번에  저장되는 형태. (2020.1.25 ㅠㅠ)

체크박스로 선택하는 것이 아니라,  해당 여러레코드를 한번에 수정/저장하기

간단할 줄 알았는데... 막연하게 배열과 update 문을 생각했다. 하다보면 될 줄 알았다... ㅠㅠ 맞긴 맞지 뭐.

 

그냥 막연하게 검색해봐도, 못찾겠더라. 배열에 대한 여전한 거부감으로... ㅠㅠ

일단 해봤다.

  1. 각각의 input text 의 name 값을 배열로 뒀다. ex) name="title[]" name="name_ko" .............
  2. 체크박스 폼 문제 발생. 다른 텍스트 폼과 마찬가지로 cxl[] 했는데, 계속 오류가 났다. 위에서 했던 방식으로 3항 연산자 사용했으나 실패. 
    원인 :
    일반적인 체크박스 배열처럼 cxl[] 사용시, 미체크한 것은 배열원소에서 아예 빠져버리는게 문제였다. isset 으로 처리하려해도, 배열의 전체갯수가 적기 때문에, 다른 폼배열값과 같은 횟수 반복시, array 오류를 뿜음. ㅠㅠ
  3. 해결방향1
    검색해보니, hidden 값으로 아래 한줄 더 넣고, 자바스크립트로 처리하는 방식이 거의 유일해보였다. 자바스크립트 미사용시 불가능하듯이 돼있었다. ㅠㅠ
    아직 자바스크립트 모른다고!!!!!!!!!!!!!!! ㅠㅠ 더러워서 배워야될 때가 된 것 같다.. 하..... 책 닫고, 속성으로 javascript 해야하나 .. .고민에 또 우울 망망대해 속..
  4. 해결방향2 영카트 수정폼을 참조하기로 했다.
    while ($row=mysqli_fetch_array($result)) { 과 폼이름 배열로 [ ]를 사용하고 있었는데, 
    영카트는 for ($i=0;$i<레코드;<$i++){ 로 폼이름 배열을 [ ] 대신, ---['.$i.']--- 로 직접 배열숫자를 기록하면서사용하고 있었다. 게다가 폼 id 와 label 에도 뒤에 $i 를 붙이면서 코딩돼있었다. 오...역시 영리하다.... +_+ 감동.
  5. 해결
    전송하면, 자바스크립트로 처리하려나 하는 생각에 form action 을 봤더니, class 로 처리해서, 폼저장 파일을 못찾겠다. 제길. 
    하지만, 의미는 있었다.  단일 행 일때와 달리, 체크 여부와 관계없이, 동일한 배열원소수가 만들어졌으니.... 이렇게 3항연산자에도 배열을 적용한 후, 반복문 실행하면 됨! $cxl[$i] = isset($_POST['cxl'][$i]) ? 1 : 0; 
    그러면, 결국 자바스크립트가 필요없는거네.

허....이거 참..................

 

아 정말 큰 산 넘었다.엉엉

 

이제 폼수정/업데이트는 모두 다 처리할 수 있겠다!!!!

 

기술적으로 보면, update 쿼리도 반복을 줄여야 한다... 음.. 요건 아무리 많아야 20개 안팎일텐데.. 음.. 

update 쿼리는 insert 반복문보다 훨씬 더 어렵든데. ㅠㅠ 이건 정말 미루자. 휴우..

 

update case set when then else 어쩌고 저쩌고 있더라. 에혀............. 

근데, 이런거 넘어가는게 증말 찝찝하다 .ㅠㅠ

일단 함수코드가 있던데, 좀 더 이해하고 쓰자.

 

댓글