Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

20.05.2008, 20:19
|
|
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме: 30027
Репутация:
2
|
|
помогите с аяксом
Надо выбрать данные из цикла...подробнее...
Есть файл viewthread.php который выбирает из БД опросы если таковые имеются(имеется в виду опросы привязанные к теме форума), там выводит опросы в зависимости голосовал пользователь или нет(тоесть если юзер голосовал то выводит результаты, если неголосовал то выводит варианты ответа...), я приведу только кусок нужного кода
$res_array = dbarray(dbquery("SELECT poll_id FROM ".$db_prefix."forum_thread_polls WHERE thread_id='$thread_id'"));
$result = dbquery("SELECT * FROM ".$db_prefix."forum_polls WHERE poll_index= 'F' AND poll_id= '".$res_array['poll_id']."'");
if (dbrows($result) != 0) {
$data = dbarray($result);
$poll_title = $data['poll_title'];
for ($i=0; $i<=9; $i++) {
if ($data["poll_opt_".$i]) $poll_option[$i] = $data["poll_opt_".$i];
}
if (iMEMBER) $result2 = dbquery("SELECT * FROM ".$db_prefix."forum_poll_votes WHERE vote_user='".$userdata['user_id']."' AND poll_id='".$data['poll_id']."'");
if ( (!iMEMBER || !dbrows($result2)) && $data['poll_ended'] == 0) {
if (!iMEMBER) {
$poll = ""; $i = 0; $num_opts = count($poll_option);
$forum_poll_votes = dbcount("(vote_opt)", "forum_poll_votes", "poll_id='".$data['poll_id']."'");
while ($i < $num_opts) {
$num_votes = dbcount("(vote_opt)", "forum_poll_votes", "vote_opt='$i' AND poll_id='".$data['poll_id']."'");
$opt_votes = ($forum_poll_votes ? number_format(100 / $forum_poll_votes * $num_votes) : 0);
$poll .= "<table width='98%' valign='top' align='center'> <tr>
<td width='30%'>".$poll_option[$i]."</td>
<td width='10%'>[ <b>".$num_votes."</b> ]</td>
<td width='60%'><img src='".FORUM."images/bar_left.gif' height='12'><img src='".FORUM."images/bar.gif' alt='".$poll_option[$i]."' width='$opt_votes' height='12'><img src='".FORUM."images/bar_right.gif' height='12'> [".$opt_votes."%]</td>
</tr></table><br>\n";
$i++;
}
} else {
$poll = ""; $i = 0; $num_opts = count($poll_option);
while ($i < $num_opts) {
$poll .= "<input type='radio' name='voteoption' value='$i'> $poll_option[$i]<br><br>\n";
$i++;
}
}
forumsidex($poll_title);
echo"<div id='all'>";
echo "<table width='98%' align='center'><tr><td><form name='voteform' method='post'>";
echo "$poll<center><input type='hidden' name='poll_id' value='".$data['poll_id']."'>\n";
if (iMEMBER) {
echo "<hr><input type='button' onClick=\"sendRequestPoll('poll','voteform','".$da ta['poll_id']."','$thread_id','".$_REQUEST['voteoption']."')\" value='".$locale['101']."' class='button'></center>\n";
}
echo "</form></td></tr></table>\n";
echo"</div>";
closeforum();
} else {
$poll = ""; $i = 0; $num_opts = count($poll_option);
$forum_poll_votes = dbcount("(vote_opt)", "forum_poll_votes", "poll_id='".$data['poll_id']."'");
forumsidex($poll_title);
echo"<div id='all'>";
echo "<table width='98%' valign='top' align='center'><tr><td>";
while ($i < $num_opts) {
$num_votes = dbcount("(vote_opt)", "forum_poll_votes", "vote_opt='$i' AND poll_id='".$data['poll_id']."'");
$opt_votes = ($forum_poll_votes ? number_format(100 / $forum_poll_votes * $num_votes) : 0);
$poll .= "<table width='98%' valign='top' align='center'> <tr>
<td width='30%'><b>".$poll_option[$i]."</b></td>
<td width='10%'>[ <b>".$num_votes."</b> ]</td>
<td width='60%' valign='center'><img src='".FORUM."images/bar_left.gif' height='12'><img src='".FORUM."images/bar.gif' alt='".$poll_option[$i]."' width='$opt_votes' height='12'><img src='".FORUM."images/bar_right.gif' height='12'> [".$opt_votes."%]</td>
</tr></table><br>\n";
$i++;
}
echo "$poll\n</td></tr></table>";
echo"</div>";
closeforum();
}
}
Кнопка для голосования передает данные скрипту
Код:
function createRequestObject() {
var req;
if(window.XMLHttpRequest){
// Firefox, Safari, Opera...
req = new XMLHttpRequest();
} else if(window.ActiveXObject) {
// Internet Explorer 5+
req = new ActiveXObject("Microsoft.XMLHTTP");
} else {
// There is an error creating the object,
// just as an old browser is being used.
alert('Problem creating the XMLHttpRequest object');
}
return req;
}
var http = createRequestObject();
function post() {
var textOut = http.responseText;
document.getElementById('all').innerHTML = textOut;
}
function useHttpResponse() {
if (http.readyState == 4) {
setTimeout("post()",1000);
}
}
function sendRequestPoll(act,inputform,poll_id,thread_id,vote_opt) {
var newLoad = "<div class='wait'><center>Подождите, идет загрузка...<br><img src='loading.gif'></b></center></div><br>";
document.getElementById('all').innerHTML = newLoad;
http.open('post', 'ajax-nav.php?nav=poll&poll_id='+poll_id+'&thread_id='+thread_id+'&vote_opt='+vote_opt, true);
http.onreadystatechange = useHttpResponse;
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http.send('poll_id='+poll_id+'&thread_id='+thread_id+'&vote_opt='+vote_opt);
}
а скрипт в свою очередь передает полученные данные на страничку ajax-nav.php?nav=poll с нужными данными(которые он получил при нажатии на кнопку)
а вот функция nav=poll файла ajax-nav.php, она обновляет БД и выводит результаты...
if ($nav == "poll") {
$res_array = dbarray(dbquery("SELECT poll_id FROM ".$db_prefix."forum_thread_polls WHERE thread_id='".$thread_id."'"));
$result = dbquery("INSERT INTO ".$db_prefix."forum_poll_votes VALUES('', '".$userdata['user_id']."', '$vote_opt', '".$poll_id."')");
$result = dbquery("SELECT * FROM ".$db_prefix."forum_polls WHERE poll_index= 'F' AND poll_id= '".$res_array['poll_id']."'");
if (dbrows($result) != 0) {
$data = dbarray($result);
$poll_title = $data['poll_title'];
for ($i=0; $i<=9; $i++) {
if ($data["poll_opt_".$i]) $poll_option[$i] = $data["poll_opt_".$i];
}
if (iMEMBER) $result2 = dbquery("SELECT * FROM ".$db_prefix."forum_poll_votes WHERE vote_user='".$userdata['user_id']."' AND poll_id='".$data['poll_id']."'");
if ( (!iMEMBER || !dbrows($result2)) && $data['poll_ended'] == 0) {
if (!iMEMBER) {
$poll = ""; $i = 0; $num_opts = count($poll_option);
$forum_poll_votes = dbcount("(vote_opt)", "forum_poll_votes", "poll_id='".$data['poll_id']."'");
while ($i < $num_opts) {
$num_votes = dbcount("(vote_opt)", "forum_poll_votes", "vote_opt='$i' AND poll_id='".$data['poll_id']."'");
$opt_votes = ($forum_poll_votes ? number_format(100 / $forum_poll_votes * $num_votes) : 0);
$poll .= "<table width='98%' valign='top' align='center'> <tr>
<td width='30%'>".$poll_option[$i]."</td>
<td width='10%'>[ <b>".$num_votes."</b> ]</td>
<td width='60%'><img src='".FORUM."images/bar_left.gif' height='12'><img src='".FORUM."images/bar.gif' alt='".$poll_option[$i]."' width='$opt_votes' height='12'><img src='".FORUM."images/bar_right.gif' height='12'> [".$opt_votes."%]</td>
</tr></table><br>\n";
$i++;
}
} else {
$poll = ""; $i = 0; $num_opts = count($poll_option);
while ($i < $num_opts) {
$poll .= "<input type='radio' name='voteoption' value='$i'> $poll_option[$i]<br><br>\n";
$i++;
}
}
echo "<table width='98%' align='center'><tr><td><form name='voteform' method='post' action='".FUSION_SELF.(FUSION_QUERY ? "?".FUSION_QUERY : "")."'>";
echo "$poll<center><input type='hidden' name='poll_id' value='".$data['poll_id']."'>\n";
if (iMEMBER) {
echo "<hr><input type='button' onClick=\"sendRequestPoll('poll','".$_REQUEST['voteform']."','".$data['poll_id']."','$thread_id','$voteoption')\" name='cast_vote' value='".$locale['101']."' class='button'></center>\n";
}
echo "</form></td></tr></table>\n";
} else {
$poll = ""; $i = 0; $num_opts = count($poll_option);
$forum_poll_votes = dbcount("(vote_opt)", "forum_poll_votes", "poll_id='".$data['poll_id']."'");
echo "<table width='98%' valign='top' align='center'><tr><td>";
while ($i < $num_opts) {
$num_votes = dbcount("(vote_opt)", "forum_poll_votes", "vote_opt='$i' AND poll_id='".$data['poll_id']."'");
$opt_votes = ($forum_poll_votes ? number_format(100 / $forum_poll_votes * $num_votes) : 0);
$poll .= "<table width='98%' valign='top' align='center'> <tr>
<td width='30%'><b>".$poll_option[$i]."</b></td>
<td width='10%'>[ <b>".$num_votes."</b> ]</td>
<td width='60%' valign='center'><img src='".FORUM."images/bar_left.gif' height='12'><img src='".FORUM."images/bar.gif' alt='".$poll_option[$i]."' width='$opt_votes' height='12'><img src='".FORUM."images/bar_right.gif' height='12'> [".$opt_votes."%]</td>
</tr></table><br>\n";
$i++;
}
echo "$poll\n</td></tr></table>";
}
}
}
(впринципе она похожа с той, которая выводит голосование в файле viewthread.php)
все бы хорошо, но почемуто я немогу перехватить id варианта ответа из цикла()выделено оранжевым
крысным выделено то что должно записыватся в БД при голосовании....помогите разобратся в чем трабл, сам уже незнаю что делать
зы: все остальные данные передаются и записываются в БД верно
Последний раз редактировалось -=M@N=-; 20.05.2008 в 20:44..
|
|
|

