Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Система за анкети за вашият сайт и админ панел
  1. Система за анкети за вашият сайт и админ панел
HunteR666
     
Автор  HunteR666 (19.06.2008 23:14)  съобщение до автора
Погледнат  2838 пъти  добави към любими
Оценка  добави коментар
Гласове  1  изпрати на приятел
Коментари  (1)  абонирай се за PHP
    Страница 1 / 1

 



В този урок ще разгледаме на базата на примери създаване на система за анкети за вашият сайт и админ панел. Кодът е с доста пояснения и затова нека започнем директно с примерите:

Първото нещо, което Ви трябва е SQL структрурата на БД. Ето я и нея:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CREATE TABLE `poll` (
`id` int(10) NOT NULL auto_increment,
`vapros` varchar(250) COLLATE utf8_general_ci NOT NULL default '',
`podrejdane` int(1) NOT NULL default '1',
`status` int(1) NOT NULL default '1',
PRIMARY KEY (`id`)
)
;

CREATE TABLE `otgovori` (
`id` int(10) NOT NULL auto_increment,
`id_poll` int(10) NOT NULL,
`otgovor` varchar(250) COLLATE utf8_general_ci NOT NULL default '',
`broi` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
)
;

CREATE TABLE `ips` (
`id` int(10) NOT NULL,
`ip` varchar(25) COLLATE utf8_general_ci NOT NULL default '',
PRIMARY KEY (`id`)
)
;


След като сте създали BD и сте създали таблицата следва да създаден файла за връзка с BD.
Него ще го кръстим config_poll.php
Ето го и него:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$host="localhost";
$dbusername="root";
$dbpassword="";
$db="poll";
$db_conn = mysql_connect("$host", "$dbusername", "$dbpassword")
or die("Не мога да се свържа с BD!");
$conn=mysql_select_db("$db", $db_conn) or die("Не мога да се свържа с BD!");
$chars = "SET NAMES cp1251";
mysql_query($chars);

$pass_admin = "123";
?>


Така мисля, че ви е ясно как да го попълните. Само долу където е променливата $pass_admin променете 123 на паролата, с която желаете да влизате в админ панела.


