Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: GET id из php
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » GET id из php

Страниц (1): [1]
 

1. Aligatro - 26 Декабря, 2013 - 14:20:10 - перейти к сообщению
Доброго времени суток уважаемые форумчане =) Давеча столкнулся с такой проблемой, не могу корректно связать вопрос с ответами на него.

Есть .php скрипт вывода результатов голосования:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /*Выводим результаты голосования для тех кто не голосовал по ссылке*/
  3. $pool1_abspath = dirname(__FILE__);
  4. $pool1_abspath_1 = str_replace('wp-content/plugins/pool-one-wp-plugin', '', $pool1_abspath);
  5. $pool1_abspath_1 = str_replace('wp-content\plugins\pool-one-wp-plugin', '', $pool1_abspath_1);
  6. require_once($pool1_abspath_1 .'wp-config.php');
  7.  
  8. $ans = @$_GET["ans"];
  9. $res = "";
  10. global $wpdb, $wp_version;
  11. $pool1_que_css = "<div class='pool-question'>##QUESTION##</div>";
  12. $pool1_ans_css = "<div class='pool-answer'>##ANSWER## <span class='pool-result'>(##RES##)</span></div>";
  13.  
  14.  
  15.  
  16.  
  17.         $sSql = "select poolq_id, poolq_question from ". POOLONETABLEQ ." where 1=1";
  18.         $sSql = $sSql . " limit 0,1;";
  19.         $pool_question = $wpdb->get_results($sSql);
  20.  
  21.  
  22.                         $pool1_que_css = "<div class='pool-question'>##QUESTION##</div>";
  23.                         $pool1_ans_css = "<div class='pool-answer'>##ANSWER## <span class='pool-result'>(##RES##)</span></div>";
  24.                         $res = '<div id="pool1">';
  25.                         foreach ( $pool_question as $question )
  26.                         {
  27.                                 $poolq_id = $question->poolq_id;
  28.                                 $poolq_question = stripslashes($question->poolq_question);
  29.                                 $poolq_question = str_replace( "##QUESTION##" , $poolq_question, $pool1_que_css);
  30.                                 $res = $res . $poolq_question;
  31.                                 $sSql = "select poola_id, poola_answer, poola_vote from ". POOLONETABLEA ." where 1=1 and poolq_id = ". $poolq_id;
  32.                                 $pool_answer = $wpdb->get_results($sSql);
  33.                                
  34.                         }
  35.                         foreach ( $pool_answer as $answer )
  36.                         {
  37.                                                 $poola_id = $answer->poola_id;
  38.                                                 $poola_answer = stripslashes($answer->poola_answer);
  39.                                                 $poola_vote = $answer->poola_vote;
  40.                                                 $poola_answer = str_replace( "##ANSWER##" , $poola_answer, $pool1_ans_css);
  41.                                                 $poola_answer = str_replace( "##RES##" , $poola_vote, $poola_answer, $pool1_res_css);
  42.                                                 $res = $res . $poola_answer;
  43.                         }
  44.                         $res = $res . '</div>';
  45.                         echo $res;
  46.                
  47. ?>
.
Выводится это все с помощью вот этого js скрипта:
CODE (javascript):
скопировать код в буфер обмена
  1. var xmlHttp
  2. function GetXmlHttpObject(handler)
  3. {
  4.         var objXmlHttp=null
  5.         if (navigator.userAgent.indexOf("Opera")>=0)
  6.         {
  7.                 alert("This page doesn't work in Opera")
  8.                 return
  9.         }
  10.         if (navigator.userAgent.indexOf("MSIE")>=0)
  11.         {
  12.                 var strName="Msxml2.XMLHTTP"
  13.                 if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
  14.                 {
  15.                         strName="Microsoft.XMLHTTP"
  16.                 }
  17.                 try
  18.                 {
  19.                         objXmlHttp=new ActiveXObject(strName)
  20.                         objXmlHttp.onreadystatechange=handler
  21.                         return objXmlHttp
  22.                 }
  23.                 catch(e)
  24.                 {
  25.                         alert("Error. Scripting for ActiveX might be disabled")
  26.                         return
  27.                 }
  28.         }
  29.         if (navigator.userAgent.indexOf("Mozilla")>=0)
  30.         {
  31.                 objXmlHttp=new XMLHttpRequest()
  32.                 objXmlHttp.onload=handler
  33.                 objXmlHttp.onerror=handler
  34.                 return objXmlHttp
  35.         }
  36. }
  37.  
  38. function SetPool(a)
  39. {
  40.         var pool1_ans = document.getElementById("pool1_ans");
  41.         pool1_ans.value = a;
  42. }
  43.  
  44.  
  45. function pool1_ajx(siteurl)
  46. {
  47.         var ans = document.getElementById("pool1_ans");
  48.         if( ans.value == "" || ans.value == "0" )
  49.         {
  50.                  alert("Please choose an answer.");
  51.                  return false;  
  52.         }
  53.         document.getElementById("pool1_msg").innerHTML="loading...";
  54.         var date_now=new Date()
  55.     var mynumber=Math.random()
  56.         var url=siteurl+"/pool-one-wp-answer.php?ans="+ ans.value + "&timestamp=" + date_now + "&action=" + mynumber;
  57.     xmlHttp=GetXmlHttpObject(newchanged_ncc)
  58.     xmlHttp.open("GET", url , true)
  59.     xmlHttp.send(null)
  60.        
  61. }
  62.  
  63.  
  64.  
  65.  
  66. /*Выводим результат голосование ссылкой (выводит только результат первого голосования в бд)*/
  67.  
  68. function pool1_ajx_res(siteurl)
  69. {
  70.         var ans = document.getElementById("pool1_ans");
  71.  
  72.         document.getElementById("pool1_msg").innerHTML="loading...";
  73.         var date_now=new Date()
  74.     var mynumber=Math.random()
  75.         var url=siteurl+"/pool-res.php?ans=";
  76.     xmlHttp=GetXmlHttpObject(newchanged_ncc1)
  77.     xmlHttp.open("GET", url , true)
  78.     xmlHttp.send(null)
  79.        
  80. }
  81.  
  82. function newchanged_ncc1()
  83. {
  84.                 document.getElementById("pool1").innerHTML = (xmlHttp.responseText).trim();
  85.                
  86. }
  87.  
  88. /*конец вывода результата*/
  89.  
  90.  
  91. function newchanged_ncc()
  92. {
  93.         //alert(xmlHttp.readyState);
  94.         //alert(xmlHttp.responseText);
  95.         if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
  96.         {
  97.                 if((xmlHttp.responseText).trim()=="exs")
  98.                 {
  99.                         document.getElementById("pool1_msg").innerHTML="Please try after some time.";
  100.                 }
  101.                 else
  102.                 {
  103.                         document.getElementById("pool1").innerHTML = (xmlHttp.responseText).trim();
  104.                 }
  105.         }
  106. }
  107.  
  108. String.prototype.trim = function() {
  109.         return this.replace(/^\s+|\s+$/g,"");
  110. }
  111. String.prototype.ltrim = function() {
  112.         return this.replace(/^\s+/,"");
  113. }
  114. String.prototype.rtrim = function() {
  115.         return this.replace(/\s+$/,"");
  116. }

