I have a problem with PHP adding content to the database. Every time I refresh the page it adds the exact same values over again. How can I make it stop doing that? I have no idea why it does that.
I want it to add the values to the database once and store them there. When the table is created and values added, they are used on the page. User will have the ability to add more values.
It also adds whatever the user has entered when refreshing.
The problematic part is
$db_query = 'INSERT INTO `cars`' .
' (`id`, `make`, `model`, `year`, `color`, `engine`)' .
' VALUES' .
' (NULL, \'Citroen\', \'Saxo\', \'1997\', \'White\', 1.1),' .
' (NULL, \'Citroen\', \'C3\', \'2012\', \'Blue\', 1.4),' .
' (NULL, \'Volkswagen\', \'Golf\', \'2010\', \'Blue\', 1.8),' .
' (NULL, \'Ford\', \'Mondeo\', \'2009\', \'Black\', 1.6),' .
' (NULL, \'Renault\', \'Clio\', \'2010\', \'Silver\', 1.2);';
$result = mysqli_query($conn, $db_query);
Full code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Task 7</title>
</head>
<body>
<?php
# Connection to the database start
$host = 'localhost';
$user = 'root'; # Your username
$password = 'vertrigo'; # Your password
$databaseName = 'db2'; # Your database
$conn = mysqli_connect($host, $user, $password, $databaseName);
if (mysqli_connect_errno($conn)) {
echo 'Failed to connect to MySQL: ' . mysqli_connect_error();
} else {
echo 'have connection<br>';
}
# Connection to the database end (output messages created)
# Creating the table with rows start
$db_query = 'CREATE TABLE IF NOT EXISTS `cars` (' .
'`id` int(11) NOT NULL AUTO_INCREMENT,' .
'`make` varchar(50) NOT NULL,' .
'`model` varchar(50) NOT NULL,' .
'`year` varchar(4) NOT NULL,' .
'`color` varchar(50) NOT NULL,' .
'`engine` decimal(2,1) NOT NULL,' .
'PRIMARY KEY (`id`));';
$result = mysqli_query($conn, $db_query);
# Creating table with rows end
# Putting information in each column start
$db_query = 'INSERT INTO `cars`' .
' (`id`, `make`, `model`, `year`, `color`, `engine`)' .
' VALUES' .
' (NULL, \'Citroen\', \'Saxo\', \'1997\', \'White\', 1.1),' .
' (NULL, \'Citroen\', \'C3\', \'2012\', \'Blue\', 1.4),' .
' (NULL, \'Volkswagen\', \'Golf\', \'2010\', \'Blue\', 1.8),' .
' (NULL, \'Ford\', \'Mondeo\', \'2009\', \'Black\', 1.6),' .
' (NULL, \'Renault\', \'Clio\', \'2010\', \'Silver\', 1.2);';
$result = mysqli_query($conn, $db_query);
# Putting information at each end
# Add cars START
@$cars = $_POST['cars'];
if (isset($cars)) {
$db_query = "INSERT INTO cars (make, model, year, color, engine) VALUES ('" . $cars['0'] . "','" . $cars['1'] . "','" . $cars['2'] . "','" . $cars['3'] . "','" . $cars['4'] . "')";
mysqli_query($conn, $db_query);
} else {
echo 'Cars array does not exists and obtained from FORM.';
}
# Add cars END
# Select the cars table if the right output the headers start
$db_query = "SELECT * FROM cars WHERE id <> 0 ORDER BY year ASC";
if ($result = mysqli_query($conn, $db_query)) {
echo " <table border='1'>";
echo " <tr><td>Make</td><td>Year</td><td>model</td><td>color</td><td>engine</td></tr>";
# Select cars table if the right output the headers end
# while start, output the content of the column.
while ($row = mysqli_fetch_assoc($result)) {
?>
<tr>
<td><?php echo $row['make']; ?></td>
<td><?php echo $row['year']; ?></td>
<td><?php echo $row['model']; ?></td>
<td><?php echo $row['color']; ?></td>
<td><?php echo $row['engine']; ?></td>
</tr>
<?php
}
# End while
echo "</table>";
}
?>
<form action="index.php" method="post" name="zatupok">
<fieldset>
<legend>MY CARS</legend>
<label>Make</label>
<input type="text" name="cars[]">
<label>Model</label>
<input type="text" name="cars[]">
<label>Year</label>
<input type="text" name="cars[]">
<label>Color</label>
<input type="text" name="cars[]">
<label>Engine</label>
<input type="text" name="cars[]">
<input type="submit">
</fieldset>
</form>
</body>
</html>