[MYSQL] Jedeno nazwisko raz dziennie.

0

Witam, stworzyłem wysyłanie danych z formularza do bazy danych wg. tego poradnika: http://www.forum.legalne.info.pl/phpmysqlwysylanie-danych-z-formularza-do-bazy-danych-t8171.html

Jestem początkujący w MySQL więc proszę o wyrozumiałość. No więc chodzi o to, że jeżeli w polu
nazwisko, załóżmy że ktoś wpisuje: Nowak. W bazie danych w polu nazwisko tworzy się Nowak, można stworzyć takich Nowaków milion w tej bazie, a jak zrobić żeby można było utworzyć jednego Nowaka raz na 24h?

Nie chcę żadnych zabezpieczeń z ciasteczek czy też zapisywanie ip itp. Chcę po prostu że jeżeli jest jeden nowak to nie wyśle już go do bazy danych póki nie minie 24h. Proszę Was o pomoc, z góry dziękuję i pozdrawiam.

1

Dodaj do tabeli kolumnę "data rejestracji". W PHP przy rejestrowaniu nowego użytkownika sprawdź czy różnica między aktualną datą, a "największą" (najpóźniejszą) data rejestracji z tabeli użytkowników jest większa niż 24h. Jeśli tak, to rejestruj, w przeciwnym razie nie rejestruj.

0

Dobra odpowiedź dla początkującego. Mógłbyś mi to jakoś rozjaśnić bo naprawdę jestem zielony... pokazać to na kodzie czy coś.

0

Do tabeli użytkowników musisz dodać kolumnę z datą rejestracji (typu DATETIME, i musisz przy rejestracji nowego użytkownika tę datę zapisać).
Do istniejącej tabeli kolumnę dodajesz zapytaniem ALTER TABLE ( http://dev.mysql.com/doc/refman/5.1/en/alter-table.html ).

Pobieranie z tabeli daty rejestracji użytkownika:

SELECT data_rejestracji FROM uzytkownicy WHERE nazwisko='$nazwisko'

Jakoś tym zapytaniem fetch'ujesz sobie w PHP tę datę rejestracji i o ile to konieczne, przekształcasz ją sobie na format PHP (nie pamiętam już jaka jest data wyciągana z mysql, prawdopodobnie ma postać tekstową) . A następnie porównujesz ją z dzisiejszą datą:

http://php.net/manual/pl/datetime.diff.php

No i jak różnica będzie większa niż 24h, to wykonujesz funkcję rejestracji, a jak nie, to pokazujesz jakąś informację, że nie można zarejestrować.

Nie ma sensu podawać całego kodu na talerzu, skoro chodzi o to, żeby się nauczyć ;) Zwłaszcza korzystania z dokumentacji używanych technologii.

Poza tym, żeby dać kompletne działające rozwiązanie, to musiałbym sobie stawiać w systemie całe środowisko pracy (LAMP).

0

Mój formularz wygląda tak:

[code]

<?php ob_start(); require("connection.php"); connection(); $imie = $_POST['imie']; $nazwisko = $_POST['nazwisko']; $email = $_POST['email']; if (empty($_POST['submit'])) { // wyświetlamy formularz echo "<form method="\&quot;post\&quot;"> <input type="\&quot;text\&quot;" name="\&quot;imie\&quot;" placeholder="\&quot;Imię\&quot;" style="\&quot;width:" 250px\"="250px\&quot;"> <input type="\&quot;text\&quot;" name="\&quot;nazwisko\&quot;" placeholder="\&quot;Nazwisko\&quot;" style="\&quot;width:" 250px\"="250px\&quot;"> <input type="\&quot;text\&quot;" name="\&quot;email\&quot;" placeholder="\&quot;Adres" e-mail\"="e-mail\&quot;" style="\&quot;width:" 250px\"="250px\&quot;"> <input type="\&quot;submit\&quot;" name="\&quot;submit\&quot;" value="\&quot;Wejdź" do="do" gry="gry" o="o" doładowanie="doładowanie" telefonu!!!\"="telefonu!!!\&quot;"> </form> </form>"; } // sprawdzamy, czy zmienne przesłane z formularza nie są puste else { if (!empty($_POST['imie']) && !empty($_POST['nazwisko']) && !empty($_POST['email'])) { echo "
<font color="green">Dane wysłane</span>
"; $zapytanie = "INSERT INTO `formularz` VALUES('".$imie."','".$nazwisko."','".$email."')"; mysql_query($zapytanie); } else { echo "
<font color="red">Wypełnij wszystkie pola w formularzu.</span>
Wróć do poprzedniej strony i wypełnij formularz ponownie.
"; } } ob_end_flush(); ?>

[/code]

Czytam na różnych forach, i nic mi nie świta. Dodałem tą tabelę tak jak napisałeś w bazie danych, ale przez to przestało wgl się wysyłać do bazy danych dane.
Zmontowałem coś takiego:

$lol = "SELECT data_rejestracji FROM formularz WHERE nazwisko='$nazwisko'";
mysql_query($lol);

ale pewnie źle i sam nie wiem co dalej robić..

1 użytkowników online, w tym zalogowanych: 0, gości: 1