Нормална анкета

  • Автор Автор Rex
  • Начална дата Начална дата

Rex

Registered
Ае тука има сложени едни анкети като уроци, ама има все някакъв кусур, например:

1ната е хостване от уеб турист
2рата не работи на мен показва ми грешка
3тата може да се гласува от всеки


Виждам доста от вас си имат анкети, можете ли да ми дадете една такава ? Сега ще се поровя из хотскриптс.ком ама и от вас да имам. ПП: По възможност да е с графика. Благодаря :oops:
 
Дръпнах я, пуснах версията с текстови файлове, направих си анкета, но не отчита гласа, показва после че съм гласувал вече.

Пробвах версията с дата база. Инсталнах я ама имах грешки.

Пробвах още едни ама и те са боза :cry:
 
SharkpenT каза:
Аз използвам тази: Линк

С графика е
тази дава грешка на sendwote.php аз съм я оправил.

коя ти дава грешка? тази дет при самото гласуване, че не може да се модифицира хедъра ли???

ето ти я преработена... така трябва да ти работи.

Код:
 CREATE TABLE `ip` (
`ip_id` int(11) NOT NULL auto_increment,
`v_id` varchar(10) NOT NULL,
`uip` varchar(250) NOT NULL,
PRIMARY KEY (`ip_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

CREATE TABLE `otgovori` (
`o_id` int(11) NOT NULL auto_increment,
`v_id` varchar(5) NOT NULL,
`otgovor` varchar(250) character set cp1251 NOT NULL,
`rezultat` varchar(10) NOT NULL,
PRIMARY KEY (`o_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;

CREATE TABLE `vaprosi` (
`v_id` int(11) NOT NULL auto_increment,
`vapros` varchar(250) character set cp1251 NOT NULL,
PRIMARY KEY (`v_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=0 ;


conn.php

Код:
<?php
$user="****"; // Базаданни потребител
$password="*****"; // Базаданни парола
$database="******"; // Име на Базата данни
$link=mysql_connect('localhost',$user,$password);
$db=mysql_select_db($database);
?>


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);
}

}
//този код се изпълнява преди формата да бъде изпълнена
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>";
}
?>


index.php

Код:
<?php
include('conn.php'); // Инклудваме конфиг файла
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя
$sql="SELECT * FROM vaprosi ORDER BY v_id DESC LIMIT 0 , 1"; //Селектираме последния записан въпрос в БД
$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);
?>


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">";
?>

За графиката при показване на резултатите ще ви трябват следните картинки
http://web-tourist.net/project/mute/bar_left.gif
http://web-tourist.net/project/mute/vote.gif
http://web-tourist.net/project/mute/bar_right.gif
 
ся пробвах - става,ама когато напиша на бъларски въпрос излиза с ???? ???? ??
 
преди всяко обръщане към MySQL сложи ето това:

Код:
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
 
пример с index.php


Код:
<?php
include('conn.php'); // Инклудваме конфиг файла
$ip= getenv("REMOTE_ADDR"); //Взимаме ИП адреса на потребителя

$chars="SET CHARACTER SET cp1251";mysql_query($chars);

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

$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$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

$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$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){

$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$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{
//Селектираме отговорите от таблица отговори за съответния въпрос
$chars="SET CHARACTER SET cp1251";mysql_query($chars);
$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);
?>
 
mute каза:
има изнесена връзката с ДБ в отделен файл сложи го там (conn.php)

хич не се сетих за него... от вратата на компа и така става :oops:
 

Back
Горе