Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Sonda
dg2001
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

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


Witam, jako ze pierwszy raz wrzucam swój kod na te forum, proszę o wyrozumiałość.

Ostatnio potrzebny był mi skrypt sondy, jednak wszystkie skrypty dostępne w internecie nie za bardzo mnie zadowoliły, wiec postanowiłem napisać sam coś swojego.

Więc tu moja prośba, o ocenę mojego skryptu (IMG:style_emoticons/default/smile.gif)

  1. <?php
  2. //@autor: Dominik Gawenda
  3. //@wersja: 1.0 | 2010-07-20
  4. //@skrypt sondy
  5. if($mod_sonda !=0) {
  6. if(isset($_POST['glosuj'])) {
  7. $sonda_id = $_POST['sonda_id'];
  8. $pozycja_sondy = $_POST['sonda'];
  9.  
  10. $sSql = mysql_query("SELECT id,ilosc_glosow FROM sonda WHERE id = '".$sonda_id."' ");
  11. $sDane = mysql_fetch_assoc($sSql);
  12. $nowa_ilosc_glosow = $sDane['ilosc_glosow'] + 1;
  13.  
  14. $ssSql = mysql_query("SELECT id,ilosc_glosow FROM sonda_dane WHERE id = '".$pozycja_sondy."' ");
  15. $ssDane = mysql_fetch_assoc($ssSql);
  16. $nowa_ilosc_glosow_pozycja = $ssDane['ilosc_glosow'] + 1;
  17.  
  18. setcookie('sonda'.$sDane['id'], $sDane['id'], time()+60*60*24*365);
  19.  
  20. $update1 = mysql_query("UPDATE sonda SET ilosc_glosow = '".$nowa_ilosc_glosow."' WHERE id=".$sDane['id']." ");
  21. $update2 = mysql_query("UPDATE sonda_dane SET ilosc_glosow = '".$nowa_ilosc_glosow_pozycja."' WHERE id = '".$ssDane['id']."' ");
  22.  
  23. header('Location: '.$config_url);
  24. exit();
  25. }
  26. $sSql = mysql_query("SELECT * FROM sonda WHERE aktywny = '1' ");
  27. $sIle = mysql_num_rows($sSql);
  28. if($sIle != 0) {
  29. while ($sDane = mysql_fetch_assoc($sSql)) {
  30. echo '<div class="box1">';
  31. echo '<div style="text-align:center;padding-bottom:10px;"><b>'.$sDane['nazwa'].'</b><br />'.$sDane['opis'].'</div>';
  32. $ssSql = mysql_query("SELECT * FROM sonda_dane WHERE id_sonda = '".$sDane['id']."' ");
  33. if(isset($_COOKIE['sonda'.$sDane['id']])) {
  34. while ($ssDane = mysql_fetch_assoc($ssSql)) {
  35. $procent = @round(($ssDane['ilosc_glosow'] / $sDane['ilosc_glosow']) * 100);
  36. echo '<div><b>'.$ssDane['pytanie'].'</b> ('.$procent.'%)<div style="background:#ff7e01;width:'.$procent.'%;height:10px;margin:5px 0px 5px 0px;"></div></div>';
  37. }
  38. } else {
  39. echo '<form action="'.$SCRIPT_NAME.'" method="post" name="sonda">';
  40. while ($ssDane = mysql_fetch_assoc($ssSql)) {
  41. echo '<div style="padding:5px;"><input type="hidden" name="sonda_id" value="'.$sDane['id'].'" /><input type="radio" name="sonda" value="'.$ssDane['id'].'" /> <b>'.$ssDane['pytanie'].'</b></div>';
  42. }
  43. echo '<input type="submit" name="glosuj" value="GŁOSUJ" class="sz_buton"><br style="clear:both" /></form>';
  44. }
  45. echo '<div style="text-align:center;padding-top:10px;">Głos oddało: '.$sDane['ilosc_glosow'].' '.Osoby($sDane['ilosc_glosow']).'</div></div>';
  46. }
  47. }
  48. }
  49. ?>


Powyżej skrypt sondy, bez panelu administracyjnego, gdyż jeszcze nie zrobiłem go (IMG:style_emoticons/default/biggrin.gif)
Poniżej prezentacja tabel bazy

Tabela SONDA
  1.  
  2. --
  3. -- Struktura tabeli dla `sonda`
  4. --
  5.  
  6. CREATE TABLE IF NOT EXISTS `sonda` (
  7. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  8. `nazwa` varchar(250) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  9. `opis` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  10. `ilosc_glosow` int(11) NOT NULL,
  11. `autor` varchar(250) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  12. `data_od` date NOT NULL,
  13. `data_do` date NOT NULL,
  14. `aktywny` tinyint(1) NOT NULL,
  15. PRIMARY KEY (`id`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;


i dla tabeli SONDA_DANE
  1. CREATE TABLE IF NOT EXISTS `sonda_dane` (
  2. `id` tinyint(4) NOT NULL AUTO_INCREMENT,
  3. `id_sonda` tinyint(4) NOT NULL,
  4. `pytanie` varchar(250) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  5. `ilosc_glosow` int(11) NOT NULL,
  6. `aktywny` tinyint(1) NOT NULL,
  7. PRIMARY KEY (`id`)
  8. ) ENGINE=MyISAM DEFAULT CHARSET=latin1 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=9 ;


Ktoś zapyta dlaczego w dwóch tabelach? Dla tego gdyż skrypt przygotowany dla więcej niże 1 sondy, dlatego opis sondy jest trzymany w osobnej tabeli niż dane dla sondy.

Proszę o ocenę mojego skryptu i ewentualne uwagi co by poprawić. Zastanawiam się jeszcze jak by można mocniej zabezpieczyć sondę, gdyż aktualnie korzysta wyłącznie z ciasteczek. Myślałem jeszcze od zapisywaniu adresów IP w pliku (nie chce zaśmiecać tym bazy) i ewentualnie również sprawdzać czy z takiego IP już głosowano w przypadku ręcznego usunięcia ciastka (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:32