배열을 DB에 UPDATE 하려고 합니다 채택완료

안녕하세요.

몇가지 질문 좀 드리고자 합니다.

 

A.php

B.php

 

두 개의 파일이 있고

 

A.php에는

Copy
<?php  $sql = " select * from company_item_option_temp where mb_id='{$member['mb_id']}' ";  $result = sql_query($sql);  for ($i=0; $row=sql_fetch_array($result); $i++) {?>   <tr>     <td><input type="text" name="value_1[]" value="<?php echo $row['value_1'];?>"></td>     <td><input type="text" name="value_2[]" value="<?php echo $row['value_2'];?>"></td>     <td><input type="text" name="price[]" value="<?php echo $row['price'];?>"></td>     <td><input type="text" name="quantity[]" value="<?php echo $row['quantity'];?>"></td>     <td><input type="text" name="status[]" readonly style="border:0" value="<?php echo $row['status'];?>"></td>     <td>        <select name="op_use[]">          <option><?php if ($row['op_use'] == 'Y') { echo "Y"; } else { echo "N"; }?></option>          <option><?php if ($row['op_use'] == 'Y') { echo "N"; } else { echo "Y"; }?></option>        </select>     </td>     <td><input type="text" name="manage_code[]" value="<?php echo $row['manage_code'];?>"></td>     <td><a href="javascript:thumnail_popup('<?php echo $row['thumnail'];?>',400,400)"><img src="<?php echo $row['thumnail']; ?>" width="30"></a></td>  </tr><?php } ?>

이렇게 input 값을 배열로 받을 수 있게끔 해놨습니다. 

(모든 소스는 아닙니다. 오해마시길..)

 

SELECT로 1차 지정된 값을 받아오고 for문으로 input에 값을 넣어줬습니다.

그리고 사용자가 임의로 값을 변경해서 submit을 하게 되면,

 

B.php 에서는

Copy
for ($j = 0; $j <= $i; $j++) {  $sql = " update company_item_option_temp set          type     = '{$type}',          value_1  = '{$_POST['value_1'][$j]}',          value_2  = '{$_POST['value_2'][$j]}',          price    = '{$_POST['price'][$j]}',          quantity = '{$_POST['quantity'][$j]}',          status   = '{$_POST['status'][$j]}',          op_use   = '{$_POST['op_use'][$j]}',          manage_code = '{$_POST['manage_code'][$j]}'          where mb_id = '{$member['mb_id']}' ";  $result = sql_query($sql);}

위와 같은 형태로 post 값을 받아오면서 $i 값만큼 UPDATE 하게 해놨습니다.

($i 값은 마찬가지로 post로 넘겨받아온 값입니다)

 

일종의 재고관리를 떠올리시면 되는데, 

이미 입력되어 있는 재고관리의 여러가지 항목들을 for문으로 쿼리돌려서 쭉 뽑아온 뒤

나열된 각 항목들을 수정한 후 submit 하면 UPDATE 하는 형태라고 보시면 됩니다.

 

그런데 위 코드를 실행하면 제대로 값이 들어가질 않습니다.

print_r 로 배열값이 잘 넘어오는지 뽑아봤을 때는 문제없이 전달받는 것으로 출력이 되는데

순차적으로 한 레코드씩 UPDATE 해야되는 상황에서 제대로 UPDATE가 되지 않고

공백으로 값이 들어가네요.

 

쿼리문에 무슨 문제가 있는걸까요..

고수님들의 명쾌한 해답을 기다리겠습니다.

 

질문 읽어주셔서 감사합니다.

 

 

답변 1개

01

for ($j = 0; $j <= $row; $j++) {

02

  $sql = " update company_item_option_temp set

03

 

04

          value_1  = '{$_POST['value_1'][$j]}',

05

          value_2  = '{$_POST['value_2'][$j]}',

06

          price    = '{$_POST['price'][$j]}',

07

          quantity = '{$_POST['quantity'][$j]}',

08

          status   = '{$_POST['status'][$j]}',

09

          op_use   = '{$_POST['op_use'][$j]}',

10

          manage_code = '{$_POST['manage_code'][$j]}'

11

          where mb_id = '{$member['mb_id']}' ";

12

  $result = sql_query($sql);

13

}

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

답변 감사드립니다.

알려주신대로 적용했을 때에도 마찬가지네요 ㅠ
그런데 위에 $row 는 어디에서 온 건지 궁금하네요.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고