Нека сега продължим с кода.
Създавате си един файл function_poll.php
В него сложете следният код:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<?php
function poll($promenliva) { // създаваме функция
$ip = getenv("REMOTE_ADDR");
include("config_poll.php"); // добавяме файла за връзка с BD
if (isset($promenliva) && is_numeric($promenliva)) { // проверяваме дали сме задали стойност на функцията и ако сме задали дали е число
$poll_here = mysql_num_rows(mysql_query("SELECT * FROM poll WHERE id = '$promenliva' LIMIT 1")); // взимаме дадената анкета
if ($poll_here > 0) { // ако анкетата съществува нея ще изкарваме в страницата
$poll_query = mysql_query("SELECT * FROM poll WHERE id = '$promenliva' LIMIT 1");
$poll = mysql_fetch_array($poll_query);
$poll_broi = mysql_num_rows($poll_query);
} else { // ако не съществува ще изкараме най-новата добавена анкета
$poll_query = mysql_query("SELECT * FROM poll ORDER BY id DESC LIMIT 1");
$poll = mysql_fetch_array($poll_query);
$poll_broi = mysql_num_rows($poll_query);
}
}
else { // ако не сме избрали точно дадена анкета ще вземеме последната добавена
$poll_query = mysql_query("SELECT * FROM poll ORDER BY id DESC LIMIT 1");
$poll = mysql_fetch_array($poll_query);
$poll_broi = mysql_num_rows($poll_query);
}

if ($poll_broi > 0) { // ако изобщо съществува анкета
if ($poll['status'] == 1) { // проверяваме дали сме включили анкетата
$dali_si_glasuval = mysql_num_rows(mysql_query("SELECT * FROM ips WHERE ip = '$ip' AND id = '".$poll['id']."'"));
if ($dali_si_glasuval == 0) { // проверяваме дали потребителя е гласувал. Ако не е му позволяваме да гласува
if (isset($_POST['submit']) && isset($_POST['vote']) && is_numeric($_POST['vote'])) { // малко защити :P
$vote = $_POST['vote'];
$dali_taq_anketa = mysql_fetch_array(mysql_query("SELECT * FROM otgovori WHERE id = '$vote' LIMIT 1"));
if ($dali_taq_anketa['id_poll'] == $poll['id']) { // проверяваме дали отговора е точно към тази анкета
mysql_query("UPDATE otgovori SET broi = broi + 1 WHERE id = '$vote' LIMIT 1");
mysql_query("INSERT INTO ips (id,ip) VALUES ('".$poll['id']."','$ip')");

if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане
elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове

$query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by");
$query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll");
$votes = mysql_fetch_array($query);
$votes = $votes['kolko'];
?>
<b>
<?=$poll['vapros']?></b><br><br>
<table border="0">
<?php
// изкарваме резултатите от анкетата
while ($row_otgovori = mysql_fetch_array($query_otgovori)) {
$procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите
$procent = round($procent); // закръгляме ги
?>
<tr><td>
<?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr>
<?php
}
?>
</table><br>
Общо гласове: <b>
<?=$votes?></b>
<?php
}
}
else {
$query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' ORDER BY id ASC");
?>
<b>
<?=$poll['vapros']?></b><br><br>
<form action="" method="post">
<?php
// тук извеждаме формата за гласуване с възможните отговори
while ($row_otgovori = mysql_fetch_array($query_otgovori)) { ?>
<input type="radio" name="vote" value="
<?=$row_otgovori['id']?>"> <?=$row_otgovori['otgovor']?><br>
<?php } ?>
<input type="submit" name="submit" value="Гласувай">
</form>
<?php
}
}
else { // ако е гласувал му извеждаме резултатите
if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане
elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове

$query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by");
$query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll");
$votes = mysql_fetch_array($query);
$votes = $votes['kolko'];
?>
<b>
<?=$poll['vapros']?></b><br><br>
<table border="0">
<?php
// изкарваме резултатите от анкетата
while ($row_otgovori = mysql_fetch_array($query_otgovori)) {
$procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите
$procent = round($procent); // закръгляме ги
?>
<tr><td>
<?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr>
<?php
}
?>
</table><br>
Общо гласове: <b>
<?=$votes?></b>
<?php
}
}
else { // ако е изключена ще показваме само резултатите без да даваме право да гласуват
if ($poll['podrejdane'] == 1) { $order_by = "ORDER BY id ASC"; } // ако е избран тип стандартно подреждане
elseif ($poll['podrejdane'] == 2) { $order_by = "ORDER BY broi DESC"; } // ако е избран тип подреждане по гласове

$query_otgovori = mysql_query("SELECT * FROM otgovori WHERE id_poll = '".$poll['id']."' $order_by");
$query = mysql_query("SELECT SUM(broi) as kolko FROM otgovori WHERE id_poll = '".$poll['id']."' GROUP BY id_poll");
$votes = mysql_fetch_array($query);
$votes = $votes['kolko'];
?>
<b>
<?=$poll['vapros']?></b><br><br>
<table border="0">
<?php
// изкарваме резултатите от анкетата
while ($row_otgovori = mysql_fetch_array($query_otgovori)) {
$procent = $row_otgovori['broi'] * (100/$votes); // смятаме процентите
$procent = round($procent); // закръгляме ги
?>
<tr><td>
<?=$row_otgovori['otgovor']?></td><td><img src="bar_left.bmp" height="9" border="0"><img src="vote.bmp" width="<?=$procent?>" height="9" border="0"><img src="bar_right.bmp" height="9" border="0"></td><td>Гласове: <?=$row_otgovori['broi']?> (<?=$procent?>%)</td></tr>
<?php
}
?>
</table><br>
Общо гласове: <b>
<?=$votes?></b>
<?php
}
}
else {
echo "Няма такава анкета или все още няма добавени анкети!"; // изкарваме съобщение, че няма такава анкета или изобщо не сме добавили
}
}
?>

Този код може да не го закачате. Разбира се ако желаете да променяте нещо може да го направите стига да знаете как.


