Как се прави сайт за анкети

m1t3

Registered
Access каза:
погледни тоя урок:

http://web-tourist.net/login/login/view.php?st=910

Аз питам как който влезе да може да си земе код за анкети дето да се поддържат на моя сървар
 

jooorooo

Registered
да точно този урок ти върши работа с малко промяна :) на index.php

http://webjo.no-ip.org/anketa/?id=1

http://webjo.no-ip.org/anketa/?id=2

Ето ти индекса с промени :)
само си нагоди в addnew.php да показва адреса на създадената анкета.

Код:
<?php 
include('conn.php'); // Инклудваме конфиг файла 
$id=$_GET['id'];
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя 
$sql="SELECT * FROM vaprosi WHERE v_id='$id'"; //Селектираме последния записан въпрос в БД 
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 
$vapros=$red['vapros'];//Това е променливата с въпроса 
$v_id=$red['v_id']; //Това е променливата с ИД номера на въпроса 

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Селектираме от таблицата с ИП адреси дали има записан ИП адреса на потребителя и ИД на въпроса , т.е. дали е гласувал вече. 
$rez1=mysql_query($sql1,$link); 
$chekip=mysql_num_rows($rez1); //Ако даден потребител е гласувал ще върне резултат по голям от 0 в противен случаи ще върне 0 

$sql1="SELECT * FROM ip WHERE `v_id` LIKE '$v_id'"; 
$rez1=mysql_query($sql1,$link); 
$broiip=mysql_num_rows($rez1); //Взимаме броя на общо гласувалите в анкетата като селектираме ИП адресите които са записани за даден въпрос 

echo $vapros."<br /><br />"; //Принтираме Въпроса 


//Проверяваме дали потребителя е гласувал ако не е изписваме формата за гласуване 
if($chekip==0){ 


$sql="SELECT * FROM otgovori WHERE v_id LIKE '$v_id'";//Селектираме всички отговори със ИД($v_id) на въпроса. 
$rez=mysql_query($sql,$link); 


echo"<form action=\"sendvote.php\" method=\"POST\" >"; 

//С цикала while принтираме отговорите 
while($red=mysql_fetch_array($rez)){ 
//С радио бутона изпращаме $о_id ( ид на въпроса) към формата такаче да бъде променено точно това поле от БД. 
echo $red['otgovor']."<input type=\"radio\" name=\"vote\" value=\"".$red['o_id']."\" /><br />"; 
} 
echo"<input type=\"submit\" /></form>"; 
} 


//Тази част от кода се изпалнява ако потребителя вече е гласувал т.е. акo $chekip получи стоиност по голяма от 0 
else{ 
//Селектираме отговорите от таблица отговори за съответния въпрос 
$sql="SELECT * FROM otgovori WHERE v_id LIKE '$v_id'"; 
$rez=mysql_query($sql,$link); 

//Отново с цикъл ги принтираме 
while($red=mysql_fetch_array($rez)){ 

echo $red['otgovor']." ".$red['rezultat']." "; 
$procent=$red['rezultat']*(100/$broiip) ;//Пресмятаме ги в проценти 

echo "<img src=\"bar_left.gif\" alt=\"\" border\"0\" /><img src=\"vote.gif\" style=\"width:$procent; height:9px\" alt=\"\" border\"0\" /><img src=\"bar_right.gif\" alt=\"\" border\"0\" /><br />"; 
} 

} 

mysql_close($link); 
?>
 

jooorooo

Registered
Направих и промени в sendvote.php, че даваше грешка.

Код:
<?php 
$vote=$_POST['vote'];//Присвояваме стойноста на въпроса 
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя 
include('conn.php');//Инклудваме конфиг файла 
$sql="SELECT * FROM otgovori WHERE o_id LIKE '$vote'";//Селектираме от таблицата с отговори отговора които съответства на $vote ( на изпратения отговор ) 
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 

$v_id=$red['v_id']; 
$tvote=$red['rezultat']; 

$tvote++ ; 

$sql1="SELECT * FROM ip WHERE `uip` LIKE '$ip' AND `v_id` LIKE '$v_id' ";//Проверяваме дали този потребител вече не е гласувал 
$rez1=mysql_query($sql1,$link); 
$chekip=mysql_num_rows($rez1);//Проверяваме дали този потребител вече не е гласувал 

