Доброго времени суток уважаемые форумчане =) Давеча столкнулся с такой проблемой, не могу корректно связать вопрос с ответами на него.
Есть .php скрипт вывода результатов голосования:
<?php
/*Выводим результаты голосования для тех кто не голосовал по ссылке*/
$pool1_abspath = dirname(__FILE__);
$pool1_abspath_1 = str_replace('wp-content/plugins/pool-one-wp-plugin', '', $pool1_abspath);
$pool1_abspath_1 = str_replace('wp-content\plugins\pool-one-wp-plugin', '', $pool1_abspath_1);
require_once($pool1_abspath_1 .'wp-config.php');
$ans = @$_GET["ans"];
$res = "";
global $wpdb, $wp_version;
$pool1_que_css = "<div class='pool-question'>##QUESTION##</div>";
$pool1_ans_css = "<div class='pool-answer'>##ANSWER## <span class='pool-result'>(##RES##)</span></div>";
$sSql = "select poolq_id, poolq_question from ". POOLONETABLEQ ." where 1=1";
$sSql = $sSql . " limit 0,1;";
$pool_question = $wpdb->get_results($sSql);
$pool1_que_css = "<div class='pool-question'>##QUESTION##</div>";
$pool1_ans_css = "<div class='pool-answer'>##ANSWER## <span class='pool-result'>(##RES##)</span></div>";
$res = '<div id="pool1">';
foreach ( $pool_question as $question )
{
$poolq_id = $question->poolq_id;
$poolq_question = stripslashes($question->poolq_question);
$poolq_question = str_replace( "##QUESTION##" , $poolq_question, $pool1_que_css);
$res = $res . $poolq_question;
$sSql = "select poola_id, poola_answer, poola_vote from ". POOLONETABLEA ." where 1=1 and poolq_id = ". $poolq_id;
$pool_answer = $wpdb->get_results($sSql);
}
foreach ( $pool_answer as $answer )
{
$poola_id = $answer->poola_id;
$poola_answer = stripslashes($answer->poola_answer);
$poola_vote = $answer->poola_vote;
$poola_answer = str_replace( "##ANSWER##" , $poola_answer, $pool1_ans_css);
$poola_answer = str_replace( "##RES##" , $poola_vote, $poola_answer, $pool1_res_css);
$res = $res . $poola_answer;
}
$res = $res . '</div>';
echo $res;
?>
.
Выводится это все с помощью вот этого js скрипта:
var xmlHttp
function GetXmlHttpObject(handler)
{
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This page doesn't work in Opera")
return
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
try
{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.onload=handler
objXmlHttp.onerror=handler
return objXmlHttp
}
}
function SetPool(a)
{
var pool1_ans = document.getElementById("pool1_ans");
pool1_ans.value = a;
}
function pool1_ajx(siteurl)
{
var ans = document.getElementById("pool1_ans");
if( ans.value == "" || ans.value == "0" )
{
alert("Please choose an answer.");
return false;
}
document.getElementById("pool1_msg").innerHTML="loading...";
var date_now=new Date()
var mynumber=Math.random()
var url=siteurl+"/pool-one-wp-answer.php?ans="+ ans.value + "×tamp=" + date_now + "&action=" + mynumber;
xmlHttp=GetXmlHttpObject(newchanged_ncc)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}
/*Выводим результат голосование ссылкой (выводит только результат первого голосования в бд)*/
function pool1_ajx_res(siteurl)
{
var ans = document.getElementById("pool1_ans");
document.getElementById("pool1_msg").innerHTML="loading...";
var date_now=new Date()
var mynumber=Math.random()
var url=siteurl+"/pool-res.php?ans=";
xmlHttp=GetXmlHttpObject(newchanged_ncc1)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}
function newchanged_ncc1()
{
document.getElementById("pool1").innerHTML = (xmlHttp.responseText).trim();
}
/*конец вывода результата*/
function newchanged_ncc()
{
//alert(xmlHttp.readyState);
//alert(xmlHttp.responseText);
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
if((xmlHttp.responseText).trim()=="exs")
{
document.getElementById("pool1_msg").innerHTML="Please try after some time.";
}
else
{
document.getElementById("pool1").innerHTML = (xmlHttp.responseText).trim();
}
}
}
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
return this.replace(/\s+$/,"");
}
Так как я еще совсем зелен в php и js, я не знаю как корректно реализовать вывод этих самых результатов. На данный момент при клике на ссылку "результаты" какой бы не был вопрос, у меня выводится результаты только первого в списке вопроса и ответы на него. Проясню на примере.
Например у нас есть 2 опроса:
№1 - "Лучшая мобильная ось"
№2 - "Лучший производитель телефонов"
Предположим пользователь видит вопрос №1, нажимает на "Результаты" - и о чудо, ему корректно присылаются данные с результатом именно к этому вопросу. Но если пользователь видит вопрос №2, то при клике на ссылку "Результаты" все-равно получает ответы только к первому вопросу. Хотя из-за специфики самого скрипта (
http://pastebin.com/DNdMvwEr ), если у него есть куки свидетельствующие о том, что он проголосовал за вопрос №1 ранее, то результат к опросу №2 будет абсолютно корректно отображаться.
В общем если я правильно понял, у меня есть только 2 способа решить эту проблему. Либо присвоить всей форме опроса отдельный id и на основе этого id (предварительно сравнив) посылать корректные ответы.
Либо же при помощи GET из .php получать id самого вопроса прописаного в .php скрипте.
Как я уже говорил, к сожалению я еще полный нуб в веб программировании, и мне просто необходима помощь вашего уважаемого сообщества =) Буду очень признателен, за любую помощь -)
Большое спасибо всем небезразличным =)