2014-01-28 2 views
1

확인란이있는 테이블이 있습니다. checbox를 사용하여 사용자가 선택한 데이터베이스에 특정 행의 숨겨진 값을 삽입하고 싶습니다. 그러나 언제나 데이터베이스에 레코드를 저장하는 데 사용되었습니다. 그것은 심지어 선택되지 않은 하나의 레코드 만 삽입하고 사이트의 테이블에서 상위 레코드입니다. 다음은 내 코드선택된 체크 박스의 숨겨진 필드 삽입하기

<?php 
    $i = 0;       
    <td><?php echo $record['a'];?></td> 
    <td><?php echo $record['name']; ?> 
    <input type="hidden" name="name[]" value="<?php echo $record['name']; ?>"</td> 
    <td><?php echo $record['contact'];?> 
     <input type="hidden" name="contact[]" value="<?php echo $record['contact']; ?>" 
    </td> 
    <td><?php echo $record['district'];?> 
     <input type="hidden" name="district[]" value="<?php echo $record['district']; ?>" 
    </td> 
    <td> 
     <input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $i++;?>" /> 
    </td> 
<?php }?> 
    <input type="submit" value="Save" name="save" /> 
<?php  
    if ($_POST['save']) 
    { 
     foreach ($_POST['checkbox'] as $i) 
     { 
      $save = "insert into tablename(id,name,contact,district) values (NULL, '{$_POST['name']'[$i]}'{$_POST['contractorname'][$i]}','{$_POST['district'][$i]}')"; 
      mysql_query($save) or die("Mistake in Query"); 
     } 
    echo "Record saved Successfully"; 
    } 

?>  
+0

당신은''태그 안에'' 태그를 쓰려고합니다. – Albzi

답변

0

$ i = 0; 그 루프 내부 루프가 돌아갈 때마다 $ i = 0; 카운터를 0으로 재설정합니다. 이렇게하면 모든 확인란의 값이 0이됩니다.이를 해결하려면 $ i = 0; 루프가 시작되기 전에

+0

완료, 그 근무 .. 감사합니다 – Ricky

0

가 사용자의 입력 요소 주위에 foreach는 루프가없는, 또는 임대에 당신이 게시 한 코드의 일부에없는 것입니다. 그러나 제출 버튼 앞에 }을 붙이면 이전 코드에서 시작하는 루프가 있다고 가정 할 수 있습니다.

루프 내에 $i = 0;을 설정하고 나중에 echo $i++을 사용하여 확인란의 값을 증가시킵니다. 그러나 (가정 된) 루프가 실행될 때마다 $i = 0;은 카운터를 0으로 재설정합니다. 그 결과 모든 체크 박스의 값은 동일한 0입니다. 이를 해결하려면 루프가 시작될 때 $i = 0;앞에을 설정하십시오.

0

우선 데이터베이스에 입력하기 전에 항상 입력을 제거하십시오. 그렇지 않으면 SQL 인젝션 공격에 취약합니다. mysql_real_escape_string()과 같은 함수를 사용하십시오. 또한 PHP의 mysql 라이브러리는 더 이상 사용되지 않으므로 MySQLi 또는 PDO : MySQL을 사용해야합니다.

관련 문제