Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Oddawanie głosu raz dziennie przez usera
adams1692
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Witam,

Mam pewien kod lecz nie wiem jak go zmodyfikować. Jest to skrypt głosowania na zawodników i chodzi mi o to żeby każdy zarejestrowany użytkownik strony mógł oddać jeden głos na każdego zawodnika a jeżeli zagłosuje na danego zawodnika to pojawia się komunikat zagłosowałeś już dziś na tego zawodnika. Podaję poniżej kod:

  1. $result = dbquery("SELECT id, nazwa, ostatni, zolta, czerwona, info, klub, zdjecie, pozycja, dataurodzenia, miejsce, wzrost, waga, zamieszkanie, pseudonim FROM sklad WHERE id='".$_GET['id']."'");
  2. $data = mysql_fetch_array($result);
  3.  
  4. opentable($data['nazwa']);
  5.  
  6. echo "<table align='center' cellpadding='0' cellspacing='0'>
  7. <tr>
  8. <td valign='middle'><center><img src='/zawodnicy/".$data['zdjecie']."'></center></td>
  9. <td valign='middle'>
  10.  
  11.  
  12. <table height='160' cellspacing='0' rules='rows'>
  13. <tr bgcolor='#f0f0f0'>
  14. <td width='200'><font size='2'><b>Imię i nazwisko:</b></font></td>
  15. <td width='200'><font size='2'><b>".$data['nazwa']."</b></font></td>
  16. </tr>
  17. <tr bgcolor='#d0d0d0'>
  18. <td width='200'><font size='2'><b>Data urodzenia:</b></font></td>
  19. <td width='200'><font size='2'><b>".$data['dataurodzenia']."</b></font></td>
  20. </tr>
  21. <tr bgcolor='#f0f0f0'>
  22. <td width='200'><font size='2'><b>Miejsce urodzenia:</b></font></td>
  23. <td width='200'><img src='/images/polska.png'> <font size='2'><b>".$data['miejsce']."</b></font></td>
  24. </tr>
  25. <tr bgcolor='#d0d0d0'>
  26. <td width='200'><font size='2'><b>Wzrost:</b></font></td>
  27. <td width='200'><font size='2'><b>".$data['wzrost']." cm</b></font></td>
  28. </tr>
  29. <tr bgcolor='#f0f0f0'>
  30. <td width='200'><font size='2'><b>Waga:</b></font></td>
  31. <td width='200'><font size='2'><b>".$data['waga']." kg</b></font></td>
  32. </tr>
  33. <tr bgcolor='#d0d0d0'>
  34. <td width='200'><font size='2'><b>Miejsce zamieszkania:</b></font></td>
  35. <td width='200'><img src='/images/polska.png'> <font size='2'><b>".$data['zamieszkanie']."</b></font></td>
  36. </tr>
  37. <tr bgcolor='#f0f0f0'>
  38. <td width='200'><font size='2'><b>Pseudonim:</b></font></td>
  39. <td width='200'><font size='2'><b>".$data['pseudonim']."</b></font></td>
  40. </tr>
  41. <tr bgcolor='#d0d0d0'>
  42. <td width='200'><font size='2'><b>Poprzedni klub:</b></font></td>
  43. <td width='200'><font size='2'><b>".$data['klub']."</b></font></td>
  44. </tr>
  45. </table>
  46.  
  47.  
  48. </td>
  49. </tr>
  50. </table><br>
  51. <center><a href='/infusions/custom_contact/contact.php' target='blank'><b><font size='2'><font color='red'>UZUPEŁNIJ DANE O ZAWODNIKU</font></font></b></a></center><br />";
  52.  
  53.  
  54. closetable();
  55.  
  56. <?php
  57. if (!defined("IN_FUSION")) { die("Access Denied"); }
  58.  
  59.  
  60. if(isset($_POST['ocen'])){ // sprawdzamy czy kliknięto na przycisk do wysyłania formularza.
  61.  
  62.  
  63. if(!empty($nazwa) and !empty($ocena) and !empty($user)){ // sprawdzamy czy zostały wypełnione wszystkie pola
  64.  
  65.  
  66. $zapytanie = "INSERT INTO oceny SET nazwa='$nazwa', ocena='$ocena', user='$user'";
  67. $wykonaj = mysql_query($zapytanie); // dodajemy rekord do bazy
  68.  
  69. if($wykonaj == 'TRUE'){
  70.  
  71. echo '<table cellpadding="0" width="100%" bgcolor="#d4d4d4"><tr><td><center><b>Oceniono!</b></center></td></tr></table>'; // wyświetlamy komunikat o poprawnym dodaniu rekordu do bazy
  72.  
  73. }
  74.  
  75. } else {
  76.  
  77. echo '<table cellpadding="0" width="100%" bgcolor="#d4d4d4"><tr><td><center><b>Nie wypełniłeś wszystkich pól!</b></center></td></tr></table>'; // wyświetlamy komunikat o błędnym wypełnieniu formularza
  78.  
  79. }
  80.  
  81. }
  82.  
  83. ?>
  84. <?php
  85. global $userdata;
  86.  
  87. $result1 = dbquery("SELECT nazwa, AVG(ocena) as srednia, COUNT(nazwa) as ilosc FROM oceny WHERE nazwa='".$data['nazwa']."'");
  88. $data1 = mysql_fetch_assoc($result1);
  89.  
  90. echo "<center><font size='2'><b>Ocena zawodnika:</b></font><div class='oceny'><center><font class='font_oceny'><strong>".number_format($data1['srednia'], 2, ".", "")."</strong></font></center></div><font size='2'>Oddanych głosów: <b>".$data1['ilosc']."</b></font></center>";
  91. ?>
  92. <br />
  93.  
  94. <?php
  95. if (iMEMBER) {
  96. echo "<form method='POST' action='/zawodnik.php?id=".$data['id']."'>
  97.  
  98. <input name='nazwa' type='hidden' value='".$data['nazwa']."'>
  99. <input name='user' type='hidden' value='".$userdata['user_name']."'>
  100.  
  101.  
  102. <center><font size='2'><b>Oceń zawodnika:</b></font> <select name='ocena' class='textbox'>
  103. <option>1</option>
  104. <option>2</option>
  105. <option>3</option>
  106. <option>4</option>
  107. <option>5</option>
  108. <option>6</option>
  109. <option>7</option>
  110. <option>8</option>
  111. <option>9</option>
  112. <option>10</option>
  113. </select>
  114.  
  115. <input class='button' type='submit' name='ocen' value='Oceń'>
  116. </form></center>";
  117. } else {
  118. echo "<strong><center><font size='2'><b>Głosowanie tylko dla zarejestrowanych!<br><a href='http://mglks.pl/login.php' target='_blank'>Zaloguj się</a> lub <a href='http://mglks.pl/register.php' target='_bank'>zarejestruj</a>.</b></font></strong>";
  119. }
  120.  
  121. ?>