//Ако не е гласувал записваме в полето с ИД които сме приели от $vote стоиноста на $tvote 
if($chekip==0){ 
$sql="UPDATE otgovori SET rezultat='$tvote' WHERE o_id='$vote'"; 
$rez=mysql_query($sql,$link); 

$sql="INSERT ip (v_id , uip) VALUES ('$v_id', '$ip')"; 
$rez=mysql_query($sql,$link); 
} 
//Ако потребителя вече е гласувал ... 
else {echo "Вие вече сте гласували!";} 
mysql_close($link); 
//Пренасочваме го към страницата от която идва 
$refe=getenv("HTTP_REFERER"); 
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0; URL=$refe\">"; 
?>

само да модна и addnew и ще дам кода :)
 

m1t3

Registered
addnew.php служи за добавяне на нови анкети нали :)

А как ще стане само регнати потребители да могат да правят анкети
 

m1t3

Registered
Много ти благодаря ама нали имаше едно копираи този код в сайта си
за да се вижда анкетата
 

jooorooo

Registered
махнах си предишното мнение.

за демо.
http://webjo.no-ip.org/anketa/addnew.php

ето и кода на addnew.php

Код:
<?php 
//Първо проверяваме дали има изпратена стойност от формата ако има записваме това което сме изпратили от формата ако няма на екрана се появява формата. 
if (isset($_POST['submit'])) { 
$vapros=$_POST['vapros']; // Взимаме въпроса изпратен от формата. 
$otg=array(); // Създаваме масив от отговори и цикъл с които ще ги ги вкараме в масива. 
for($i=0;$i<=15;$i++){ 
$otg[$i]=$_POST['otg'.$i];//Взимаме отговорите изпратени от формата. 
} 

//Понеже от формата изпращаме и присвояваме 16 полета а анкетата която сме създали може да има по малко отговори трябва да премахнем празните елементи от масива. 
foreach($otg as $i => $value) { 
if($value == "") {unset($otg[$i]);} 
} 


$realotg= array_values($otg); //Това е новия масив с всички отговори 
$broi=count($realotg); // Преброяваме елементите в масива 

include('conn.php');//Инклудваме конфиг файла с който се свързваме в БД 
$sql="INSERT vaprosi (vapros) VALUES ('$vapros')";//Записваме въпроса в таблицата vaprosi 
$rez=mysql_query($sql,$link); 

$sql="SELECT * FROM vaprosi ORDER BY v_id DESC LIMIT 0 , 1";//Селектираме най-големия Индивидуалния номер на последния записан въпрос 
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 
$v_id=$red['v_id']; 

$broi=count($realotg)-1; 

//С един дикъл записваме всички отговори в таблицата otgovori 
for($i=0;$i<=$broi;$i++){ 
$sql="INSERT INTO otgovori(`v_id` , `otgovor` , `rezultat`) VALUES ('$v_id','$realotg[$i]','0')"; 
$rez=mysql_query($sql,$link); 
} 
$sql="SELECT * FROM vaprosi ORDER BY v_id DESC LIMIT 0 , 1";
$rez=mysql_query($sql,$link); 
$red=mysql_fetch_array($rez); 
$v_id=$red['v_id'];
//тук трябва да промените пътя до вашия сървър.
echo"Копирайте следния код и го поставете в страницата си.";
echo"<br><br>";

echo"<textarea rows=7 name=anketa cols=50 type=text>
<iframe src=http://webjo.no-ip.org/anketa/index.php?id=$v_id name=anketa width=400 height=200 frameborder=0 scrolling=no></iframe>
</textarea>";


} 
//този код се изпълнява преди формата да бъде изпълнена 
else{ 
echo"<form action=\"addnew.php\" method=\"POST\" />\n"; 
echo"Въпрос<br />"; 
echo"<input type=\"text\" name=\"vapros\" /><br/><br />Отговори<br />\n"; 

// С цикъл 
for($i=0;$i<=15;$i++){ 

echo"<input type=\"text\" name=\"otg".$i."\" style=\"width:400px;\"/><br />\n"; 
} 
echo"<input type=\"submit\" name=\"submit\" /></form>"; 
} 
?>

П.П. този път:

http://webjo.no-ip.org/anketa/

трябва да го едитнеш на този където си качил анкетата.
 

Горе