• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Blokowanie dodawania już istniejących rekordów do bazy danych

0 głosów
606 wizyt
pytanie zadane 17 stycznia 2020 w Egzaminy zawodowe przez Gamin Użytkownik (800 p.)
    <?php
    //skrypt połączenia z bazą danych//
    $polaczenie = new mysqli("localhost","root","","dane");
    if ($polaczenie->connect_error)
      echo("Błąd połączenia: ".$polaczenie->connect_error);
    else {

	$tytul = $_POST['tytul'];
	$gatunki_id = $_POST['gatunki_id'];
	$rok = $_POST['rok'];
	$ocena = $_POST['ocena'];
 
	$zapytanie = "INSERT INTO filmy (tytul, gatunki_id, rok, ocena) 
        VALUES ('$tytul','$gatunki_id','$rok','$ocena')";
  
	$wynik = $polaczenie->query($zapytanie);

	if ($wynik) {
		echo 'Film'.' ' .$_POST['tytul'].' '. 'został dodany do bazy.';	
	}
    	mysqli_close($polaczenie);
    }
    ?>

Napisałem prosty skrypt do egzaminu E14-01-19.01, dodający tytuł, gatunek, rok i ocenę filmu do bazy danych. O dziwo wszystko działa, jednak interesuje mnie inna rzecz. Zanim znalazłem błąd (niedomknięta '}' ) kilka razy odświeżyłem stronę, po czym po rozwiązaniu problemu wszystkie wpisane dane naraz zapisały się w bazie (9 wierszy, jeden pod drugim, z tymi samymi wartościami). Znacie jakiś sposób, żeby dane już raz umieszczone w bazie nie mogły być ponownie dodane?

1 odpowiedź

+2 głosów
odpowiedź 18 stycznia 2020 przez SzkolnyAdmin Szeryf (90,350 p.)

Wielokrotne dodanie danych do bazy po odświeżeniu (F5) to efekt zapamiętania danych z formularza przez przeglądarkę. Po odświeżeniu dane już są i skrypt jest wykonywany. W twoim przypadku najprostszym sposobem jest umieszczenie po wysłaniu danych i zamknięciu połączenia z serwerem bazodanowym instrukcji

header("Location: tu_adres_strony")

Powoduje to przeładowanie strony i wpisane dane "znikają".

Podobne pytania

0 głosów
5 odpowiedzi 1,199 wizyt
0 głosów
1 odpowiedź 653 wizyt
0 głosów
2 odpowiedzi 471 wizyt
pytanie zadane 31 sierpnia 2018 w Sieci komputerowe, internet przez MrxCI Dyskutant (8,260 p.)

93,741 zapytań

142,676 odpowiedzi

323,294 komentarzy

63,319 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...