W formularzu przesyłam imię i nazwisko zawodnika jako "nazwa" oraz ukrytą nazwę usera jako user_name pewnie trzeba będzie jeszcze dodać datę ale to już czekam na jakąś pomoc.

Z góry dziękuję.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
valkirek
post
Post #2





Grupa: Zarejestrowani
Postów: 117
Pomógł: 6
Dołączył: 24.07.2013

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


Dodaj w bazie pole z data i sprawdzaj czy głosował dzisiaj
Go to the top of the page
+Quote Post
adams1692
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Powiem szczerze że nawet nie wiem ja się za to zabrać. Proszę o pomoc.
Go to the top of the page
+Quote Post
pedro84
post
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(adams1692 @ 16.09.2013, 21:14:26 ) *
Powiem szczerze że nawet nie wiem ja się za to zabrać. Proszę o pomoc.

Ale z czym mamy Ci pomóc jak nie znasz podstaw? Zleć to komuś za browara i po kłopocie.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
kujol
post
Post #5





Grupa: Zarejestrowani
Postów: 324
Pomógł: 27
Dołączył: 21.07.2013

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


Porównujesz aktualną datę z datą dodania ostatniego głosu. Ale jeśli nie potrafisz podstaw to w tym dziale nie znajdziesz kogoś kto ci to napiszę wink.gif.


--------------------
;)
Go to the top of the page
+Quote Post
adams1692
post
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