20.05.2008, 20:38
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Много ненужного плохо форматированного кода, который непосредственно к проблеме не относится. Ничего выделенного синим не нашёл.
|
|
|

20.05.2008, 20:44
|
|
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме: 30027
Репутация:
2
|
|
синий я исправил на оранжевый, а код буду оптимизировать когда он заработает как надо=)
|
|
|

20.05.2008, 21:00
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
PHP код:
echo "<hr><input type='button' onClick=\"sendRequestPoll('poll','voteform','"
.$data['poll_id']."','$thread_id','"
/* Если я правильно понял, что запрос отправляется на другой файл (ajax-nav.php),
то здесь (viewthread.php) $_REQUEST['voteoption'] будет неопределён. */
.$_REQUEST['voteoption'].
"')\" value='"
.$locale['101']."' class='button'></center>\n";
|
|
|

20.05.2008, 21:04
|
|
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме: 30027
Репутация:
2
|
|
а как монжно определить? может скриптом каким-нить?
|
|
|

20.05.2008, 21:37
|
|
Постоянный
Регистрация: 30.08.2007
Сообщений: 773
Провел на форуме: 3069349
Репутация:
808
|
|
Посмотреть на получившийся Html
|
|
|

21.05.2008, 12:31
|
|
Новичок
Регистрация: 26.03.2007
Сообщений: 20
Провел на форуме: 30027
Репутация:
2
|
|
решил проблему сам добавлением одного скрипта, тему можно закрыть=)
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|