2017-01-24 10 views
0

Ich baue eine Autoparkanwendung, in der verschiedene Benutzer unterschiedliche Anzahl von Parkplätzen haben. Diese Nummer wird von einem Administrator in einer Datenbank festgelegt. Der Benutzer kann ein Nummernschild eingeben, das dann ebenfalls einer Datenbank hinzugefügt wird. Was ich will ist, dass wenn ein Benutzer alle Spots besetzt hat, er keine Nummernschilder mehr einlegen kann.PHP inkrementieren ein var

aber jetzt habe ich den folgenden Code im Moment:

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!'; 
    } 
} 

Aber wenn ich den $ occupiedNumberOfSpots Variable Echo hält es 1 zurückkehrte und nicht erhöhen, nicht jedes Mal, wenn ich Nummernschild hinzufügen.

Wie kann ich dieses Problem lösen?

+1

PHP ist eine Skriptsprache; Wenn das Skript beendet ist/die Seite geladen wurde, wird die Variable nicht mehr existieren. Wenn Sie es dauerhaft benötigen, sollten Sie es beispielsweise in einer Datenbank speichern. Und Sie sollten auf SQL-Injektion nachlesen. – jeroen

+0

Ich denke, du verpasst etwas. Immer wenn jemand das Formular einreicht, das den Code auslöst, wird das Skript von oben nach unten ausgeführt. Das bedeutet ein paar Dinge. 1. Sie setzen $ occupiedNumberOfSpots = 0; und 2. Das Skript hat keinen Speicher. +1 für SQL Injection – Arnolio

+0

Das if ist in einer Schleife? – aperpen

Antwort

1

Es ist, weil Sie den gleichen Code jedes Mal, wenn Sie laufen eine Platte zu Ihrem db hinzuzufügen.

dies:

$occupiedNumberOfSpots = 0; 

sollte von db auch genommen werden. Ich denke, es sollte so sein:

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

statt:

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