No dobra daliście mi do myślenia trochę pokombinowałem i mam takie coś:
  1. <?php
  2.  
  3. $result = dbquery("SELECT id, nazwa, ostatni, zolta, czerwona, info, klub, zdjecie, pozycja, dataurodzenia, miejsce, wzrost, waga, zamieszkanie, pseudonim FROM sklad WHERE id='".$_GET['id']."'");
  4. $data = mysql_fetch_array($result);
  5.  
  6. echo "<table align='center' cellpadding='0' cellspacing='0'>
  7. <tr>
  8. <td valign='middle'><center><img src='/zawodnicy/".$data['zdjecie']."'></center></td>
  9. <td valign='middle'>
  10.  
  11.  
  12. <table height='160' cellspacing='0' rules='rows'>
  13. <tr bgcolor='#f0f0f0'>
  14. <td width='200'><font size='2'><b>Imię i nazwisko:</b></font></td>
  15. <td width='200'><font size='2'><b>".$data['nazwa']."</b></font></td>
  16. </tr>
  17. <tr bgcolor='#d0d0d0'>
  18. <td width='200'><font size='2'><b>Data urodzenia:</b></font></td>
  19. <td width='200'><font size='2'><b>".$data['dataurodzenia']."</b></font></td>
  20. </tr>
  21. <tr bgcolor='#f0f0f0'>
  22. <td width='200'><font size='2'><b>Miejsce urodzenia:</b></font></td>
  23. <td width='200'><img src='/images/polska.png'> <font size='2'><b>".$data['miejsce']."</b></font></td>
  24. </tr>
  25. <tr bgcolor='#d0d0d0'>
  26. <td width='200'><font size='2'><b>Wzrost:</b></font></td>
  27. <td width='200'><font size='2'><b>".$data['wzrost']." cm</b></font></td>
  28. </tr>
  29. <tr bgcolor='#f0f0f0'>
  30. <td width='200'><font size='2'><b>Waga:</b></font></td>
  31. <td width='200'><font size='2'><b>".$data['waga']." kg</b></font></td>
  32. </tr>
  33. <tr bgcolor='#d0d0d0'>
  34. <td width='200'><font size='2'><b>Miejsce zamieszkania:</b></font></td>
  35. <td width='200'><img src='/images/polska.png'> <font size='2'><b>".$data['zamieszkanie']."</b></font></td>
  36. </tr>
  37. <tr bgcolor='#f0f0f0'>
  38. <td width='200'><font size='2'><b>Pseudonim:</b></font></td>
  39. <td width='200'><font size='2'><b>".$data['pseudonim']."</b></font></td>
  40. </tr>
  41. <tr bgcolor='#d0d0d0'>
  42. <td width='200'><font size='2'><b>Poprzedni klub:</b></font></td>
  43. <td width='200'><font size='2'><b>".$data['klub']."</b></font></td>
  44. </tr>
  45. </table>
  46.  
  47.  
  48. </td>
  49. </tr>
  50. </table><br>
  51. <center><a href='/infusions/custom_contact/contact.php' target='blank'><b><font size='2'><font color='red'>UZUPEŁNIJ DANE O ZAWODNIKU</font></font></b></a></center><br />";
  52.  
  53.  
  54.  
  55. if(isset($_POST['ocen'])){ // sprawdzamy czy kliknięto na przycisk do wysyłania formularza.
  56.  
  57.  
  58. if(!empty($nazwa) and !empty($ocena) and !empty($user)){ // sprawdzamy czy zostały wypełnione wszystkie pola
  59.  
  60. $rows = dbquery("SELECT COUNT(*) FROM oceny WHERE nazwa='".$_POST['nazwa']."' AND user='".$userdata['user_name']."' AND date='".date("d.m.Y")."'", 0);
  61.  
  62. if ($rows) {
  63.  
  64. echo "Oddałeś już dziś głos na tego zawodnika!";
  65.  
  66. // wyświetlamy komunikat o błędnym wypełnieniu formularza
  67.  
  68.  
  69. } else {
  70.  
  71. $zapytanie = "INSERT INTO oceny SET nazwa='$nazwa', ocena='$ocena', user='$user', date='".date("d.m.Y")."'";
  72. $wykonaj = mysql_query($zapytanie); // dodajemy rekord do bazy
  73.  
  74.  
  75. echo '<table cellpadding="0" width="100%" bgcolor="#d4d4d4"><tr><td><center><b>Oceniono!</b></center></td></tr></table>';
  76. }
  77. } else {
  78.  
  79. echo '<table cellpadding="0" width="100%" bgcolor="#d4d4d4"><tr><td><center><b>Nie wypełniłeś wszystkich pól!</b></center></td></tr></table>';
  80.  
  81. }
  82.  
  83. }
  84.  
  85. global $userdata;
  86.  
  87. $result1 = dbquery("SELECT nazwa, AVG(ocena) as srednia, COUNT(nazwa) as ilosc FROM oceny WHERE nazwa='".$data['nazwa']."'");
  88. $data1 = mysql_fetch_assoc($result1);
  89.  
  90. echo "<center><font size='2'><b>Ocena zawodnika:</b></font><div class='oceny'><center><font class='font_oceny'><strong>".number_format($data1['srednia'], 2, ".", "")."</strong></font></center></div><font size='2'>Oddanych głosów: <b>".$data1['ilosc']."</b></font></center><br />";
  91.  
  92.  
  93.  
  94. if (iMEMBER) {
  95. echo "<form method='POST' action='/viewpage.php?page_id=267&id=".$data['id']."'>
  96.  
  97. <input name='nazwa' type='hidden' value='".$data['nazwa']."'>
  98. <input name='user' type='hidden' value='".$userdata['user_name']."'>
  99. <input name='date' type='hidden' value='".date("d.m.Y")."'>
  100.  
  101.  
  102. <center><font size='2'><b>Oceń zawodnika:</b></font> <select name='ocena' class='textbox'>
  103. <option>1</option>
  104. <option>2</option>
  105. <option>3</option>
  106. <option>4</option>
  107. <option>5</option>
  108. <option>6</option>
  109. <option>7</option>
  110. <option>8</option>
  111. <option>9</option>
  112. <option>10</option>
  113. </select>
  114.  
  115. <input class='button' type='submit' name='ocen' value='Oceń'>
  116. </form></center>";
  117. } else {
  118. echo "<strong><center><font size='2'><b>Głosowanie tylko dla zarejestrowanych!<br><a href='http://mglks.pl/login.php' target='_blank'>Zaloguj się</a> lub <a href='http://mglks.pl/register.php' target='_bank'>zarejestruj</a>.</b></font></strong>";
  119. }
  120.  
  121. ?>


