2010-12-01 2 views
2

나는 이것을 할 방법을 생각 해왔다. 사용자가 항목을 체크하고 제출을 클릭 한 다음 다음 페이지의 코드로 이동하여 체크 된 항목을 모두 데이터베이스에서 삭제할 수있는 곳으로 가져 가야합니다. 문제는 게시물에 마지막 체크 된 항목을 통해서만 보내는 것입니다. 여기에 내가 지금 어떻게 설정했는지가 나와 있습니다.POST에서 여러 체크 박스 검사를 통해 데이터베이스에서 삭제하려면 어떻게해야합니까?

echo "<form name='fm1' METHOD ='POST' ACTION ='displaydelete.php' > "; 

// 테이블 헤더 ""에코을 그립니다; 에코 ""; 에코 "펀드 번호"; 에코 "시간"; echo "백분율"; echo "삭제"; 에코 ""; // 쿼리 결과가있는 동안 데이터는 테이블 셀 에 푸시됩니다. while ($ row = mysql_fetch_array ($ queryResult2)) { $ hours = $ row [ 'hours']; $ percentage = $ hours/160 * 100;

echo "<tr>"; 
    echo "<td>"; 
    echo $row['funnumber']; 
    echo "</td>"; 
    echo "<td>"; 
    echo $hours; 
    echo "</td>"; 
    echo "<td>"; 
    echo $percentage ."%"; 
    echo "</td>"; 
    echo "<td>"; 
    echo "<input type='checkbox' name='id' value='$row[id]'/>"; 
    echo "</td>"; 
    echo "</tr>"; 




} 
    //End of tabel 
echo "</table>"; 

에코 ""; 에코 "";

내가하고 싶은 것은 모든 항목을 변수로 밀어 넣고 그런 식으로 삭제하는 것입니다. 난 당신이 여러 가지 삭제를 처리하는 방법을 잘 모르겠습니다. 이게 내가 도움이된다면 뭔가 다른 것을 위해 나의 삭제를하고있다.

$query = "DELETE FROM users 

WHERE ninenumber = '$의 ninenumber' "; $ 결과 =는 mysql_query ($ 쿼리) 또는 다이 ("조회 실패 ".mysql_error()); 형태

 mysql_close($conn); 
+1

소년 여러분, 모두가이 쉬운 것들에 정말 뛰어납니다. D – Jonah

답변

2

:

echo "<input type='checkbox' name='id[]' value='$row[id]'/>"; 
:

echo "<input type='checkbox' name='id' value='$row[id]'/>"; 

이 필요

차이점에 유의하십시오. 입력 이름 뒤에 []을 추가했습니다. 이것은 클라이언트와 서버에 그 이름을 가진 다중 입력이 있음을 알려줍니다. $_POST['id']은 다음 페이지에서 반복 할 수있는 배열이됩니다.

foreach ($_POST['id'] as $checkbox) { 
    // DELETE FROM users WHERE ninenumber = $checkbox 
} 

isset

, is_arraymysql_real_escape_string 간결성을 위해 생략한다.

+0

은 간결함이 좋다고 동의했습니다. 이런 종류의 질문 일 때, 그들은 철자를 같이 쓰고 함께 일하는 것을 좋아할 것입니다. 소품 적어도 오른쪽 재료를 언급에 :) – zanlok

+0

좋은 지적 ...하지만 그들은 복사 붙여 넣기없이 더 잘 배우고 :) – Jonah

1

코드를 -generating, html로에서 이름을 가지고 있는지 확인 "[]"그 후 :

... 
echo "<input type='checkbox' name='id[]' value='$row[id]'/>"; 
... 

그런 다음 폼 읽는 코드, 당신의 post'ed ID가 배열 될 것

012.
$id_array = isset($_POST['id']) && is_array($_POST['id']) ? $_POST['id'] : array(); 
foreach($id_array as $id) { 
    $query = "DELETE FROM users WHERE ninenumber = '" . mysql_real_escape_string($id) . "'"; 
    // execute the delete query 
} 
0

컨트롤 이름 뒤에 넣으면 superglobal의 배열로 바뀌어 모든 값을 가져올 수 있습니다.

0

모든 체크 박스에 동일한 이름이 필요합니다. 그런 다음 모든 값은 POST 변수로 전달됩니다.

<input type='checkbox' name='id[]' value='$row[id]'/> 
0

변경

name=id

name=id[]

이는 당신에게 배열을 줄 것이다.양식에서

3

:

<input type='checkbox' name='id[]' value='$row[id]'/> 

그런 다음 파일에 당신이 게시에 대신이의

if(is_array($_POST['id'])){ 
    foreach($_POST['id'] as $id){ 
    ...do something to $id; 
    } 
} 
관련 문제