teraz skrypt wygląda tak:
<?php
try
{
$pdo = new PDO
('mysql:host=localhost;dbname=xxxx', 'xxxx', 'xxxx', array(PDO
::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8')); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function showPoll()
{
// Losowanie rekordu
$sql = $pdo->query('SELECT `qid` FROM `questions` WHERE `status` = 0 ORDER BY RAND() LIMIT 1');
$row = $sql->fetch();
$sql = $pdo->prepare('SELECT * FROM `questions` q JOIN `answers` a USING(qid) WHERE a.`qid` = :qid'); //SELECT
{
$stmt = $pdo->prepare('UPDATE `questions` q JOIN `answers` a USING(qid) SET q.`votes` = q.`votes` + 1, a.`vote` = a.`vote` + 1 WHERE q.`qid` = :qid AND a.`aid` = :aid'); //UPDATE
$stmt->bindValue(':qid', $_POST['qid'], PDO::PARAM_INT); //UPDATE
$stmt->bindValue(':aid', $_POST['answer'], PDO::PARAM_INT); //UPDATE
$stmt->execute(); //UPDATE
$sql->bindValue(':qid', $_POST['qid'], PDO::PARAM_INT); //SELECT
$sql->execute(); //SELECT
$data = $sql->fetchAll();
$question = $data[0];
echo '<ul><div style="max-width: 120px;"> <li class="first"><b>'.$question['question'];
echo '<br />Głos został oddany!</li>'; foreach($data as $answer)
{
$percent = round(($answer['vote'] / $answer['votes']) * 100
); echo '<li>'.$answer['answer'].'<br /> głosów: '.$answer['vote'].', '.$percent.'%<br />
<div style="border: 1px solid rgb(158, 152, 131); background: rgb(74, 8, 5); height: 10px; width: '.$percent.'%;"></div></li>';
}
$sql->closeCursor();
}
else
{
$sql->bindValue(':qid', $row['qid'], PDO::PARAM_INT);
$sql->execute();
$data = $sql->fetchAll();
$question = $data[0];
echo '<ul><div style="max-width: 120px;"> <li class="first"><b>'.$question['question'];
if (2==3)
{
echo '<br />Głosowałeś już!</li>'; foreach($data as $answer)
{
$percent = round(($answer['vote'] / $answer['votes']) * 100
); echo '<li>'.$answer['answer'].'<br /> głosów: '.$answer['vote'].', '.$percent.'%<br />
<div style="border: 1px solid rgb(158, 152, 131); background: rgb(74, 8, 5); height: 10px; width: '.$percent.'%;"></div></li>';
}
$sql->closeCursor();
}
else
{
echo '</li><form id="poll" method="post" action="">'; foreach($data as $answer)
{
echo '<li><input type="radio" name="answer" value='.$answer['aid'].' /> '.$answer['answer'].'</li>'; }
$sql->closeCursor();
echo '<li><input type="text" name="qid" value='.$row['qid'].' style="display: none;" /><div align="center"><input class="button" type="submit" value="Oddaj głos!" /></div></li></form>'; }
}
}
}
catch(PDOException $e)
{
}
?>
A baza danych tak:
--
-- Struktura tabeli dla `answers`
--
CREATE TABLE IF NOT EXISTS `answers` (
`aid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`qid` int(10) NOT NULL,
`answer` text COLLATE utf8_polish_ci NOT NULL,
`vote` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`aid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=5 ;
--
-- Zrzut danych tabeli `answers`
--
INSERT INTO `answers` (`aid`, `qid`, `answer`, `vote`) VALUES
(1, 2, 'asddasdadasdasdasdasdasdasdds', 11),
(2, 1, 'wswewew', 2),
(3, 1, 'cxcxzczxcxz', 0),
(4, 2, 'czcsadasqwsacaxc', 0);
-- --------------------------------------------------------
--
-- Struktura tabeli dla `logs`
--
CREATE TABLE IF NOT EXISTS `logs` (
`lid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`ip` varchar(50) COLLATE utf8_polish_ci NOT NULL,
`user-agent` text COLLATE utf8_polish_ci NOT NULL,
`time` bigint(30) NOT NULL,
PRIMARY KEY (`lid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;
--
-- Zrzut danych tabeli `logs`
--
-- --------------------------------------------------------
--
-- Struktura tabeli dla `questions`
--
CREATE TABLE IF NOT EXISTS `questions` (
`qid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`question` text COLLATE utf8_polish_ci NOT NULL,
`status` int(1) NOT NULL DEFAULT '0',
`votes` int(10) NOT NULL DEFAULT '0',
PRIMARY KEY (`qid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=11 ;
--
-- Zrzut danych tabeli `questions`
--
INSERT INTO `questions` (`qid`, `question`, `status`, `votes`) VALUES
(1, 'sgfsdfgdfgsdf', 0, 16),
(2, 'dfgdgfdgdfgdf', 0, 18);