2017-01-24 6 views
0

Я создаю приложение для парковки автомобилей, в котором у разных пользователей разное количество парковочных мест. Этот номер задается администратором в базе данных. Пользователь может ввести номерной знак, который затем будет добавлен в базу данных. Я хочу, чтобы, когда пользователь занял все пятна, он не сможет вставлять больше номерных знаков.PHP increment a var

Однако, теперь у меня есть следующий код на данный момент:

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. Вы устанавливаете $ busyNumberOfSpots = 0; и 2. У сценария нет памяти. +1 для SQL Injection – Arnolio

+0

Есть ли в цикле? – aperpen

ответ

1

Это потому, что вы используете один и тот же код каждый раз, когда вы добавляете тарелку в свой дБ.

это:

$occupiedNumberOfSpots = 0; 

должны быть взяты из БД, а также. Я предполагаю, что это должно быть так:

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

вместо:

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