dobrý den, snažím se vytvořit anketu podle článku:http://www.pcsvet.cz/art/article.php?id=418
datábáze obou tabulek jsou vytvořeny, nehází to žádnou chybu, ale nevím, kam doplnit tu otázku a 3 možné odpovědi a také ty obrázky, které tvoří grafickou podobu, poradíte prosím? anketa se jinak vůbec nezobrazuje...připojuji ještě kód anketa.php:
<?
require("obecne.php"); // vloží script který se připojí k databázi
// pokud nedošlo k nakonektování proměnná $Con2 = False
// pokud není script volán s parametrem ID najde se poslední aktivní anketa
if (!IsSet($id) and ($Con2!=false))
{
$vysledek=mysql_query("SELECT MAX(anketa_hlavicka.id_anketa) FROM anketa_hlavicka WHERE active='A' ");
$pocet=mysql_num_rows($vysledek);
$id = 0;
if ($pocet != 0)
{
while ($zaznam = MySQL_Fetch_Array($vysledek)):
$id = $zaznam[0];
endwhile;
}
}
// Pokud byla nalezena nějaká anketa resp. nějaké id ankety a je nakonektovaná databáze můžeme pokračovat ve vykreslení ankety
if (($id!=0) and ($Con2!=false))
{
$celkem = 0;
$procento = 1;
// načteme celkový počet odpovědí
$vysledek=mysql_query("SELECT SUM(anketa_odpoved.pocet) FROM anketa_odpoved WHERE id_anketa=$id");
while ($zaznam = MySQL_Fetch_Array($vysledek)):
$celkem = $zaznam[0];
$procento = $celkem/100;
endwhile;
$otazka = "co chlastáte na výletech?";
$a = "N";
// Načteme anketní otázku
$vysledek=mysql_query("SELECT otazka,sirka,active FROM anketa_hlavicka WHERE id_anketa=$id");
while ($zaznam = MySQL_Fetch_Array($vysledek)):
$otazka = $zaznam[0];
$sirka = $zaznam[1];
$a = $zaznam[2];
endwhile;
// Zobrazíme hlavičku ankety
echo "<table width=\"$sirka\" border=1 align=\"center\" bordercolor=\"#FFFFAA\" bgcolor=\"#000070\" style=\"BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; BORDER-RIGHT: medium none; BORDER-TOP: medium none\">\n";
echo "<TBODY>\n";
echo "<tr><td bgcolor=\"#000000\" align=\"center\"><div align=\"center\"><font color=\"White\"><b>$otazka</b></font></div></td></tr>\n";
echo "<tr><td align=\"top\"><FONT size=1 color=\"White\">\n";
echo "<div align=\"center\">Na tuto anketu odpovědělo celkem $celkem lidí</div>\n";
$a = "N";
// vykreslení jednotlivých odpovědí.
$vysledek=mysql_query("SELECT odpoved,barva,pocet,id_odpoved FROM anketa_odpoved WHERE id_anketa=$id");
while ($zaznam = MySQL_Fetch_Array($vysledek)):
$pocet = $zaznam[2];
$pocet_proc = $pocet/$procento;
$sirka_proc = (($sirka-80)/100*$pocet_proc)+10;
$barva = $zaznam[1];
$id_odpoved = $zaznam[3];
echo "<b> $zaznam[0]</b><br>\n";
if ($a=="A") echo "<a href=\"anketa_a01.php?id=$id_odpoved&loc=$SCRIPT_NAME\">";
echo "<IMG border=\"0\" height=\"12\" src=\"$barva\" width=\"$sirka_proc\">";
if ($a=="A") echo "</a>";
echo " $pocet (".Number_Format($pocet_proc,1,","," ")."%)<br>\n";
endwhile;
// Ukončení tabulky ankety
echo "</FONT></td></tr>\n";
echo "</TBODY>\n";
echo "</TABLE><BR>\n";
}
?>
omlouvám se, jsem začátečník a nikde jsem nenašel návod, jak to tam vložit.
Toto jsou ony dvě tabulky, ovšem nevím, kam do nich v phpAdmin napsat tu otázku a odpovědi...poraďte please...)
CREATE TABLE anketa_hlavicka (
id_anketa int(11) NOT NULL auto_increment,
otazka varchar(255) NOT NULL,
active char(2) DEFAULT 'A' NOT NULL,
sirka int(11) DEFAULT '0' NOT NULL,
PRIMARY KEY (id_anketa)
);
CREATE TABLE anketa_odpoved (
id_odpoved int(11) NOT NULL auto_increment,
id_anketa int(11) DEFAULT '0' NOT NULL,
odpoved varchar(255) NOT NULL,
pocet int(11) DEFAULT '0' NOT NULL,
barva varchar(255) NOT NULL,
PRIMARY KEY (id_odpoved),
KEY id_anketa (id_anketa)
to co jsi sem vypsal je pouze sql kód pro vytvoření tabulek které se musí naplnit nějakými údaji ... viz příklad níže ... nezaručuji funkčnost .. ;)
INSERT INTO anketa_hlavicka (otazka, active, sirka) VALUES ('Libi se vam muj veb ?', 'A', '150');
INSERT INTO anketa_odpoved (id_anketa, odpoved, barva) VALUES ('zde musi byt id ankety', 'ano libi', 'zde bude odkaz na obrazek');
tak nějak by to asi mělo fungovat ..
ja mam ankety ve trech tabulkach. Do jedne ukladam definice anket, do druhe moznosti (s id_moznosti+id_ankety jako klicem) a do treti nashromazdene odpovedi (id_ankety, id_moznosti, user_id). Anketu provozuji v systemu pro prihlasene uzivatele (kazdy ma svoje user_id):
CREATE TABLE `ankety` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`title` varchar(255) collate utf8_czech_ci NOT NULL,
`otazka` varchar(255) collate utf8_czech_ci NOT NULL,
`user_id` tinyint(4) NOT NULL,
`timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP,
`aktivni` tinyint(1) NOT NULL default '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci AUTO_INCREMENT=8 ;
CREATE TABLE `ankety_moznosti` (
`id` mediumint(9) NOT NULL,
`id_ankety` smallint(6) NOT NULL,
`title` varchar(255) collate utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`,`id_ankety`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
CREATE TABLE `ankety_odpovedi` (
`id_ankety` smallint(6) NOT NULL,
`id_odpovedi` mediumint(9) NOT NULL,
`user_id` tinyint(4) NOT NULL,
PRIMARY KEY (`id_ankety`,`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
Pouzivam u toho nasledujici dotazy:
Seznam aktivnich anket:
SELECT ankety.id,ankety.title,users.prezdivka,ankety.timestamp
FROM ankety
JOIN users ON users.id=ankety.user_id
WHERE ankety.aktivni=TRUE ORDER BY ankety.timestamp DESC
Detaily ankety:
SELECT ankety.title,users.prezdivka,ankety.timestamp,ankety.otazka
FROM ankety
JOIN users ON user_id=users.id
WHERE ankety.id='$id_ankety'
Vypis moznosti:
SELECT ankety_moznosti.id,ankety_moznosti.title
FROM ankety_moznosti
WHERE ankety_moznosti.id_ankety='$id_ankety'
ORDER BY id ASC
Hlasovani:
/* kazdy uzivatel se svym ID muze hlasovat jednou, pozdejsi hlasovani prepise to minule */
INSERT INTO ankety_odpovedi (id_ankety, id_odpovedi, user_id)
VALUES ('$id_ankety','$id_odpovedi','$user_id')
ON DUPLICATE KEY UPDATE id_odpovedi='$id_odpovedi'
Vypis, kdo jak hlasoval:
SELECT ankety_moznosti.title, users.prezdivka
FROM ankety_odpovedi
JOIN users ON ankety_odpovedi.user_id = users.id
JOIN ankety_moznosti ON ankety_odpovedi.id_odpovedi = ankety_moznosti.id
AND ankety_odpovedi.id_ankety = ankety_moznosti.id_ankety
WHERE ankety_odpovedi.id_ankety = '$_GET[id]'
ORDER BY ankety_odpovedi.id_odpovedi, ankety_odpovedi.user_id
Zobrazeni vysledku:
$result = mysql_query("SELECT ankety_moznosti.title, count(ankety_odpovedi.id_odpovedi) as pocet
FROM ankety_odpovedi
JOIN ankety_moznosti ON ankety_moznosti.id=ankety_odpovedi.id_odpovedi AND ankety_moznosti.id_ankety=ankety_odpovedi.id_ankety
WHERE ankety_odpovedi.id_ankety='$id_ankety' GROUP BY ankety_odpovedi.id_odpovedi ORDER BY pocet DESC");
while($row = mysql_fetch_array($result, MYSQL_NUM)) $odpovedi[$row[0]]=$row[1];
@reset($odpovedi);
$celkem = @array_sum($odpovedi);
if (!is_array($odpovedi)) {$odpovedi = array("Ještě nikdo na tuto otázku neodpověděl." => "1");$celkem++;}
foreach ($odpovedi as $key => $value) echo round(100*$value/$celkem)." % --> $key<br /><br />";
vytvoreni ankety:
INSERT INTO ankety VALUES (NULL,'$nazev_ankety','$anketni_otazka','$user_id',NOW(),'1')
/* $_POST["odpoved"] je pole vytvorene z textovych inputu ve formulari, ktery vytvari ankety */
foreach ($_POST["odpoved"] as $value) $odpoved[] = get_magic_quotes_gpc()? $value : add_slashes($value);
for ($i=1;$i<10;$i++) {
if ($odpoved[$i]=="") continue;
$dotaz .= "('" . ($i+1) . "','$last_id','$odpoved[$i]'), ";
}
$dotaz .= "('1','$last_id','$odpoved[0]')";
$result = mysql_query($dotaz);