2017-01-24 8 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

これは、データベースにプレートを追加するたびに同じコードを実行しているためです。

この:

$occupiedNumberOfSpots = 0; 

が同様にDBから取られるべきです。私はそれがそのようにする必要があります推測:

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

の代わり:

$totalNumberOfSpots = $row['parking_spots']; 
$occupiedNumberOfSpots = 0; 
関連する問題