2012-08-22 3 views
1

어떤 이유로 인해 if 문이 예상대로 작동하지 않습니다.For 루프 내부의 문 = 문제

$query = "SELECT title FROM blog"; 
$result = mysql_query($query); 
$rows = mysql_num_rows($result); 

for ($j = 0; $j < $rows; ++$j) 
{ 
    if (isset($_POST['$j'])) 
    { 
     $id = mysql_real_escape_string($_POST['id']); 
     $query = "DELETE FROM blog WHERE id='$id'"; 
     mysql_query($query); 
     echo 'Deleted post.. '; 
     echo '<a href="blog.php">Click here</a>'; 
    } 
    else 
    { 
     echo 'Failed!'; 
    } 
} 

"Deleted post .."와 "link"는 내 테이블 블로그에있는 행 수가 표시됩니다. 내 테이블의 한 행만 삭제되지만 내가 원하는 것은 삭제됩니다. 하나의 버튼이 매번 누를 때마다 "Deleted post .."메시지가 한 번만 울리고 "Failed!" 나머지 시간? 감사합니다.)

참고 : 저는 아직 프로그래밍에 익숙하지 않습니다. 질문이 어리 석다면 미안 해요.

주 2 : 나는 다른 페이지 .. 그들이 번호 '1, 2, 3'등

+0

하는 데 도움이 'mysql_ *'함수를 사용하지 마십시오. (* [red box *] (http://php.net/manual/en/function.mysql-query.php) 참조) SQL injection에 취약합니다. [* PDO *] (http://php.net/manual/en/book.pdo.php) 또는 [* MySQLi *] (http://php.net/manual/en/book.mysqli.php) . – alfasin

+0

나중에 살펴 보겠습니다. – Tom

+0

@ 톰, 당신은 타겟이 된 후에 모든 것을 재설치하자마자 잠금을 해제합니다. – TheBlastOne

답변

2

변화 :

$_POST['$j'] // here, due to the single quotes you're 
      // always testing for the literal `$j`, and not 
      // the value of current loop iteration. 

에 :

$_POST[$j] 
+0

또한 작동하지 않습니다 .. "실패!" 내가 가지고있는 행의 수. – Tom

1

변수는 작은 따옴표로 구문 분석되지 않습니다에 의해 표시되어 많은 버튼이, 당신이 따옴표를 사용해야합니다. 또한

isset($_POST["$j"] 당신은, 당신은 $_POST["$j"]가 설정되어 있는지 확인하지만, 사용하고있는 루프에서 반복해서 같은 레코드를 삭제하려고 $_POST['id']

+0

심지어 작동하지 않습니다 .. 나는 "실패!" 내가 가지고있는 행의 수. – Tom

0

시도해보십시오.

<?php 
    $query = "SELECT title FROM blog"; 
    $result = mysql_query($query); 
    $rows = mysql_num_rows($result); 

    for ($j = 0; $j < $rows; ++$j) 
    { 
     if (isset($_POST[$j])) 
     { 
      $id = mysql_real_escape_string($_POST['id']); 
      $query = "DELETE FROM blog WHERE id='" .$id ."'"; 
      mysql_query($query); 
      echo 'Deleted post.. '; 
      echo '<a href="blog.php">Click here</a>'; 
     } 
     else 
     { 
      echo 'Failed!'; 
     } 
    } 

?> 
0

문제는 당신이 $ _POST [0]에서 $ _POST [Whatever]까지 반복하지만, ID = $ _POST [ 'id'] 만 삭제한다는 것입니다. $ _POST [ 'id'] 변경되지 않습니다. 반복해서 반복하더라도 각 루프에 대해 동일한 행을 삭제하려고합니다.

0

POST 또는 GET 또는 REQUEST는 이전 페이지의 현재 페이지에 게시 된 것이기 때문에 작동하지 않습니다 페이지.

일부 변수를 일부 페이지에 POST해야만 $_POST['j']을 사용할 수 있습니다. 그런 다음 다른 페이지에서 j을 게시하는 경우 당신은 내가 대신 그

$j = $_POST['j']; 

if(isset($_POST['j'])){ 
for($j = 0; $j < $rows; ++$j){ 
//your code 
} 
} 

희망처럼 사용하는이 조건을 사용할 수 있다고 생각 POST

내부에 현재 페이지의 변수를 사용할 수 없습니다이