Так как я еще совсем зелен в php и js, я не знаю как корректно реализовать вывод этих самых результатов. На данный момент при клике на ссылку "результаты" какой бы не был вопрос, у меня выводится результаты только первого в списке вопроса и ответы на него. Проясню на примере.

Например у нас есть 2 опроса:
№1 - "Лучшая мобильная ось"
№2 - "Лучший производитель телефонов"

Предположим пользователь видит вопрос №1, нажимает на "Результаты" - и о чудо, ему корректно присылаются данные с результатом именно к этому вопросу. Но если пользователь видит вопрос №2, то при клике на ссылку "Результаты" все-равно получает ответы только к первому вопросу. Хотя из-за специфики самого скрипта ( http://pastebin[dot]com/DNdMvwEr ), если у него есть куки свидетельствующие о том, что он проголосовал за вопрос №1 ранее, то результат к опросу №2 будет абсолютно корректно отображаться.

В общем если я правильно понял, у меня есть только 2 способа решить эту проблему. Либо присвоить всей форме опроса отдельный id и на основе этого id (предварительно сравнив) посылать корректные ответы.
Либо же при помощи GET из .php получать id самого вопроса прописаного в .php скрипте.

Как я уже говорил, к сожалению я еще полный нуб в веб программировании, и мне просто необходима помощь вашего уважаемого сообщества =) Буду очень признателен, если объясните, а лучше подправите скрипт что бы он коректно работал -)

Большое спасибо всем небезразличным =)
2. esterio - 26 Декабря, 2013 - 14:26:51 - перейти к сообщению
1. http://javascript[dot]ru/ajax/intro
2. Ответ в JSON формате

А в общем зачем вам AJAX если вы еще PHP толком не изучили.
3. Aligatro - 26 Декабря, 2013 - 14:45:32 - перейти к сообщению
esterio, да я еще вообще толком ничего не изучил, ни js ни php =) Весь скрипт не мой, мне просто необходимо переделать готовый плагин для реализации функционала на сайте =) Честно признаться, я не то что не знаю php и js я даже в синтаксесе толком разобраться не могу. А во время редактирование какого-либо плагина, просто пытаюсь найти закономерность и методом проб и ошибок подставляю разный код =) Так и живу =)
4. eai - 26 Декабря, 2013 - 14:49:46 - перейти к сообщению
Aligatro пишет:
esterio, да я еще вообще толком ничего не изучил, ни js ни php =) Весь скрипт не мой, мне просто необходимо переделать готовый плагин для реализации функционала на сайте =) Честно признаться, я не то что не знаю php и js я даже в синтаксесе толком разобраться не могу. А во время редактирование какого-либо плагина, просто пытаюсь найти закономерность и методом проб и ошибок подставляю разный код =) Так и живу =)

А какое либо к программированию вы вообще имеете ? Подмигивание
5. esterio - 26 Декабря, 2013 - 15:25:45 - перейти к сообщению
Aligatro
Ну в двух словах здесь никак не обьяснить ((
6. Aligatro - 26 Декабря, 2013 - 16:48:14 - перейти к сообщению
eai, ну если так с плеча рубить, то никакого -=) Потихоньку учусь, читаю статьи пытаюсь кое-как кодить =) А может у кого-то есть хотя бы отдаленный пример такого-же функционала, может я бы через какое-то время разобрался =) Или вся эта радость ограничивается отнюдь не 10-15 строками кода? =)
7. eai - 26 Декабря, 2013 - 17:00:06 - перейти к сообщению
Aligatro пишет:
eai, ну если так с плеча рубить, то никакого -=) Потихоньку учусь, читаю статьи пытаюсь кое-как кодить =) А может у кого-то есть хотя бы отдаленный пример такого-же функционала, может я бы через какое-то время разобрался =) Или вся эта радость ограничивается отнюдь не 10-15 строками кода? =)

Понимаешь ли какое дело, ..., код от одной программы совершенно не подходит другой. И даже если его можно использовать то надо понимать каждую строку. Код который вы прислали, не сказать что очень сложный, но не простой, он затрагивает несколько технологий.
Тут объяснить труднее чем просто за вас все сделать.
Объяснять надо начинать с "С начало было слово и слово было о двух байтах"

 

Powered by ExBB FM 1.0 RC1