Witam,
Mam pewien problem z bazą danych. Gdy dodaję pozycję do tabeli w bazie danych, zdarza się, że rekord zostaje powielony - np.
Wprowadzam kilka danych na stronie WWW (data, ilość, numer, przebieg, kierowca, tankujący, stan kontrolny) i dokonuję dodaj poprzez funkcję INSERT.
Rekord zostaje dodany. Zdarza się jednak tak, że zamiast jednego dodaje dwa, z tą różnicą, że nadaje inne ID (primary key).
W celu upewnienia się czy dane nie zostały omyłkowo wprowadzone dwa razy, wprowadziłem kolumnę zawierającą czas dodania do bazy.
czas dodania do bazy wskazuje, że rekord:
201 i 202 zostały dodane dokładnie o tej samej porze i zawierają dokładnie takie same dane.
Przytrafiło się już kilka razy. Początkowo pomyślałem, że to ja wprowadzam tak te dane, jednak data dodania - zdecydowanie temu zaprzecza.
<form id="AddForm" action="p_paliwo_dodaj_pozycje.php" method="post">
Dodaj:
<span class="form_a">Podaj datę: </span>
<input type="date" required name="paliwo_data"/><br /><br />
<span class="form_a">Podaj ilość paliwa: </span>
<input type="number" name="paliwo_ilosc" placeholder="Ilość paliwa" required step="any"/><br /><br />
<span class="form_a">Podaj numer rejestracyjny: </span>
<input list="rejestracja" required name="paliwo_nrrej" placeholder="Numer rejestracyjny" />
<datalist id="rejestracja">
<option value="EL12345">
</datalist><br /><br />
<span class="form_a">Podaj przebieg pojazdu: </span>
<input type="number" name="paliwo_przebieg" placeholder="Przebieg pojazdu"/><br /><br />
<span class="form_a">Podaj dane kierowcy: </span>
<input list="kierowca" name="paliwo_kierowca" placeholder="Dane kierującego" required />
<datalist id="kierowca">
<option value="Jan Kowalski">
</datalist><br /><br />
<span class="form_a">Podaj dane wydającego: </span>
<input list="wydajacy" name="paliwo_wydal" required placeholder="Dane wydajacego"/>
<datalist id="wydajacy">
<option value="Krystyna Kowalska">
</datalist><br /><br />
<span class="form_a">Podaj stan kontrolny: </span>
<input type="text" name="paliwo_stan" placeholder="Stan kontrolny" /><br /><br />
<span><input class="myButton" type="submit" value="Dodaj" /></span>
</form>
A to kod php - paliwo_dodaj_pozycje.php
session_start(); if (!isset($_SESSION['zalogowany'])) {header('Location: index.php'); exit();}
// odbieramy dane z formularza
$data = $_POST['paliwo_data'];
$ilosc = $_POST['paliwo_ilosc'];
$ilosc=str_replace(",",".",$ilosc);
$nr_rej = $_POST['paliwo_nrrej'];
$przebieg = $_POST['paliwo_przebieg'];
$kierowca = $_POST['paliwo_kierowca'];
$wydal = $_POST['paliwo_wydal'];
$stan = $_POST['paliwo_stan'];
$sam = 0;
$user = $_SESSION['user'];
if($data and $ilosc and $nr_rej and $kierowca and $wydal) {
// łšczymy się z bazš danych
$connection = @mysql_connect('xxx', 'xxx', 'xxx')
or die('Brak połšczenia z serwerem MySQL');
$db = @mysql_select_db('xxx', $connection)
or die('Nie mogę połšczyć się z bazš danych');
if($nr_rej=="EL249TT" || $nr_rej=="EL649TA" || $nr_rej=="EL778SV")
{
$sam='1';
}
else
{
$sam='2';
}
if (empty($stan))
{
$stan='Nie podano';
}
else
{
$stan=$stan;
}
if(empty($przebieg)){
$przebieg = 1;
}
// dodajemy rekord do bazy
$ilosc=str_replace(",",".",$ilosc);
$ins = @mysql_query("INSERT INTO p_paliwo SET paliwo_data='$data', paliwo_ilosc=round('$ilosc',2), paliwo_nrrej='$nr_rej', paliwo_przebieg='$przebieg', paliwo_kierowca='$kierowca', paliwo_wydal='$wydal', paliwo_stan='$stan', paliwo_a_p='$sam', kto='$user'");
mysql_close($connection);
if($ins) header("Location: p_paliwo.php");
else echo "Błąd nie udało się dodać nowego rekordu";
}
Jeżeli ktoś wie co wpływa na taką sytuację i może podać jej rozwiązanie będę wdzięczny :) z góry dziękuję