2011-07-17 5 views
1

나는 동적 테이블을 포함하는이 양식이 있습니다php MySql UPDATE가 작동하지 않습니까?

<form action="<?php echo $editFormAction;?>" method="post" name="form1"> 
<input type="hidden" value="<?php echo (int) $_GET['a'];?>" name="pat_id"> 
<table> 
<tr> 
<th>#</th> 
<th>ORDER DESC</th> 
<th>STATUS</th> 
<th>SENDING DATE</th> 
<th>DELIVERING NO</th> 
<th>DELIVERING DATE</th> 
<th>COMMENT</th> 
</tr> 
<?php do { ?> 
<tr> 
    <td><?php echo $row_medi['order_no']; ?></td> 
    <td><?php echo $row_medi['ORDER_DESC']; ?></td> 
    <td><select name="mydropdown[<?php echo $row_medi['order_no']; ?>]"><option value="Undelivered">Undelivered</option><option value="Delivered">Delivered</option></select></td> 
    <td><?php $sqldate=date('d-m-Y',strtotime($row_medi['SENDING_DATE'])); 
      echo $sqldate; ?></td> 
    <td><?php echo $row_medi['DELIVERING_NO']; ?></td> 
    <td><?php $sqldate=date('d-m-Y',strtotime($row_medi['DELIVERING_DATE'])); 
      echo $sqldate; ?></td> 
    <td><?php echo $row_medi['COMMENT']; ?></td> 
</tr> 
<?php } while ($row_medi = mysql_fetch_assoc($medi)); ?> 
</table> 
<input type="submit" value="Save" /> 
<input type="hidden" name="MM_insert" value="form1"> 
</form> 

각 행이있는 드롭 다운 메뉴가보고 나는이 드롭 다운 메뉴의에서 선택된 값으로 구멍 행을 업데이트 할있다. 오류 메시지가 나타나지 않지만 저장 버튼을 클릭하면 선택한 행이 업데이트되지 않습니다 ?? 이것은 업데이트 코드입니다 :

+0

다운 메뉴 '? 각 행에 동일한 선택 이름이 있으므로 $ _REQUEST [ 'mydropdown']은 드롭 다운의 마지막 행 값입니까 ?? – regilero

+0

또한 echo ($ choice)를 시도 할 때 선택된 옵션의 값이 나타나지 않습니다 !!! 내가 그걸 고칠 수있는 방법 ?? – 7kemZmani

답변

1

처음에는 전체 코드에서 보안 문제를 확인해야하지만 두 번째 단계에서이를 수행해야합니다. 항상 int를 사용하고 예상 된 int로 결과를 캐스팅하십시오. $pat_id<?php echo $_GET['a'];?> 대신보기 스크립트에서 <?php echo (int) $_GET['a'];?>을 수행하십시오. 그러나 이것은 또 다른 문제입니다. ,

$pat_id = (int) $_POST['pat_id']; 

난 당신이 여러 행이 잘 이해하는 경우 다른 사람이이 수행해야합니다,

$pat_id은 서버 측 코드에서 초기화되지 않은,하지만 어쩌면 당신은 복사/붙여 넣기에서 그것을 놓쳤다 각각 드롭 다운이 있습니다. 각 행마다 고유 한 이름으로 각 드롭 다운을 식별해야합니다. 그래서 대신 :

<select name="mydropdown"> 

당신은 당신이 같은거야 각 행에 따라서

<select name="mydropdown[<?php echo $row_medi['order_no']; ?>]"> 

이 있어야한다 :

<tr><td>42</td>(...)<select name="mydropdown[42]">(...)</tr> 
<tr><td>43</td>(...)<select name="mydropdown[43]">(...)</tr> 

를 그리고 서버 측에서 당신은 얻을 것이다 $_POST['mydropdown']배열 값이며 order_no는 인덱스입니다. Else $_POST['mydropdown']에는 마지막 선택 값만 포함되었을 수 있습니다. 그 후 나는 무엇을하고 싶은지 정확하게 이해하지 못하지만, 각각 order_no에 대해 하나씩 몇 가지 업데이트를해야 할 수도 있습니다.

편집 :

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
    mysql_select_db($database_PPS, $PPS); 
    $pat_id = (int) $_POST['pat_id']; 
    foreach ($_POST['mydropdown'] as $order_no => $choice) { 
     $updateSQL = sprintf("UPDATE orders SET STATUS=%s, pat_id=%s WHERE order_no=%s", 
      GetSQLValueString($_POST['mydropdown'],"text"), 
      GetSQLValueString($_POST['pat_id'], "int"), 
      GetSQLValueString($_POST['order_no'],"int")); 
     $Result1 = mysql_query($updateSQL, $PPS) or die(mysql_error()); 
    } 
} 

이 내가 지금이 어쩌면 어쩌면 그냥 코드를 읽어보십시오 STCK 오버플로 질문을받을 자격이되지 않습니다, 쓰기 것 인 것이다 : 이 코드의 현재 최신 버전입니다 조용한 envirronment 당신이 원하는 것에 대해 신중하게 생각하고 당신이 무엇을 (디버깅 print_r($_POST);die('aaarg'); 사용) : 당신은 '뜻이 드롭의에서 선택된 값으로 구멍 행을 업데이트 할 것을

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) { 
    mysql_select_db($database_PPS, $PPS); 
    $pat_id = (int) $_POST['pat_id']; 
    foreach ($_POST['mydropdown'] as $order_no => $choice) { 
     $updateSQL = sprintf("UPDATE orders SET STATUS=%s, pat_id=%s WHERE order_no=%s", 
      GetSQLValueString($choice,"text"), 
      GetSQLValueString($pat_id, "int"), 
      GetSQLValueString($order_no,"int")); 
     $Result1 = mysql_query($updateSQL, $PPS) or die(mysql_error()); 
    } 
} 
+0

언급 한대로 코드를 편집합니다. 무슨 일을하려고하면이 드롭 다운 목록에서 선택한 옵션으로 행 (이미 DB에서 왔습니다)을 업데이트하는 것입니다. – 7kemZmani

+0

@Abdulelah Al-Jeffery : "어떤 옵션에서든 선택한 옵션으로 행 편집"이란 무엇입니까? 당신은 하나의 행이 선택되었다는 것을 알고 싶습니까? 무작위로 업데이트하고 싶습니까? 실제로 당신이 원하는 것을 이해하지 못합니다. – regilero

+0

아니요. 데이터베이스에서 검색 한 테이블의 각 행이 테이블의 모든 목록에서 옵션을 선택하고 변경된 행을 '저장'할 때 원하는 드롭 다운 목록을 포함하고 있습니다. (그가 옵션을 선택했다는) 업데이트됩니다.지금은 분명 희망 : – 7kemZmani

관련 문제