Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Jak sprawdzić dodanie rekordu w danym dniu.
Forum PHP.pl > Forum > Przedszkole
woxala123
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
viking
Zrób trigger który w przypadku wystąpienia rekordu anuluje akcję.
Niree
http://stackoverflow.com/questions/7158037...-record-per-day

Kombinuj, jest wiele sposobów by to zrobić.
woxala123
  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. }
viking
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.
woxala123
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?
Niree
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
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.