Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Jak sprawdzić dodanie rekordu w danym dniu.
woxala123
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Witam!
Mam takie zapytanie. User dodaje rekord do bazy w danym dniu. Zapisuje się jego nazwa oraz data. Chcę by dany user dodawał w danym dniu tylko jeden raz.
Czytałem na temat INSERT IGNORE - Ale czy to jest to dobry kierunek by user był blokowny gdy próbuje jeszcze raz w danym dniu dodac rekord. Ewentualnie proszę o radę.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Zrób trigger który w przypadku wystąpienia rekordu anuluje akcję.


--------------------
Go to the top of the page
+Quote Post
Niree
post
Post #3





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


http://stackoverflow.com/questions/7158037...-record-per-day

Kombinuj, jest wiele sposobów by to zrobić.
Go to the top of the page
+Quote Post
woxala123
post
Post #4





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


  1. $sql = "select * from loro DATE(`date`) = CURRENT_DATE()";
  2. $result = mysql_query($sql);
  3. if (mysql_num_rows($result)>0){
  4. //you already have inserted current date, handle this as you need
  5. }
  6. else{
  7. //current date have not beed inserted, insert it as usual
  8. }
  9.  

Ale teraz powiedz mi Niree jeszcze musiałbym tu w tym kodzie uwzlędnic usera by mógł porównywac czy user wysłał już dany rekord w danym dniu.


Czy tym kodem zaczynam kombinowac już prawidłowo?
  1. $result = mysql_query("SELECT * FROM loro WHERE (`date`) = CURRENT_DATE() AND ('username' = $username") or die("Error: ". mysql_error(). " with query ". $query);
  2. $num_rows = mysql_num_rows($result);
  3. if($num_rows > 0) {
  4. mysql_query("INSERT INTO loro VALUES ('$value', '$username')");
  5. }


Ten post edytował woxala123 5.12.2016, 21:02:48
Go to the top of the page
+Quote Post
viking
post
Post #5





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Tobie to dosłownie jak grochem o ścianę. Już ci nospor tłumaczył jak ma być or die zapisany a ty i tak swoje. Zaraz znowu będzie2 tygodniowy wątek dlaczego to nie działa.


--------------------
Go to the top of the page
+Quote Post
woxala123
post
Post #6





Grupa: Zarejestrowani
Postów: 361
Pomógł: 12
Dołączył: 9.01.2010

Ostrzeżenie: (10%)
X----


Tak viking masz masz rację z tym or die- to tam mały szkopuł znalazłem taki przykład pod tym adresem http://stackoverflow.com/questions/6651200...mber-rows-error i na razie próbuję dopasować do swoich potrzeb- tylko czy dobrym założeniem kombinuje?
Go to the top of the page
+Quote Post
Niree
post
Post #7





Grupa: Zarejestrowani
Postów: 220
Pomógł: 18
Dołączył: 5.02.2016
Skąd: Polska

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


1. (formularz czy coś) - Tworzysz rekord z aktualną datą.
2. Sprawdzasz, czy jakiś rekord istnieje w danym dniu.
3. Jeśli nie istnieje, wyświetlasz formularz pkt 1., jeśli istnieje, nie wyświetlasz formularza z pkt 1.

  1. $result = mysql_query("SELECT * FROM loro WHERE (`date`) = CURRENT_DATE() AND ('username' = $username") or die("Error: ". mysql_error(). " with query ". $query);
  2. $num_rows = mysql_num_rows($result);
  3. if($num_rows > 0) {
  4. mysql_query("INSERT INTO loro VALUES ('$value', '$username')");
  5. }


Ten kod nie ma prawa działać. Samo zapytanie jest źle złożone. Nie domknięty drugi nawias, 'username' zamiast `username`. Zmienna $username wrzucona bez niczego, chociażby '.$username.'. No i ten error.

  1. mysql_query("blablabla zapytanie")or die(mysql_error());

Tak to powinno wyglądać.

Dalej, twój kod sprawdza czy wpis istnieje, nie wiem po co Ci $num_rows do tego, wystarczy:
  1. if(mysql_num_rows($result) > 0)

Twój warunek:
Jeśli rekord istnieje to zrobimy zapis mysql_query("INSERT INTO loro VALUES ('$value', '$username')"); do bazy.

Jeśli nie istnieje to nic.

Nie chciałeś tego przypadkiem na odwrót? tongue.gif
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 17:02