Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> [PHP]Zapisanie rekordu do konkretnej godziny.
woxala123
post
Post #1





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

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


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

Ten post edytował woxala123 10.12.2016, 19:02:16
Go to the top of the page
+Quote Post
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Eeee... przecież masz już to co chciałeś albo ja Cię nie rozumiem.
Go to the top of the page
+Quote Post
woxala123
post
Post #3





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

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


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.
Go to the top of the page
+Quote Post
olszam
post
Post #4





Grupa: Zarejestrowani
Postów: 342
Pomógł: 23
Dołączył: 20.01.2011
Skąd: Chełm

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


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

Ten post edytował olszam 10.12.2016, 22:20:03
Go to the top of the page
+Quote Post
woxala123
post
Post #5





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

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


  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

Ten post edytował woxala123 10.12.2016, 22:31:44
Go to the top of the page
+Quote Post
Niree
post
Post #6





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

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


$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

Ten post edytował Niree 10.12.2016, 22:47:14
Go to the top of the page
+Quote Post
woxala123
post
Post #7





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

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


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. }


Ten post edytował woxala123 10.12.2016, 22:52:36
Go to the top of the page
+Quote Post
Niree
post
Post #8





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

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


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 .
Go to the top of the page
+Quote Post
woxala123
post
Post #9





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

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


Już troche pogubiłem z tym się dziś. Co dalej?
Go to the top of the page
+Quote Post
Niree
post
Post #10





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

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


$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.
Go to the top of the page
+Quote Post
woxala123
post
Post #11





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

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


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.  


Ten post edytował woxala123 10.12.2016, 23:22:44
Go to the top of the page
+Quote Post
Niree
post
Post #12





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

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


...
Nie < tylko >.

Poza tym zły warunek z tym (!= 0), tak logicznie sobie przetłumacz co się dzieje z kodem krok po kroku.
Go to the top of the page
+Quote Post
woxala123
post
Post #13





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

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


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());
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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





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

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


`time` < $times

Nie będę tysiąc razy powtarzał, że coś tu jest źle :-)
Go to the top of the page
+Quote Post
woxala123
post
Post #16





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

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


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ć?
Go to the top of the page
+Quote Post
Niree
post
Post #17





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

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


A dałeś to w cudzysłów? Tą $times w zapytaniu.
Go to the top of the page
+Quote Post
arturpiotrowski
post
Post #18





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 6.12.2016

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


a 08:12:51 nie powinno być w cudzysłowie?
Go to the top of the page
+Quote Post
Niree
post
Post #19





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

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


Poza tym masz zły znak większości. To 'time' ma być większy , a nie $times.

Popraw na:
`time` > '".$times."'
Go to the top of the page
+Quote Post
woxala123
post
Post #20





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

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


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
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
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 - 13:28