2017-01-24 7 views
0

나는 다른 주차 공간의 수가 다른 주차 기술 응용 프로그램을 구축 중입니다. 이 번호는 관리자가 데이터베이스에서 설정합니다. 사용자는 데이터베이스에 추가되는 번호판을 입력 할 수 있습니다. 내가 원하는 것은 사용자가 모든 지점을 점유했을 때 번호판을 더 이상 삽입 할 수 없다는 것입니다.PHP는 변수를 증가 시킴

if(isset($_POST['number_plate'])){ 
    $numberPlate = $_POST['number_plate']; 
    $user_id = $_SESSION['id']; 

    $query = mysql_query("SELECT `parking_spots` FROM `login` WHERE `id` = ".$user_id." "); 
    $row = mysql_fetch_assoc($query); 
    $totalNumberOfSpots = $row['parking_spots']; 
    $occupiedNumberOfSpots = 0; 

    $sql = "INSERT INTO amsterdam (numberplate, user_id) VALUES ('$numberPlate','$user_id')"; 
    if(mysql_query($sql)) 
    { 
    echo 'numberplate added'; 
    $occupiedNumberOfSpots++; 

    if($occupiedNumberOfSpots == $totalNumberOfSpots) 
    { 
     echo "There are no more spots avialable"; 
    } 
    } 
    else 
    { 
    echo 'Something went wrong!'; 
    } 
} 

을하지만이 $ occupiedNumberOfSpots 변수를 에코 때 1을 반환 유지하고 내가 번호판을 추가 할 때마다 증가하지 않습니다

그러나, 지금은 순간에 다음과 같은 코드가 있습니다.

이 문제를 어떻게 해결할 수 있습니까?

+1

PHP는 스크립팅 언어입니다; 스크립트가 끝나거나 페이지가로드되면 변수는 사라집니다. 지속성이 필요하면 예를 들어 데이터베이스에 저장해야합니다. 그리고 SQL 인젝션을 읽어야합니다. – jeroen

+0

나는 뭔가를 놓친 것 같아. 누군가 당신의 코드를 트리거하는 양식을 제출할 때마다 스크립트는 위에서 아래로 실행됩니다. 이것은 몇 가지 것을 의미합니다. 1. $ occupiedNumberOfSpots = 0으로 설정하고 있습니다. 2. 스크립트에 메모리가 없습니다. +1 for SQL Injection – Arnolio

+0

if가 루프에 있습니까? – aperpen

답변

1

DB에 플레이트를 추가 할 때마다 동일한 코드가 실행되기 때문입니다.

이것은 :

$occupiedNumberOfSpots = 0; 

은 물론 DB를에서주의해야한다.

$totalNumberOfSpots = 100; // for example 
$occupiedNumberOfSpots = $row['parking_spots']; // taken from db 

대신 : 나는 그것이 그렇게해야 생각

$totalNumberOfSpots = $row['parking_spots']; 
$occupiedNumberOfSpots = 0;