2012-12-28 3 views
0

저는 이번에 매우 실망합니다. 나는 하루 종일 낭비했고 나는 나를 도울 수 없었다. 문제는 다음과 같습니다.보류중인 소식을 수락하거나 삭제하려면 어떻게해야합니까?

보류중인 작업을 수락하거나 삭제해야합니다. 동의하는 경우에만 내 사이트에 게시됩니다. 이미지를 보시기 바랍니다. enter image description here

여기이 문제를 해결하기 위해이 코드를 사용하려고합니다. 첫째, 누군가 새로운 직업을 올리면 직업에 따라 숨겨진 가치 = 0을 전달합니다.

<input type="hidden" name="pending" value=0/> 

그런 다음 데이터베이스에 저장합니다.

INSERT INTO job (Pending) VALUES ('$_POST[pending]'); 

그런 다음 이미지 (위) 페이지를 수락하거나 삭제합니다.

echo "<a href='accept.php?accept=1'>ACCEPT</a> Or "; 
echo "<a href='accept.php?accept=0'>DELETE</a>"; 

수락 한 후 보류 중 열은 0에서 1로 바뀌므로 게시됩니다. 또는 시간을 삭제하면 작업이 데이터베이스에서 간단히 삭제됩니다.

$accept=$_GET['accept']; 
if($accept==1){ 
mysql_query("UPDATE job SET Pending='$accept' 
WHERE ID='5'"); 
} 
else{ 
mysql_query("DELETE FROM job WHERE ID='5'"); 
} 

'작업'테이블에서 ID라는 기본 자동 증가 항목을 사용합니다. 신분증에 5를 넣었습니다. 따라서이 코드는 ID가 5 인 보류중인 작업에만 적용됩니다. 따라서 문제는 여기에 있습니다. 이 변수를 동적 변수로 어떻게 바꿀 수 있습니까?

자세한 내용은 '보류중인 작업'페이지의 코드입니다.

$result1 = mysql_query("SELECT * FROM job ORDER BY ID DESC"); 
while($row1 = mysql_fetch_array($result1)) 
{ 
$id=$row1['ID']; 
$cat=$row1['Category']; 
$title=$row1['Title']; 
$type=$row1['Type']; 
$desp=$row1['Description']; 
$salary=$row1['Salary']; 
$day=$row1['Day']; 
$month=$row1['Month']; 
$year=$row1['Year']; 
$info=$row1['Contact']; 
$pending=$row1['Pending']; 

$now = time(); 
$last_date = strtotime("$year-$month-$day"); 
$datediff = $last_date - $now; 
$day_left=ceil($datediff/(60*60*24)); 
if($day_left>=0&&$pending==0){ 
echo "<div class=cat>Job field: $cat<br/></div>"; 
    echo "<div class=yel2>"; 
echo "This is a <b>$type time</b> job and we are looking for <b>$title</b>. $desp<br/>"; 
if ($salary!=0) echo "Salary: $salary<br/>"; 
echo "Contact info: $info<br/>Last date: $day-$month-$year"; 
if($day_left==0) 
echo "<br/><span class=ash><i>Today is the last day to apply</i><br/>"; 
else 
echo "<br/><span class=ash><i>$day_left day(s) left</i></span><br/>"; 
echo "<span class=acc><a href='accept.php?accept=1'>ACCEPT</a><span> Or "; 
echo "<span class=del><a href='accept.php?accept=0'>DELETE</a></span>"; 
+0

을 필요로 ?? – mtariq

+0

URL 변수로 ID를 수락 페이지로 전달하면됩니까? – Michael

+1

** 경고! ** 귀하의 코드에는 [SQL 주입 취약점] (http://en.wikipedia.org/wiki/SQL_injection)이 포함되어 있습니다. 원시, 필터링되지 않은 유효성이 검증되지 않은 사용자 입력을 SQL 문자열로 직접 전달합니다. SQL 주입은 [매우 쉽게 고칠 수 있습니다] (http://stackoverflow.com/q/60174/168868). [PDO로 전환] (http://php.net/book.pdo) 또는 [mysqli] (http://php.net/book.mysqli)를 고려하여 [매개 변수화 된 쿼리와 함께 준비된 문구] (http : //en.wikipedia.org/wiki/Prepared_statement). – Charles

답변

2

수락 URL과 함께 ID를 전달하십시오.

echo "<span class=acc><a href='accept.php?id=$id&accept=1'>ACCEPT</a><span> Or "; 

당신은

$post_id = $_GET['id']; 

를 사용하여 accept.php 스크립트 내부 ID를 잡을 수 있습니다 당신이 저장하고 사업부의 $ ID를 읽기되지 않는 이유 코드는 거의 변화

$accept = intval($_GET['accept']); // safe against sql-injections 
$post_id = intval($_GET['id']); 
if($accept==1){ 
mysql_query("UPDATE job SET Pending='$accept' 
WHERE ID='$post_id'"); 
} 
else{ 
mysql_query("DELETE FROM job WHERE ID='$post_id'"); 
} 
+0

와우 훌륭한 솔루션입니다. 나는 이것을 시도 할 것이다. 내가 성공하면 알려 드리겠습니다. –

+0

나는 너를 아주 고맙게 생각한다. 너는 그런 도움이되는 사람 마이클이야. :) –

관련 문제