Сега следва и админ панела. Създайте си файл admin.php (това е примерно име). В него сложете следният код:

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
<?php
session_start();
include("config_poll.php");
$admin = $HTTP_SESSION_VARS['admin'];
if (isset($HTTP_SESSION_VARS['admin']) && $admin == 1) {
echo "<a href="?page=add">Добави анкета</a><br><br>";
$page = $_GET['page'];
if ($page == "edit" && isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
$query_poll_exzit = mysql_query("SELECT * FROM poll WHERE id = '$id' LIMIT 1");
$dali_poll_exzit = mysql_num_rows($query_poll_exzit);
if ($dali_poll_exzit > 0) {
if (isset($_POST['submit'])) {
if ($_POST['vapros_edit'] != NULL && ($_POST['podrejdane_edit'] == 1 || $_POST['podrejdane_edit'] == 2) && ($_POST['off_poll'] == 0 || $_POST['off_poll'] == 1)) {
mysql_query("UPDATE poll SET vapros = '".$_POST['vapros_edit']."',podrejdane = '".$_POST['podrejdane_edit']."',status = '".$_POST['off_poll']."' WHERE id = '$id' LIMIT 1");

$query_otgovorite = mysql_query("SELECT * FROM otgovori WHERE id_poll = '$id' ORDER BY id ASC");
while ($otgovorite = mysql_fetch_array($query_otgovorite)) {
$idtoo = $otgovorite['id'];
mysql_query("UPDATE otgovori SET otgovor = '".$_POST["otgovor_$idtoo"]."' WHERE id = '".$otgovorite['id']."'");
}
echo "<META HTTP-EQUIV="refresh" CONTENT="3;URL=?" >";
echo "<b>Анкетата е редактирана успешно!</b>";
}
}
else {
$poll_exzit = mysql_fetch_array($query_poll_exzit);
$query_otgovorite = mysql_query("SELECT * FROM otgovori WHERE id_poll = '$id' ORDER BY id ASC");
?>
<form action="" method="post">
Въпрос: <input type="text" name="vapros_edit" value="
<?=$poll_exzit['vapros']?>" size="50"><br><br>
<?php
$nomer = 1;
while ($otgovorite = mysql_fetch_array($query_otgovorite)) {
?>
Отговор
<?=$nomer?>: <input type="text" name="otgovor_<?=$otgovorite['id']?>" value="<?=$otgovorite['otgovor']?>" size="50"><br>
<?php
$nomer++;
}
?><br>
Подреждане: <select name="podrejdane_edit">
<option value="1"
<?php if ($poll_exzit['podrejdane'] == 1) { echo " selected="selected""; } ?>>Стандартно</option>
<option value="2"
<?php if ($poll_exzit['podrejdane'] == 2) { echo " selected="selected""; } ?>>Брой отговори</option>
</select><br>
Изключване на гласуването: <select name="off_poll">
<option value="1"
<?php if ($poll_exzit['status'] == 1) { echo " selected="selected""; } ?>>Не</option>
<option value="0"
<?php if ($poll_exzit['status'] == 0) { echo " selected="selected""; } ?>>Да</option>
</select><br>
<input type="submit" name="submit" value="Редактирай">
</form>
<?php
}
}
else {
echo "Не съществува такава анкета!";
}
?>
<?php
}
elseif ($page == "add")
{
if (isset($_POST['submit'])) {
$kolko_otgovora = 0;
for ($i=1;$i<=15;$i++) {
$otgovor4e = trim($_POST["otgovor_$i"]);
if ($otgovor4e != NULL) {
$otgovorite[] = $otgovor4e;
$kolko_otgovora++;
}
}

if ($kolko_otgovora >= 2 && $_POST['vapros'] != NULL && ($_POST['podrejdane'] == 1 || $_POST['podrejdane'] == 2)) {
$kolko_otgovori = count($otgovorite);
mysql_query("INSERT INTO poll (vapros,podrejdane) VALUES ('".$_POST['vapros']."','".$_POST['podrejdane']."')");

$posleden_id = mysql_fetch_array(mysql_query("SELECT * FROM poll ORDER BY id DESC LIMIT 1"));
$posleden_id = $posleden_id['id'];
for ($no=0;$no<$kolko_otgovori;$no++) {
if ($otgovorite[$no] != NULL) {
mysql_query("INSERT INTO otgovori (id_poll,otgovor) VALUES ('$posleden_id','$otgovorite[$no]')");
}
}
echo "<b>Анкетата е успешно създадена!</b>";
echo "<META HTTP-EQUIV="refresh" CONTENT="3;URL=?" >";
} else { echo "Не сте въвели въпрос или не сте въвели най-малко 2 отговора!"; }

}
else {
?>
<form action="" method="post">
Въпрос: <input type="text" name="vapros" size="50"><br><br>
<?php
for ($i=1;$i<=15;$i++) {
?>
Отговор
<?=$i?>: <input type="text" name="otgovor_<?=$i?>" size="50"><br>
<?php
}
?>
<br>
Подреждане: <select name="podrejdane">
<option value="1">Стандартно</option>
<option value="2">Брой отговори</option>
</select><br>
<input type="submit" name="submit" value="Създай">
</form>
<?php
}
}
elseif ($page == "dell" && isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
mysql_query("DELETE FROM poll WHERE id = '$id'");
mysql_query("DELETE FROM otgovori WHERE id_poll = '$id'");
mysql_query("DELETE FROM ips WHERE id = '$id'");
echo "Анкетата е успешно изтрита!";
echo "<META HTTP-EQUIV="refresh" CONTENT="3;URL=?" >";
}
else
{
$query_polls = mysql_query("SELECT * FROM poll ORDER BY id DESC");
?>
<table border="1">
<tr><td><b>ID:</b></td><td><b>Анкета</b></td><td><b>Опции</b></td></tr>
<?php
while ($polls = mysql_fetch_array($query_polls)) {
?>
<tr><td>
<?=$polls['id']?></td><td><?=$polls['vapros']?></td><td>[<a href="?page=edit&id=<?=$polls['id']?>">Редактирай</a>] [<a href="?page=dell&id=<?=$polls['id']?>">Изтрий</a>]</td></tr>
<?php
}
?>
</table>
<?php
}
if ($page == "logout") { $HTTP_SESSION_VARS['admin'] = 0; echo "<META HTTP-EQUIV="refresh" CONTENT="1;URL=?" >"; }
echo "<br><br><a href="?page=logout">Изход</a>";
} else {
if (isset($_POST['submit']) && $_POST['pass_admin'] == $pass_admin) {
$HTTP_SESSION_VARS['admin'] = 1;
echo "<META HTTP-EQUIV="refresh" CONTENT="1;URL=?" >";
} else {
?>
<form action="" method="post">
Парола: <input type="password" name="pass_admin" size="10">
<input type="submit" name="submit" value="Влез">
</form>
<?php
}
}
?>


И след като ги имате тези файлове. Може да влезете в админ панела и да създадете анкета. Ето как може да добавите анкетата в страницата, която си пожелаете:


Например искате да добавите анкета в страницата index.php. Добавяте някъде най-отгоре във файла следният код:

CODE
1
<?php include("function_poll.php"); ?>

Така ще включите функцията с анкетите.

Сега е най-лесното. Там където искате да поставите анкетата просто трябва да сложите следният код:

CODE
1
<?php @poll(); ?>

Така автоматично ще се появи последната от вас създадена анкета в админ панела. Ако желаете примерно в друга страница да поставите точно определена анкета трябва да поставите този код:

CODE
1
<?php @poll(1); ?>

Както виждате между скобите сме сложили 1. Какво точно прави тя? Това е ID на самата анкета. Ако желаете да поставите точно дадена анкета влизате в admin панела, виждате ID-то й и и после между скобите в кода по-горе слагате ID на анкетата и тя ще се появи.


Това е всичко. Надявам се кода да ви е харесал.


Кода е авторски и забранявам преписването му в други сайтове без мое съгласие или съгласието на админа!



   


Ключови думи: админ панел система за анкети PHP MySQL


Още уроци от тази рубрика