사용자 환경 설정의 마스터 목록을 유지 관리하는 PHP/MySQL 응용 프로그램을 작성 중이며 그 목록에서 항목을 제거하려고 노력했습니다. 현재 응용 프로그램은 항목 목록을 생성하고 사용자가 이전에 선택한 항목 옆에 체크 표시를 한 다음 사용자는 선택 항목을 변경 (체크 표시를 추가 또는 제거) 한 다음 다시 제출할 수 있습니다. 이 양식은 사용자가 확인한 항목에 대해서만 supplyid를 제출합니다.
표시되지 않은 선택 항목이 먼저 표시되고 데이터베이스의 항목을 삽입/업데이트하는 코드가 있으므로 목록이 정렬되어 있지만 사용자가 선택하지 않은 항목을 삭제하는 방법을 찾는 데 문제가 있습니다. (그리고 지금은 supplyid를 반환하지 않습니다).
이 시점에서 필자는 목록에 이전에 포함 된 결과 만 반환하도록 MySQL 쿼리를 작성했습니다 (제거 할 필요가있는 유일한 결과이므로). 배열에있는 항목이 필요합니다 어떤 $ _POST 결과와도 일치하지 않는 쿼리에 의해 반환됩니다. 이전에 포함 된 항목의 $ _POST 결과와 배열을 성공적으로 비교했지만, 일치하지 않는 결과를 다시 얻으려는 부분에서 논리가 잘못되었다는 것을 알 수 있습니다. 일치하는 항목을 볼 수는 있지만 가능성을 제거하는 방법을 모르겠습니다. 나는 이것에 대해 완전히 잘못된 방향으로 가고 있는가?
$iduser = $_SESSION["iduser"];
$possibleresults = $_POST["possibleresults"];
$sql_onlist = "select supply.idsupply from supply, kit
where supply.class = 'basic'
and kit.iduser = '".$iduser."'
and supply.idsupply = kit.idsupply";
$possible_delete = $connection->query($sql_onlist);
//for each record we know is already in the database, check to make sure it has been checked, otherwise delete
for ($i=0; $i<$possibleresults; $i++) {
$count = 0;
$item_delete = $possible_delete->fetch_assoc();
if ($_POST['item_'.$i.'']) {
$idsupply = $connection->real_escape_string($_POST['item_'.$i.'']);
//if there is a match, increase the counter
if ($idsupply == $item_delete["idsupply"]) {
$count++;
//this does successfully return a count = 1 - idsupply = number for all rows which should have matches
echo "count = ". $count . " - idsupply = " . $idsupply;
}
//this statement doesn't work because it doesn't know which idsupply
if ($count < 1) {
$idsupply = $item_delete["idsupply"];
$sql_delete = "delete from kit
where idsupply = '".$idsupply."'
and iduser = '".$iduser."'";
$result_delete = $connection->query($sql_delete);
}
}
가지고 방금 (당신이 체크 박스를 보여 주었다) 당신이를 처음로드하는 데 사용 같은 PARAMS와 목록을 다시로드하고 그에 대해 비교하는 시도? – JohnP
모든 옵션을 삭제하는 것이 더 쉬우 며 확인 된 옵션 만 읽으면됩니다. 그것은 본질적으로 당신이하려고하는 것입니다 – JohnP