Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nie dodawaj danych z formularza do bazy jeżeli te istnieją - jak ?
x X x
post
Post #1





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 21.01.2014

Ostrzeżenie: (0%)
-----


Chciał bym napisać obsługę wyjątku, który sprawdzi, czy dodawane dane do bazy danych istnieją. Jeżeli tak - wyświetli komunikat, że takie dane już istnieją i zapytanie nie zostanie wykonane.

Powiedzmy, że mam takie zapytanie:

  1. <?php
  2.  
  3. $insert = "INSERT INTO tabela VALUES ('".$_POST['imie']."', '".$_POST['nazwisko']."', '".$_POST['email']."')";
  4.  
  5. $insert_osoba = parent::getDB()->run($insert);
  6.  
  7. echo 'potwierdzenie dodania';
  8.  
  9. ?>


Co teraz zrobić? Znalazłem taką funkcję jak mysql_insert_id(), ale nie wiem czy tutaj ją mogę wykorzystać. Wtedy zapytanie powinno zawierać jeszcze słowo IGNORE.

Tabela tabela pole ID ma unikatowe i uzupełniane automatycznie. Wartość tego pola nie jest przekazywana w formularzu, tylko powyższe dane.

Dodam, że mój formularz jest umieszczony w pętli foreach, więc w zapytaniu wykorzystuje jeszcze zmienną $i, ale to nie jest teraz istotne.

Ten post edytował x X x 27.03.2014, 16:53:20
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
x X x
post
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 0
Dołączył: 21.01.2014

Ostrzeżenie: (0%)
-----


Ale w swojej tabeli nie brałem pod uwagę ID. To co zamieściłem w pierwszym poście to tylko przykładowe dane (IMG:style_emoticons/default/wink.gif) Możliwe iż dostałem taki wynik dlatego, iż pole id również było zaznaczone jako unikatowe. Właśnie to zmieniłem, chciałem wrzucić insertem poprzednie dane, w których dane się dublowały i dostaję komunikat w MySQL że dane się dublują.

Edit:

Okej, zmieniłem strukture tabeli, dałem zapytanie. Po pierwsze teraz system automatycznie wykrywa czy dane isnieją i nie dodaje ich do bazy, a za pomocą zapytania z COUNT mogę sprawdzić czy wpis istnieje czy nie. Teraz tylko prosty IF i działam.

Pytanie, czy można to zrobić inaczej, skuteczniej, bez niepotrzebnego pobierania danych z tabeli. Jakąś funkcją czy czymś?

Ten post edytował x X x 27.03.2014, 17:46:22
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 29.12.2025 - 23:21