Jednak coś nie działa więc teraz proszę Was o pomoc. Pozdrawiam
Go to the top of the page
+Quote Post
pedro84
post
Post #7





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Co to znaczy, że "coś nie działa"?

BTW. SqlInjection się kłania.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
adams1692
post
Post #8





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Po wciśnięciu przycisku wyślij bez względu na to czy wcześniej glosowalem na danego zawodnika wyświetla się że głos został oddany.
Go to the top of the page
+Quote Post
pedro84
post
Post #9





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Zobacz sobie co zawiera zmienna $rows.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
adams1692
post
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


Ale co tam jest źle? Bo nie wiem podpowiedz mi proszę.
Go to the top of the page
+Quote Post
kropamk
post
Post #11





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


kolega pedro84 dobrze Ci radzi, ja bym też tam poszukał błędu tzn może nie tyle co błędu ale to co przechowuje ta zmienna a z tego co wiem chcesz sprawdzić czy istnieje w tej tabeli użytkownik z data dzisiejsza a tego nie robisz
Go to the top of the page
+Quote Post
Szamano
post
Post #12





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 11.01.2012

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


Jeśli chcesz aby użytkownik mógł oddać głos raz dziennie musisz dodać kolumnę np czas (int) w bazie i przy INSERCIE dać czas = time()+ 86400 następnie sprawdzasz przy kolejnej próbie oddania głosu czy czas z bazy jest większy od time() jeśli nie robisz INSERTA. Poczytaj o SQL Injection .
Go to the top of the page
+Quote Post
kropamk
post
Post #13





Grupa: Zarejestrowani
Postów: 156
Pomógł: 12
Dołączył: 30.11.2011
Skąd: Gdańsk

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


po co kombinować z time ?

nie wystarczy drobna modyfikacja
  1. $rows = mysql_query("SELECT * FROM oceny WHERE nazwa='" . $_POST['nazwa'] . "' AND user='" . $userdata['user_name'] . "' AND date='" . date("d.m.Y") . "'");
  2.  
  3. if (mysql_num_rows($rows) > 0) {
  4.  
  5. echo "Oddałeś już dziś głos na tego zawodnika!";
  6.  
  7. // wyświetlamy komunikat o błędnym wypełnieniu formularza
  8. } ...


Ten post edytował kropamk 1.10.2013, 21:18:36
Go to the top of the page
+Quote Post
markonix
post
Post #14





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Trzeba się zdecydować czy mowa o 24h czy o danym dniu.
Jeżeli te drugie to w przeciągu minuty o północy jest w stanie oddać 2 głosy co jest raczej niewskazane.


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





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 4.04.2013
Skąd: Uniejów

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


kropamk, o to mi chodziło działa tak jak chciałem dzięki!
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: 19.08.2025 - 23:14