Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapisanie rekordu do konkretnej godziny.
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
woxala123
Witam!
Zrobiłem dodatkową kolumnę 'time' - określiłem w niej godzinę do której user mógł zapisać rekord. I teraz mam pytanko jaki warunek dopisać do
zapytania aby gdy jest już po czasie to user nie dopisze rekordu.
  1. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < CURRENT_TIME()";
  2. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  3. if(mysql_num_rows($Recordset1) ==0){
  4.  
  5. // akcja po znalezieniu że dodał wszystkie rekordy
  6. echo "<center>'Dodajesz w czasie'!'</center>";
  7. }else{
  8. echo "<center>' Dodajesz po czasie'</center>";

Tylko nie chcę by zapisywało do rekordu


Czy jest ktoś w stanie pomóc w tym temacie jak to zrobić by user tylko zapisywał dane do konkretnej godziny. Gdyby próbował wyskakiwał by mu błąd że czas minął na dodanie rekordu.
Proszę o wskazówki.
Pozdrawiam
Pyton_000
Eeee... przecież masz już to co chciałeś albo ja Cię nie rozumiem.
woxala123
Chcę by user nie mógł zapisywać rekordu po minionym czasie. Np: teraz czas w kolumnie jest zdefiniowany na 22:00:00 gdy minie ten czas to user ma nie zapisać i wyskoczyć komunikat że może zapisać do określonej godziny. Bo owszem pokazuje sie komunikat że zapisuje rekord przd czasem albo po czasie -Ale włąśnie zapisuje nawet po czasie.
olszam
sprawdź normalnie na losowym użytkowniku czy mimo wszystko zwróci ci zero wyników i dodatkowo sprawdź jaki wynik ci zwraca mysql_num_rows i jeszcze zobacz jaki czas serwera masz ustawiony
woxala123
  1. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  2. mysql_select_db($database_local, $local);
  3. $query_time= "SELECT * FROM loro WHERE `time` = '".$time."'";
  4. $Time = mysql_query($query_time, $local) or die(mysql_error());
  5.  
  6. if(mysql_num_rows($Time) == 0){
  7. echo '<center>Oddajesz rekord po czasie!!!</center>';
  8.  
  9. } else if(mysql_num_rows($Time) != 1){
  10. echo '<center>Dodano rekord w czasie!</center>';
  11.  
  12. }
  13. mysql_select_db($database_local, $local);
  14. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `date` = CURRENT_DATE() ";
  15. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  16.  
  17.  
  18.  
  19. if(mysql_num_rows($Recordset1) == 2){
  20.  
  21. // akcja po znalezieniu że dodał wszystkie rekordy
  22. echo "<center>'Wykorzystałeś limit '".$username."'!'</center>";
  23.  
  24. } else {
  25. // akcja po stwierdzeniu że dodał rekord
  26. echo "<center>' Rekord dodany'</center>";
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33. $insertSQL = sprintf("INSERT INTO loro (`username`, `bal1`, `bal2`, `bal3`, `bal4`, `bal5`, `bal6`, `date` ) VALUES ('".$username."',$bal1, $bal2, $bal3, $bal4, $bal5, $bal6, (NOW()))",
  34. GetSQLValueString($_POST['hiddenField'], "int"));
  35.  
  36. mysql_select_db($database_local, $local);
  37. $Result1 = mysql_query($insertSQL, $local) or die(mysql_error());
  38.  
  39. }
  40. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `date` = CURRENT_DATE()";
  41. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  42.  
  43. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  44.  
  45. if($totalRows_Recordset1 >= 2){
  46. echo '<center>Dodałeś już wszystkie 2 rekordy!</center>';
  47. }
  48. else if($totalRows_Recordset1 ==1){
  49. echo '<center>Dodałeś '.$totalRows_Recordset1.'-pierwszy rekord!</center>';
  50.  
  51. }
  52. else if($totalRows_Recordset1 >1){
  53. echo '<center>Dodałeś '.$totalRows_Recordset1.' typy!</center>';
  54.  
  55. } else if($totalRows_Recordset1 == 0){
  56. echo '<center>Dodano rekord po raz pierwszy!</center>';
  57.  
  58.  
  59.  
  60. }
  61. }

