2013-04-04 2 views
0

그래서, 나는 동일한 db에서 실행되는 2 개의 스크립트를 가지고 있지만, 각각은 자신의 테이블 (예 : 사용자, 게시물 등)을 가지고 있으며 포인트 시스템을 가지고 있습니다.다른 테이블에 추가하는 동안 한 테이블에서 값을 빼는 방법은 무엇입니까?

이제 내가하고 싶은 것은 점을 하나씩 보낼 수있게 만드는 것입니다. 이름과 점수가 기입 된 간단한 양식을 작성했습니다. 제출할 때 정보를 처리 할 다른 페이지로 보내고 주어진 금액을 사용자에게서 빼고 (세션을 확인할 것임) 보내는 것보다 (다른 스크립트에 등록 된) 주어진 이름으로.

좋아요, 처리 할 때 포인트가 제거됩니다 (또는 포인트가 충분하지 않으면 "포인트가 충분하지 않음"오류가 발생하지만 포인트는 다른 계정에 적립되지 않습니다). 해결할 수 있습니까?

// Start session management 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup('mods/points'); 
$pointst1 = request_var('pointst', 0); 
$bsname1 = request_var('bsname', 0); 

if ($user->data['user_points'] < $pointst1){ 
echo "<b>You don't have enough points</b>"; 
} 

else { 
remove_points($user->data['user_id'], $pointst1); 
mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'"); 
echo "<b>Points tranferred!</b>"; 
}; 

?> 
+0

새 응용 프로그램에서 mysql_query를 사용하지 말고 [PDO] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using)를 사용하십시오. -phps-pdo-for-database-access /)를 사용하십시오. 또한, 심각한 피해를 입기 전에 [적절한 SQL 탈출] (http://bobby-tables.com/)을 읽어보십시오. – tadman

+0

두 번째 사용자가있는 경우 두 번째 사용자를 찾아서 이름 대신 사용자 쿼리를 사용해야합니다. intval()에서 $ pointst1을 감싸서 숫자를 적용한 다음 업데이트하기 전에 0 또는 음수를 확인해야합니다. – Revent

+0

각 요청 후에 mysql_error를 호출하면 어떻게됩니까? http://php.net/manual/en/function.mysql-error.php – didierc

답변

0

몇 가지 :

는 여기에 코드를 간다.

먼저 SQL 커밋을 처리 할 때이 사이트를 체크 아웃하는 것이 좋습니다. 그러면 한 사용자에게서 점수를 삭제하지 않고 다른 사용자에게 점수를 추가하지 않아도됩니다. 이 부분은 텍스트로 PHP 변수를 전달하고있는 것처럼 현재의 코드 예제

http://php.net/manual/en/mysqlnd-ms.transaction.php

둘째 일어날 수있는 보인다

는 mysql_query ("UPDATE 사용자 SET 포인트 = (포인트 + $ pointst1) WHERE name = '$ bsname' "); 에코 "포인트 tranferred!"당신은 여기 내 논리를 확인할 수 있도록

당신은, 내가 PHP 프로그래머가 아니에요

mysql_query("UPDATE users SET points = (points + {$pointst1}) WHERE name = {$bsname}"); 
echo "<b>Points tranferred!</b>" 

로 변경 할 수 있습니다 : http://php.net/manual/en/language.operators.string.php

희망 하시겠습니까?

+0

거래 제안. 나는 동의한다! – Revent

+0

나는 당신이 쓴 것을 반향하고있었습니다. 당신 말이 맞아요 –

+0

답변 해 주셔서 감사합니다. 내가 얻은 것을보기 위해 일부 쿠키 및 페이지 전달을 시도 할 수 있습니다. – user2246644

관련 문제