Arkadaşlar ben php'ye henüz 1 ay önce başladım yeni yeni öğreniyorum başlangıç olarak basit bir ziyaretçi defteri yazacağım, veritabanı tabloları hepsi tamam ama bir sorum olacak,
Ben ayrıca bir anket koymak istiyorum şıklı olacak ve her ip günde yalnızca 1 kere oylayabilecek, bunun için ben 1-5 e kadar şıklar yapmak istiyorum, ben bunları html ile yaparım ama yukardaki her gün yalnızca 1 kere oy vermek ve oy verdikten sonra orda o gün boyunca ortalama görünecek,
Şimdi tablo adı defter_poll olacak bu tabloyu nasıl oluşturcam ve yukardaki özellikteki bir anketi nasıl yapacağım kodlarını verirmisiniz ?
Değerlendirme ortalaması
5
●576
- 05-12-2008, 19:56:27Üyeliği durduruldu
- 05-12-2008, 20:17:51Bunun için js'de kullanman gerekir anketin yapılacağı dosyanın <head>tagları arasına bu kodu koy;
<script> function add_point(p) { var URL = 'oyver.php?id=<? echo $yaz["id"];?>&oy='+ p ; day = new Date(); id = day.getTime(); eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width=200,height=100,left = 150,top = 150');") } </script>Oylama bölümü html olarak bu şekilde olsun;
<form method="get" style="display:inline">Bu Videoya Puan Verin : <input type="radio" value="1" name="R1" onclick="javascript:add_point('1')" /> 1 <input type="radio" name="R1" value="2" onclick="javascript:add_point('2')" /> 2 <input type="radio" name="R1" value="3" onclick="javascript:add_point('3')" /> 3 <input type="radio" name="R1" value="4" onclick="javascript:add_point('4')" /> 4 <input type="radio" name="R1" value="5" onclick="javascript:add_point('5')" /> 5 <input type="radio" name="R1" value="6" onclick="javascript:add_point('6')" /> 6 <input type="radio" name="R1" value="7" onclick="javascript:add_point('7')" /> 7 <input type="radio" name="R1" value="8" onclick="javascript:add_point('8')" /> 8 <input type="radio" name="R1" value="9" onclick="javascript:add_point('9')" /> 9 <input type="radio" name="R1" value="10" onclick="javascript:add_point('10')" /> 10 </form>Tablo yapısı şu şekilde olur;
CREATE TABLE `oylama` ( `id` int(11) NOT NULL auto_increment, `oy` text NOT NULL, `oy_sayisi` tinyint(4) NOT NULL default '1', `anket_id` text NOT NULL, `ip` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin5 AUTO_INCREMENT=51 ;
Oyları kaydedeceğin yerde de şöyle kullanırsın bu da oyver.php olsun;
<? include("ayar.php"); function real_ip_adress() { global $HTTP_SERVER_VARS; $gizli_ipler = array( '10.0.0.', '192.168.', '127.0.0.', '172.16.0.' ); if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) && $_SERVER['HTTP_X_FORWARDED_FOR'] != '' ) { $ip_strings = explode( ',',$_SERVER['HTTP_X_FORWARDED_FOR']); foreach($ip_strings as $k => $v) { if( empty($v) ) { unset( $ip_strings[$k] ); } else { if(!isset($ip_string)) { $ip_string = $v; } } } } if( isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] != '' ) { $ip_strings[] = $_SERVER['REMOTE_ADDR']; if(!isset($ip_string)) { $ip_string = $_SERVER['REMOTE_ADDR']; } } foreach($ip_strings as $k1 => $ip) { foreach($gizli_ipler as $k2 => $pip) { if(strpos($ip, $pip) === 0) { unset($ip_strings[$k1]); break; } } } if(!empty($ip_strings) ) { foreach( $ip_strings as $v ) { if(!empty($v)) { $ip_string = $v; $is_local_ip = false; break; } } } else { $is_local_ip = true; } return $ip_string; } $ip = real_ip_adress(); $a=$_GET['id']; $oy=$_GET['oy']; $s=mysql_query("SELECT * FROM oylama where ip='$ip' and anket_id='$a'"); $kactane=mysql_num_rows($s); if($kactane>0){ echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="tr" lang="tr"> <head> <META http-equiv=content-type content=text/html;charset=iso-8859-9> <META http-equiv=content-type content=text/html;charset=windows-1254> <META http-equiv=content-type content=text/html;charset=x-mac-turkish></head><table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#999999" width="100%" id="AutoNumber2"> <tr> <td width="100%" bgcolor="#EEEEDD"><span style="font-weight: 700"> <font face="Verdana" style="font-size: 9pt">Uzgunum</font></span></td> </tr> <tr> <td width="100%" bgcolor="#FFFFEE"> <font face="Verdana" style="font-size: 9pt">Daha once bu anket icin oy kullanmissiniz.</font></td> </tr> </table>'; exit; }else{ $sorgu=mysql_query("INSERT INTO oylama (oy, anket_id, ip) values ('$oy', '$a', '$ip')"); if($sorgu){echo '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="tr" lang="tr"> <head> <META http-equiv=content-type content=text/html;charset=iso-8859-9> <META http-equiv=content-type content=text/html;charset=windows-1254> <META http-equiv=content-type content=text/html;charset=x-mac-turkish></head><table border="1" cellpadding="3" cellspacing="0" style="border-collapse: collapse" bordercolor="#999999" width="100%" id="AutoNumber2"> <tr> <td width="100%" bgcolor="#EEEEDD"><span style="font-weight: 700"> <font face="Verdana" style="font-size: 9pt">Tesekkurler</font></span></td> </tr> <tr> <td width="100%" bgcolor="#FFFFEE"> <font face="Verdana" style="font-size: 9pt">Tesekkurler, puaniniz kaydedilmistir.</font></td> </tr> </table>'; exit; }} ?>Biraz uzun oldu ama her işin bir zorluğu vardır
.
- 06-12-2008, 14:37:59Eposta Aktivasyonu GerekmekteBence cookie yöntemini kullan, başkasının oy 1-2 kere kullanmaması için.
- 11-12-2008, 19:33:24Üyeliği durdurulduCookieleri temzileyince tekrar atabilir, pek fark eden birşey yok gibi.Dualwarior adlı üyeden alıntı: mesajı görüntüle
.