2014-03-24 3 views
0

나는 데이터베이스 테이블 'community_posts'에서 게시물 당 클릭을 삭제하기 위해이 코드를 작성했습니다. 버튼을 클릭해도 삭제되지 않고 do=delete&key=THEID으로 URL이 표시되지만 작동하지 않습니다. 이유가 무엇입니까? 누군가 나를 도와 줄 수 있니, 제발!왜 게시물을 삭제하지 않습니까?

// PHP CODE 
if($do == "delete" && is_numeric($key)){ 
     $check = mysql_query("SELECT id FROM community_posts WHERE id = '".$key."' LIMIT 1") or die(mysql_error()); 

     if(mysql_num_rows($check) > 0){ 
       mysql_query("DELETE FROM community_posts WHERE id = '".$key."' LIMIT 1") or die(mysql_error()); 
       $msg = "<center>Neuigkeit wurde erfolgreich gelöscht...</center>"; } else { $msg = "<center>Neuigkeit konnte nicht entfernt werden, versuche es erneut...</center>"; 
     } 
} 

// HTML CODE UND AUSGABE DER DATENBANK 
<form action='' method='post'> 
<?php $getComments = mysql_query("SELECT * FROM community_posts ORDER by id DESC LIMIT 100"); ?> 
<?php while($row = mysql_fetch_array($getComments)){ 
$getUserInfo = mysql_query("SELECT * FROM users WHERE id = '".$row['userid']."'"); 
$roww = mysql_fetch_array($getUserInfo); ?> 

<div class="feedOne fade ptr"> 
     <div class="ph20"> 
       <div class="inner-1 lt" style=""><p style="color:#aeaeae;font-size:13px;"><a href="/community/userprofile/<?php echo $roww['username']; ?>" style="color:orange;text-decoration:none;font-weight:normal;"><?php echo $roww['vorname']; ?></a> &raquo; Open Community</p> 
       <p class=lt style="color:#aeaeae;font-size:11px;"><?php echo $row['posted_on']; ?></p><br /> 
       </div> 
       <div class="rt inner-2"> 
       <p style="color:#333;font-size:13px;"><?php echo $row['story']; ?></p> 
       </div> 
       <div class=cl></div> 
     </div> 

<!-- BEI KLICK SOLL HIERMIT DER ENTSPRECHENDE BEITRAG GELÖSCHT WERDEN --> 
<a href='<?php echo $path_admin; ?>/openfeed?do=delete&key=<?php echo $row['id']; ?>'><img src="/assets/data/images/icons/delete_round.png" alt="delete" /></a> 
<!----> 

</div> 

<?php } ?> 
</form> 
+0

과 방법을 정확하게 당신이 얻고 $ 할 및 $ 키'의를 경우 ($ 할 ==) && 각각 is_numeric ($ 키를 "삭제") {' –

+0

대부분의 가능성이있는 경우 진술은 당신이 원하는 방식으로 평가하지 않습니다. 삭제 코드는 괜찮아 보입니다. 내가 삭제하기 전에 행을 확인하기 위해 초기 쿼리를하고 있는지 모르겠지만, 다시 해고 경우 작동해야합니다. – Mattt

+0

$ do는 PHP 코드의 첫 번째 행에서 볼 수있는 것처럼 "삭제"이며, 데이터베이스 테이블의 결과와 함께 얻을 수있는 키는 – user3455912

답변

2

URL 헤더의 변수는 $_GET 배열에 저장됩니다. 대신 첫 번째 행은 다음과 같습니다

if($_GET['do'] == "delete" && is_numeric($_GET['key'])){ 

편집 : 당신은 변수가 미리 isset() 방법을 사용하여 설정되어 있는지 확인 할 수 있습니다.

// PHP CODE 

if (isset($_GET['do'])){ 
    $do = $_GET['do']; 
} 
if (isset($_GET['key'])){ 
    $key = $GET['key']; 
} 

if($do == "delete" && is_numeric($key)){ 
+0

입니다. Man thank you very much , 그것은 지금 작동하고 그것에 대해 더 많이 배웠습니다, 감사합니다! – user3455912

+0

스크립트에 다른 문제가 있음을 명심하십시오. 그 중에는 더 이상 사용되지 않는 mysql_ * 함수를 사용하여 데이터베이스에서 값을 인코딩하지 않고 html 출력을 안전하게 사용하기 위해 SQL JOIN을 사용하지 않고 데이터베이스 서버를 한 번에 한 번씩 관련 쿼리를 사용하여 불필요한 코드 (예 : DELETE 전에 선택) 등등 .... 개선의 여지가 아직 남아 있습니다 .- – VolkerK

0

당신은이 두 가지 변수를 할당해야합니다. 여기에 당신이해야 할 것입니다 :

<?php 
$do = !empty($_GET['do']) ? $_GET['do'] : ''; 
//Prevent SQL injection 
$key = !empty($_GET['key']) ? (int)$_GET['key'] : ''; 
// ALL OTHER PHP CODE GOES HERE 

?> 
0

먼저 당신이 $do$key 변수에 값을 할당 할 어디 보이지 않는 : 당신이 그들에 if 문을 실행하기 전에

+0

변수 $ key에 $가 필요합니다. – larsAnders

+0

사실, 고정 :) – bodi0

관련 문제