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 :: Версия для печати :: Как записать ответы на вопросы в файл?
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Как записать ответы на вопросы в файл?

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

1. ByLex - 08 Октября, 2009 - 21:17:03 - перейти к сообщению
Это плагин icq бота SteelBot. Помогите пожалуйста. Что нужно дописать чтобы все ответы на вопросы записывались файл. Например: Вопрос: Сколько вам лет? Ответ: 1. 12-15. В файл должно записаться Сколько вам лет? 1. 12-15 .

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. class plg_test {
  3. static $curq = array(), // текущий вопрос (uin => question_id)
  4. $q = array(array("Сколько вам лет?", "12-15", "15-18", "18", "num"), // вопросы array (Вопрос, варианты ответа, тип)
  5. array("Место учебы", "Школа", "Вуз", "num"),
  6. array("Дата рождения в формате чч\мм\гггг", "date")
  7. );
  8.  
  9. function get_next()
  10. {
  11. $uin = SteelBot::GetSender();
  12. $text = SteelBot::GetMsgText();
  13. $curr = intval(self::$curq[$uin]);
  14. if ($text == 'help') return;
  15. if ($text == 'тест') {
  16. SteelBot::msg(self::GetText($curr));
  17. SteelBot::DropMsg();
  18. return;
  19. }
  20.  
  21. switch (self::$q[$curr][count(self::$q[$curr])-1]) {
  22. case 'num': // ответом является номер варианта ответа
  23. $answ = intval($text);
  24. if ($answ > (count(self::$q[$curr])-2) || $answ < 1) {
  25. SteelBot::msg(self::GetText($curr));
  26. SteelBot::DropMsg();
  27. return;
  28. }
  29. /* тут мы записываем данные в файл или еще че нить делаем */
  30. SteelBot::DropMsg();
  31. break;
  32. case 'date':
  33. if (!preg_match_all("/(\d{2})\\\(\d{2})\\\(\d{4})/iU", $text, $out)) {
  34. SteelBot::msg(self::GetText($curr));
  35. SteelBot::DropMsg();
  36. return;
  37. }
  38. $d = $out[1][0]; // число
  39. $m = $out[1][1]; // месяц
  40. $y = $out[1][2]; // год
  41. /* тут мы записываем данные в файл или еще че нить делаем */
  42. SteelBot::DropMsg();
  43. break;
  44. default:
  45. SteelBot::DropMsg();
  46. return;
  47. }
  48. self::$curq[$uin]++;
  49. $curr++;
  50. if ($curr == count(self::$q))
  51. SteelBot::Msg("Вы прошли тест!");
  52. else
  53. SteelBot::Msg(self::GetText($curr));
  54. return;
  55. }
  56.  
  57. function GetText($num) {
  58. $text = self::$q[$num][0];
  59. $q = self::$q[$num];
  60. switch ($q[count($q)-1]) {
  61. case 'num':
  62. $text .= "\nВыберите вариант ответа:";
  63. for ($i = 1; $i < (count($q)-1); $i++)
  64. $text .= "\n$i. " . $q[$i];
  65. return $text;
  66. case 'date':
  67. $text .= "\nВведите ответ в формате чч\мм\гггг";
  68. return $text;
  69. default:
  70. return "";
  71. }
  72. }
  73. }
  74. SteelBot::RegisterEventHandler(EVENT_MSG_RECIEVED, array ('plg_test', 'get_next'));
  75. SteelBot::RegisterCmd("тест",array("plg_test", "get_next"), 1,"тест - пройти тест");

(Добавление)
$fp = fopen("otvety.txt", "a"); // Открываем файл в режиме записи
$mytext = "что тут писать?"; // Что здесь нужно написать чтобы в файл записался номер ответа+ответ в текстовом виде. Например: Вопрос: Сколько вам лет? Ответ: 1. Записаться дожно: Сколько вам лет? 1.12-15

$test = fwrite($fp, $mytext); // Запись в файл

fclose($fp); //Закрытие файла

Или как то по другому нужно, что я только не подставлял туда...ничего не получается подскажите пожалуйста. Может как то по другому нужно?

 

Powered by ExBB FM 1.0 RC1