To kawałek kodu i teraz gdzie leży tu błąd aby user nie zapisywał rekordu gdy jest przekroczony czas?
Czas lokalny z mojego kompa na razie localhost
Pozdrawiam
Niree
$aktualnyczas = date("H:m:s");

$query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` > $aktualnyczas";

Skoro "time" stanowi limit, to musi być "time" większy niż $aktualna godzina. Jeśli time będzie mniejszy, to zwróci Ci zerowierszy .

Poza tym nie używaj w jednym pliku takich samych nazw zmiennych (już któryś raz widzę $query_Recordset) bo jedna zmienną podmieni daCo ne drugiej zmiennej i będzie syf. Ustal sobie od czego są konkretne zapytania i tak je nazywaj, np $query_checktime
woxala123
Na razie wg. twoich wskazówek zrobiłem tak - z tymi zmiennymi masz racje zaraz jeszcze to poprawię ale nadal zapisuje

  1.  
  2. $times = date("H:mm:ss");
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  10. mysql_select_db($database_local, $local);
  11. $query_time= "ELECT * FROM loro WHERE `username` = '".$username."' AND `time` > $times";
  12. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  13.  
  14.  
  15. if(mysql_num_rows($Recordset1) == 0){
  16. echo '<center>Oddajesz rekord po czasie!!!</center>';
  17.  
  18. } else {
  19. echo '<center>Dodano typ w czasie!</center>';
  20.  
  21.  

poprawiłem już na takie coś
  1. $times = time("H:mm:ss");
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  9. mysql_select_db($database_local, $local);
  10. $query_time= "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < $times";
  11. $Recordset1 = mysql_query($query_time, $local) or die(mysql_error());
  12.  
  13.  
  14. if(mysql_num_rows($Recordset1) == 0){
  15. echo '<center>Oddajesz rekord po czasie!!!</center>';
  16.  
  17. } else {
  18. echo '<center>Dodano typ w czasie!</center>';
  19.  
  20. }
Niree
Daj H:m:s, jestem na telefonie i mi się rozmnożyły te literki.
Czas w kolumnie musi być w też w takim formacie.Ewentualnie mozesz wcześniej zrobić zapytanie do bazy o ostatni wpis danego użytkownika (limit 1 order by id) i robić np warunek

if($danebaza['time'] > $Times) echo 'dodano'; else 'po czasie';

Wtedy usuwasz w warunku zapytania kolumnę time I wyciągasz ostatni wpis danegoużytkownika .
woxala123
Już troche pogubiłem z tym się dziś. Co dalej?
Niree
$query_time= "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < $times";

Popatrz na warunek czasu. Napisałem Ci, że time musi być większe od $times. Ty dałeś na odwrót.
woxala123
To jest teraz jak piszesz i nadal to samo dodae i wyskakuje komunikat dodałeś rekord w czasie
  1. $times = time("H:m:s");
  2. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  3. mysql_select_db($database_local, $local);
  4. $query_time= "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < $times";
  5. $Res = mysql_query($query_time, $local) or die(mysql_error());
  6.  
  7.  
  8. if(mysql_num_rows($Res) !=0){
  9. echo '<center>Oddajesz rekord po czasie!!!</center>';
  10.  
  11. } else {
  12. echo '<center>Dodano rekord w czasie!</center>';
  13.  
  14. }
  15. mysql_select_db($database_local, $local);
  16. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `date` = CURRENT_DATE() ";
  17. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  18.  
  19.  
  20.  
  21. if(mysql_num_rows($Recordset1) == 2){
  22.  
  23. // akcja po znalezieniu że dodał wszystkie rekordy
  24. echo "<center>'Wykorzystałeś limit '".$username."'!'</center>";
  25.  
  26. } else {
  27. // akcja po stwierdzeniu że dodał rekord
  28. echo "<center>' Rekord oddany'</center>";
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. $insertSQL = sprintf("INSERT INTO loro (`username`, `bal1`, `bal2`, `bal3`, `bal4`, `bal5`, `bal6`, `date` ) VALUES ('".$username."',$bal1, $bal2, $bal3, $bal4, $bal5, $bal6, (NOW()))",
  36. GetSQLValueString($_POST['hiddenField'], "int"));
  37.  
  38. mysql_select_db($database_local, $local);
  39. $Result1 = mysql_query($insertSQL, $local) or die(mysql_error());
  40.  
  41.  
Niree
...
Nie < tylko >.

Poza tym zły warunek z tym (!= 0), tak logicznie sobie przetłumacz co się dzieje z kodem krok po kroku.
woxala123
I cały czas to samo

  1. $times = time("H:m:s");
  2. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  3. mysql_select_db($database_local, $local);
  4. $query_time= "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < $times";
  5. $Res = mysql_query($query_time, $local) or die(mysql_error());
  6.  
  7.  
  8. if(mysql_num_rows($Res) ==0){
  9. echo '<center>Oddajesz rekord po czasie!!!</center>';
  10.  
  11. } else {
  12. echo '<center>Dodano rekord w czasie!</center>';
  13.  
  14. }
  15. mysql_select_db($database_local, $local);
  16. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `date` = CURRENT_DATE() ";
  17. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  18.  
  19.  
  20.  
  21. if(mysql_num_rows($Recordset1) == 2){
  22.  
  23. // akcja po znalezieniu że dodał wszystkie rekordy
  24. echo "<center>'Wykorzystałeś limit '".$username."'!'</center>";
  25.  
  26. } else {
  27. // akcja po stwierdzeniu że dodał rekord
  28. echo "<center>' Typy oddany'</center>";
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35. $insertSQL = sprintf("INSERT INTO loro (`username`, `bal1`, `bal2`, `bal3`, `bal4`, `bal5`, `bal6`, `date` ) VALUES ('".$username."',$bal1, $bal2, $bal3, $bal4, $bal5, $bal6, (NOW()))",
  36. GetSQLValueString($_POST['hiddenField'], "int"));
  37.  
  38. mysql_select_db($database_local, $local);
  39. $Result1 = mysql_query($insertSQL, $local) or die(mysql_error());
nospor
Sprawdzales w ogole czy $username masz poprawnie ustawione?

echo "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < $times";
I sprawdz jak wyglada to zapytanie. Jesli wg. ciebie jest ok to odpal je w konsoli mysql i zobacz co dokladnie dostaniesz
Niree
`time` < $times

Nie będę tysiąc razy powtarzał, że coś tu jest źle :-)
woxala123
Otrzymuje to
"SELECT * FROM loro WHERE `username` = 'w' AND `time` < 1481439184"

Poprawiłem zmienną co wcześniej podawałeś tzn:
  1. $times = time("H:m:s") na
  2. $times = date("H:m:s")

i daje komunikat
"SELECT * FROM loro WHERE `username` = 'w' AND `time` < 08:12:51" i potem jak wysyłam do zapisu daje komunikat
SELECT * FROM loro WHERE `username` = 'w' AND `time` < 08:12:40You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':12:40' at line 1
Co to może być?
Niree
A dałeś to w cudzysłów? Tą $times w zapytaniu.
arturpiotrowski
a 08:12:51 nie powinno być w cudzysłowie?
Niree
Poza tym masz zły znak większości. To 'time' ma być większy , a nie $times.

Popraw na:
`time` > '".$times."'
woxala123
Poprawiłem i teraz komunikat
SELECT * FROM loro WHERE `username` = 'w' AND `time` > '08:12:28' You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ':12:28' at line 1
Niree
A w tabeli jaką masz godzinę wpisaną?
woxala123
22:00:00 -custom kolumna time

czyli tak ma być
$times = date("G:m:s ");
Niree
W $times daj G:m:s

//tak, tak ma być, tylko bez tej spacji na końcu
woxala123
  1. $times = date("G:m:s");
  2. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  3. mysql_select_db($database_local, $local);
  4. $query_time= "SELECT * FROM loro WHERE `username` = '".$username."' AND`time` > '".$times."'" ;
  5. $Res = mysql_query($query_time, $local) or die(mysql_error());
  6.  
  7.  
  8. if(mysql_num_rows($Res) ==0){
  9. echo '<center>Oddajesz rekord w czasie!!!</center>';
  10.  
  11. } else {
  12. echo '<center>Dodano rekord po czasie!</center>';
  13.  
  14. }
  15. echo "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < '".$times."'";
  16. mysql_select_db($database_local, $local);
  17. $query_Recordset1 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `date` = CURRENT_DATE() ";
  18. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  19.  
  20.  
  21.  
  22. if(mysql_num_rows($Recordset1) == 2){
  23.  
  24. // akcja po znalezieniu że dodał wszystkie rekordy
  25. echo "<center>'Wykorzystałeś limit '".$username."'!'</center>";
  26.  
  27. } else {
  28. // akcja po stwierdzeniu że dodał rekord
  29. echo "<center>' Rekord oddany'</center>";
  30.  

Taka mam wersję i nadal zapisuje -gdy np: ustawię godzinę 08:00:00 czyli teraz gdy ktoś próbuje zapisac po tej godzinie to zapisuje. Dobrze b było by blokowało taką możliwość

A może spróbować tą drogą że robie zmienna $times=date('2016:12:11 08:00:00) i tutaj zacząć porównywać pole time z zmienną.
Tylko jak to ropzpisać wraz z select?

Okey na razie działa na takiej zasadzie oto kod
Mam ustawioną na godzinę 10:00:00 - i teraz jak ktoś chce dodać rekord po tej godzinie to nie dodaje ale jak ustawie wyższą od aktualnej to doda. Tylko pozostała mi rzecz by tylko 2 rekordy wpisywał.
Jest to na razie zbyt prostę rozwiązanie i łopatologiczne gdzie codziennie będę musiał wpisywac wartości pole time Ale jeszcze nad tym rozwiązaniem trzeba pomysleć
  1. $times=date("Y-m-d h"m"s");
  2.  
  3. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  4. mysql_select_db($database_local, $local);
  5. $query_Recordset12 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `time`>='".$times."'";
  6. $Recordset12 = mysql_query($query_Recordset12, $local) or die(mysql_error());
  7. echo "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` < '".$times."'"
  8. ;
  9. if(mysql_num_rows($Recordset12) > 0){
  10.  
  11. // akcja po znalezieniu że dodał wszystkie rekordy
  12. echo "<center>'Próbujesz wstawić rekord po czasie '".$username."'!'</center>";
  13. } else {
  14. // akcja po stwierdzeniu że dodał rekord
  15. echo "<center>' Rekord dodany w czasie'</center>";
  16.  


Czy ktoś moze podać jakieś inne przykłady?

Witam!
Niree albo ktoś inny z fum czy może mi dpowiedzieć na pytanie- czy to jest dobre rozwiązanie?

  1. $times=date("Y-m-d h:m:s");
  2.  
  3. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  4. mysql_select_db($database_local, $local);
  5. $query_Recordset12 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` > '".$times."'";
  6. $Recordset12 = mysql_query($query_Recordset12, $local) or die(mysql_error());
  7.  
  8.  
  9. if(mysql_num_rows($Recordset12) > 2){
  10.  
  11. // akcja po znalezieniu że dodał wszystkie rekordy
  12. echo "<center>'Wykorzystałeś limit na dziś '".$username."'!'</center>";
  13. } else if(mysql_num_rows($Recordset12) < 0){
  14.  
  15. // akcja po znalezieniu że dodał wszystkie rekordy
  16. echo "<center>'Nie możesz dodać rekordu '".$username."'!'</center>";
  17. } else {
  18. // akcja po stwierdzeniu że dodał rekord
  19. echo "<center>' Wstawiłeś rekord w czasie'</center>";
  20.  
Niree
  1. if(mysql_num_rows($Recordset12) > 2){
  2.  
  3. // akcja po znalezieniu przynajmniej dwóch rekordów
  4. echo "<center>'Wykorzystałeś limit na dziś '".$username."'!'</center>";
  5. } else if(mysql_num_rows($Recordset12) == 0){
  6.  
  7. // akcja, gdy ilość wyszukanych rekorów wynosi 0
  8. echo "<center>'Nie możesz dodać rekordu '".$username."'!'</center>";
  9. } else {
  10. // akcja po stwierdzeniu że zarówno limit(2) nie jest przekroczony, jak i ilość rekordów nie wynosi 0
  11. echo "<center>' Wstawiłeś rekord w czasie'</center>";


Nic wielkiego nie zmieniłem, oprócz operatora porównania mysql_num_rows($Recordset12) == 0
Reszta powinna być OK. Działa Ci to w ogóle?
woxala123
Teraz jest tak,że data ustawiona jest 2016-12-13 11:00:00 to nie można dodać rekordu-coś zaczyna juz sue dziać tylko nie tak bo powinien dodawac rekord.
Niree
A dałeś tez datę w $times?

//edit widzę ze dałeś
Dlaczego zmieniłeś format godziny? Czytałeś manuala? Dlaczego wcześniej było G:m:s i czym to się różni od tego co aktualnie masz w $times?
woxala123
Tak dałem datę też w kolumnie time i zmieniłem na datetime
viking
Małe h oznacza 12-godzinny format.
woxala123
A może viking coś konkretnie - dał jakiś przykład. Już próbowałem róznych opcji z ustawieniem daty. teraz wróciłem do czasu G:m:s a w kolumnie Time, typ danych Time
viking
W twoim programowaniu widać gigantyczny chaos. Bardziej strzelasz niż myślisz. Moja rada. Weź kartkę papieru, spisz co chcesz osiągnąć, warunki jakie mają być spełnione. Utwórz na papierze strukturę danych i dopiero to przepisuj do PHP. Coś tu jest nie tak jeśli nie ma znaczenia czy to data, czy czas.
woxala123
Znaczenie ma w tym przypadku teraz czas -Teraz czas mam ustawiony na 15:00:00 - i jest tak że dodaje 2 rekordy gdzie najpierw wyrzuca komunikat-"Dajesz rekord w czasie"- a jak ktos dał już 2 rekordy to wywala mu komunikat Masz juz limit wykorzystany. Tylko jak ustawie godzinę 11:00:00 czyli mniejsza od aktualnego to dodaje rekordy ile razy kliknę. Czyli jeszcze bym musiał dać jakis select co będzie informował że daje rekordy po tym czasie. Tylko zastanawiam jak to najlepiej ująć - Prosze o poradę.
Pozdrawiam.
  1. $query_Recordset12 = "SELECT * FROM loro WHERE `username` = '".$username."' AND `time` > '".$times."'";
  2. $Recordset12 = mysql_query($query_Recordset12, $local) or die(mysql_error());
  3. if(mysql_num_rows($Recordset12) == 2){
  4.  
  5. // akcja po znalezieniu przynajmniej dwóch rekordów
  6. echo "<center>'Masz już dziś limit '".$username."'!'</center>";
  7.  
  8. }else{
  9. echo "<center>'Dajesz rekord w czasie'".$username."'!'</center>";
viking
Czyli dla jednego usera w tabeli loro jest np
woxala123 | 13:21:12
woxala123 | 10:22:15

Jeśli tak to dlaczego countem nie sprawdzisz ile było dodane?
woxala123
Mi cały czas biega o to żeby user nie mógł dodawać rekordu po czasie nawet jak wcześniej nawet nie dawał rekordu-czyli jak zapisuje to w ten sposób

'w''2016-12-13', '15:00:00');
Mogę zrobić następną kolumnę gdzie będzie zapisywać dodanie rekordu automatycznie ale nie chce na razie tego robić.
viking
Ok. A odpowiesz na pytanie wyżej? Bo od tego zależy ile rekordów jest zwracanych.
woxala123
Nie wiem jak to countem sprawdzić-.
viking
select COUNT(*) from loro where czas > CURTIME() AND username = 'w'
woxala123
Zrobiłęm to tak . Ale co mi to da i jakie warunki bym musiał postawić?
[php]
SELECT COUNT(*) FROM loro WHERE `time` >CURTIME() AND `username` = '".$username."'
/php]
viking
Da ci to liczbę rekordów w przedziale czasowym.
Bardziej mnie zastanawia czym ten temat różni się od 4 poprzednich (http://forum.php.pl/index.php?showtopic=253331&hl=) w którym już podobno był działający kod.
woxala123
Tutaj było do konkretnej daty ale tu chodzi by nie było możliwości zapisywania rekordu oo podanym czasie np: ustawionym w custom.
viking
No patrz http://forum.php.pl/index.php?s=&showt...t&p=1205960

Możesz też wkładać przez funkcję:

  1. CREATE PROCEDURE `insertCostam`(
  2. IN `username` VARCHAR(50)
  3. )
  4. LANGUAGE SQL
  5. NOT DETERMINISTIC
  6. CONTAINS SQL
  7. SQL SECURITY DEFINER
  8. COMMENT ''
  9. BEGIN
  10. declare records int;
  11. SELECT COUNT(*) INTO records FROM t1 WHERE czas > CURTIME() AND user = username;
  12. IF records > 2 then
  13. SIGNAL SQLSTATE 'ERR0R' SET MESSAGE_TEXT = 'Błąd...';
  14. end IF;
  15. END
  16.  
  17. call `insertCostam`('test')
woxala123
Tej funkcji nie użyje-nawet nie potrafiłbym jej zastosować. Myślałem może od BETWEEN tzn że w jednej kolumnie mam zdefiniowany czas 06:00:00 a w drugiej kolumnie czas np: 20:00:00 i wtedy
gdzie $times BETWEEN 06:00:00 AND 20:00:00 to by mógł godać rekord a po gdy nie występuję select to nie dodaje rekordu czy to jest dobry pomysł ewentualnie jeśli tak to jak zrobić zapytanie i if.
Pozdrawiam
trueblue
A nie wystarczy Ci jedno zapytanie?

  1. INSERT INTO tabela
  2. SELECT wartosc1,wartosc2,...wartoscN FROM loro WHERE username=XXXX AND time<NOW()
  3. GROUP BY username
  4. HAVING COUNT(*)<1
woxala123
Spróbuję to zastosować późnym wieczorem - bo teraz idę do roboty. Ale jeszcze fajnie by było czy w wartości podawać nazwe kolumn czy godziny które podałem i jeszcze co ta ...wartośćN ?
trueblue
W wartościach wstawiasz albo suche wartości, albo nazwy kolumn. Przy czym jest to zapytanie grupujące, więc...nie wchodząc w szczegóły...może nie działać do końca tak jak chcesz.
Czy wartości, które chcesz wstawić są w tabeli loro? Czas, zakładam, że wstawiasz aktualny, czyli NOW(), a nie wartość kolumny time.
woxala123
Kolumna time jest ustawiona sztywno tzn. że ma okresloną godzine w custom w tym przpadku np16:00:00 lub można zmienić że dzisiejsza data i sztywna godzina. I tylko mi zalezy by user nie mógł dodawac rekordu po wyznaczonym czasie w kolumnie time
trueblue
Przecież od tego jest warunek w klauzli WHERE.
woxala123
okey póżniej to sprawdzę na razie dzięki za zainteresowanie.

Witam!
Sorry że jeszcze wracam do tematu. Ale zrobiłem taką wersję zapisywania do konkretnej godziny.
Oto kawałek kodu.
  1. $date = strtotime(date("Y-m-d H:i:s"));
  2. $date5 = strtotime(date("2016-12-11 22:00:00"));
  3.  
  4. if((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  5. mysql_select_db($database_local, $local);
  6. $query_Recordset1 = "SELECT * FROM loro";
  7. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  8. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  9.  
  10. if ($date > $date5 ){
  11. echo "<center>'Po czasie'".$username."'!'</center>";
  12.  
  13. }else{
  14. mysql_select_db($database_local, $local);
  15. $query_Recordset1 = "SELECT * FROM loro ";
  16. $Recordset1 = mysql_query($query_Recordset1, $local) or die(mysql_error());
  17. $totalRows_Recordset1 = mysql_num_rows($Recordset1);
  18. if($totalRows_Recordset1 >=3){
  19.  
  20. //Jeśli osiągnął 3 rekordy to koniec
  21.  
  22. echo "<center>'Wykorzystałeś limit oddawania głosów'".$username."''</center>";
  23. }else{
  24. echo "<center>'Głosujesz'</center>";

Pytanko -Czy jest to dobre rozwiązanie - czy jest cos takiego żeby zmienna $date5 zmieniała swoją wartośc automatycznie co 24 godziny. pozdrawiam.
nospor
Ty wez w koncu usiadz raz a porzadnie na tych datach bo sie bujasz i bujasz z banalnym kodem

$date5 = strtotime(date("2016-12-11 22:00:00"));

Czy to nie tobie juz mowilem, ze
date('2016-01-01')
to jest to samo co
2016-01-01
?

jak chcesz miec date z danego dnia, to wstawiaj tam formaty daty a nie date z palca...
$date5 = strtotime(date("Y-m-d 22:00:00"));
woxala123
Teraz wyszedł jeden z problem. W momencie gdy jeden z userów doda rekordy inny user już nie może oddać bo wyskakuje komunikat 'Wykorzystałeś limit oddawania głosów'.
Kod powyżej. Jakie założenie trzeba zrobić?
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.