Witajcie!
Szukam odpowiedzi na mój problem. Wygląda to tak:
wpisuje dane do formularza, zapisuje je postem, waliduje w jednym pliku i wysyłam do poniższego pliku, który powinien zapisywać dane do bazy. Chciałem jednak zrobić tak, by wpisy w bazie się nie powtarzały, i tak sprawdzam selectem, czy jest taki wpis i jeżeli jest, wracam do index.php, gdzie jest formularz z zapisana zmienną sesyjną, która wyświetla komunikat o tym, ze jest już taki wpis w bazie.
Oczywiście, jeżeli wpisu nie ma, zapisuje dane do bazy. Niby wszystko gra i w szystko się zapisuje, jeżeli jednak kliknę odśwież, wpis w bazie pojawia się podwójnie, jak by nie sprawdzał, czy w bazie już taki jest. Kiedy kliknę drugi raz odśwież wtedy prawidłowo wraca do index.php. Skąd 2 wpisy? co robię źle?
session_start();
$email_db = $_SESSION['g_email'];
echo $email_db;
$salon_db = $_SESSION['g_salon'];
if(empty($email_db))
{
header('Location: index.php');
exit;
}
else
{
require_once 'database.php';
$query = $db->prepare('SELECT u_id FROM user WHERE u_email = :email');
$query->bindValue(':email', $email_db, PDO::PARAM_STR);
$query->execute();
print_r($query->fetch());
if(empty($query->fetch()))
{
$_SESSION['e_email']="Ten e-mail jest już w naszej bazie.";
header('Location: index.php');
exit();
}
else
{
$query2 = $db->prepare("INSERT INTO user VALUES (NULL,:email,:nazwa,'',1)");
$query2->bindValue(':email', $email_db, PDO::PARAM_STR);
$query2->bindValue(':nazwa', $salon_db, PDO::PARAM_STR);
$query2->execute();
echo Wszystko OK!;
}
}