Анкета с PHP и MySQL
Реших да си направя една анкета която да ползва база данни и реших да я споделя със вас. Veryhappy
Анкетата се състои от два файла. Единия е от който се гласува а от другия се преглеждат резултатите.
така първо правим vote.php
<?php
$username = "username";
$pass = "parola";
$host = "localhost";
$db = "bazadanni";
$conn = mysql_connect($host, $username, $pass);
mysql_select_db($db, $conn);
if ($_POST['submit']) {
$ip = $_SERVER['REMOTE_ADDR']; // vzimame IP to na usera
$otg = $_POST['otgovor']; //vzimame otgovora poso4en ot potrebitelq
$time = time(); // vzimame sega6noto vreme
$result = mysql_query("SELECT * FROM vote WHERE ip LIKE '$ip%' ORDER BY time DESC LIMIT 1"); // izvejdame posledniq vot na potrebitelq s tova IP
$res = mysql_fetch_array($result);
$newtime = $res[time] + (24 * 60 * 60); // kym nego vreme dobavqme 1 den
$result1 = mysql_query("SELECT * FROM vote WHERE ip LIKE '$ip%' AND time < $newtime"); // tuk proverqvame dali e minal 1 den ot posledniq vot na potrebitel s tova IP
$res = mysql_num_rows($result1);
if ($res == 0) { // ako proverkata dade rezultat 0 koeto ozna4ava 4e sa minali 24 4asa otkakto e glasuval za posledno usera
mysql_query("INSERT INTO vote (`otg`, `ip`, `time`) VALUES ('$otg', '$ip', '$time')"); // dobavqme vota na potrebitelq
echo "Вие гласувахте успешно";
echo "<a href='viewvote.php'>Виж анкетата</а>";
}
else
{
echo "Вие вече сте гласували през последните 24 часа."; // kazvame 4e ne sa minali 24 4asa otkakto e glasuval.
echo "<a href='viewvote.php'>Виж анкетата</а>";
}
}
else
{ // tuka po4va html koda na anketata
?>
Харесва ли ви анкетата?
<form name="vote" method="POST">
<select name="otgovor">
<option value="Да">Да</option>
<option value="Не">Не</option>
</select>
<input type="submit" name="submit" value="Гласувай">
</form>
<?
} // tuka svar6va
?>

тук първо си променяте името, парола, хоста и базата данни на хоста.
В края на кода където вече е HTML си сменяте въпроса и може да добавяте други отговори.
сега правим файла от който ще гледаме резултатите.
той се казжа viewvote.php
<?php
$username = "username";
$pass = "parola";
$host = "localhost";
$db = "bazadanni";
$conn = mysql_connect($host, $username, $pass);
mysql_select_db($db, $conn);
$res1 = mysql_query("SELECT * FROM vote WHERE otg='Да'");
$da = mysql_num_rows($res1);
$res2 = mysql_query("SELECT * FROM vote WHERE otg='Не'");
$ne = mysql_num_rows($res2);
echo "За отговор Да: ".$da; // izvejdame kolko glasuvali ima za da
echo "<br>За отговор Не: ".$ne; // izvejdame kolko glasuvali ima za ne
?>

Тук също попълвате име парола хост и база данни.
Ако в vote.php сте добавили още отговори тук копирвате тези редове.
$res1 = mysql_query("SELECT * FROM vote WHERE otg='Да'");
$da = mysql_num_rows($res1);

като $res1 го правите на 3 и 4 зависи колко отговора ще имате и otg='вашия отговор'
$da също я променяте може да е като отговора. mysql_num_rows($res3) или вашата заявка.
ето го и SQL кода на тази анкета.
CREATE TABLE `vote` (
`otg` varchar(10) character set cp1251 collate cp1251_bulgarian_ci NOT NULL,
`ip` varchar(20) character set cp1251 collate cp1251_bulgarian_ci NOT NULL,
`time` varchar(11) character set cp1251 collate cp1251_bulgarian_ci NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

това е. Демо ще дам след малко само да я кача на хоста ми.
Урока е подготвен специално за web-tourist.net
надявам се да съм ви бил полезен.



/ Трябва да сте регистриран за да напишете коментар /
От: despper
23:27 11-10-2009
СУПЕЕЕР !
От: Teodotko
1:21 08-05-2010
От колко време качваш демото =)
От: vladeto0o
23:24 19-10-2010
Здравей! Анкетата ти е хубава, но има проблем. При вкарването в базата данни, отговорът, който е отбелязъл потребителя се вкарва с въпросчета, и след това файла viewvote.php не може да изведе колко пъти е гласувано... Ще можеш ли да ми обясниш?
От: Fakeheal
9:59 20-10-2010
@vladeto0o каква ти е колацията на базат данни + тази на страницата, която извежда резултата?
1