Форум программистов, компьютерный форум, киберфорум
PHP: ООП
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448

Сценарий не находит объект (функцию)

30.11.2014, 19:41. Показов 1675. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создание класса и инициализация экземпляров:
PHP
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
<?php 
 
class question 
{
    private $text,$variant1,$variant2,$variant3,$answer,$ed,$correct;
    public function __construct ($text,$variant1,$variant2,$variant3,$answer)
    {
        $this->text = $text;
        $this->variant1 = $variant1;
        $this->variant2 = $variant2;
        $this->variant3 = $variant3;
        $this->answer = $answer;
        $this->ed = false;
        $this->correct = false;
    }
 
    public function get_answer($ans)
    {
        $this->ed = true;
        if($this->answer == $ans) $this->correct = true;
    }
 
    /*public function answered()
    {
        $this->ed=true;
    }*/
 
public function correct($c)
    {
        $this->correct=$c;
    }
 
    public function get_question($id)
    {
        if($this->ed == false) echo '<form action="model.php" method="POST">'.$this->text.'<br><input type="hidden" name="id" value='.$id.'>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>'.$this->variant1.'<br>
<input type="radio" name="answ" value=2>'.$this->variant2.'<br><input type="radio" name="answ" value=3>'.$this->variant3.'<br><center>
<input style="font-size: 25px;" type="submit" value="Ответить"></center></p></form>'; 
else if($this->correct == true) echo '<form style="border: green;">'.$this->text.'<br>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>'.$this->variant1.'<br>
<input type="radio">'.$this->variant2.'<br><input type="radio">'.$this->variant3.'<br><center></center></p></form>'; 
else echo '<form style="border: red;">'.$this->text.'<br>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>'.$this->variant1.'<br>
<input type="radio">'.$this->variant2.'<br><input type="radio">'.$this->variant3.'<br><center></center></p></form>'; 
    }
}
$db = mysql_connect("localhost","root","");
mysql_select_db("Fraerov",$db);
$query = mysql_query("SELECT * FROM `Questions`");
$n = mysql_num_rows($query);
$i=0;
while($row = mysql_fetch_array($query,MYSQL_BOTH))
    { 
$q[$i]= new question($row[1],$row[2],$row[3],$row[4],$row[5]);
//echo $i.' '.$row[0].'<br>'.$row[1].'<br>'.$row[2].'<br>'.$row[3].'<br>'.$row[4].'<br>'.$row[5].'<br><br>';
$i++;
}
include 'tests.php';
tests.php:
PHP/HTML
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
<!--<?php  session_start(); ?>-->
<!--<!DOCTYPE html>-->
<html>
<head>
    <meta charset="UTF-8">
    <title>Testing of knowledge</title>
</head>
<body>
    <style>
    * {
    margin: 0;
    padding: 0;
}
body {
    background-image: url(back.jpg);
}
strong {
    font-size: 50px;
    font-family: Comic Sans MS;
}
form {
    background-color: #a6b7be;
    border: #a6b7be solid 1px;
    margin-left: 25%;
    margin-right: 25%;
    border-radius: 20px;
    padding: 10px;
    font-size: 45px;
    margin-top: 10px;
    margin-bottom: 10px;
}
    </style>
    <center>
    <?php 
    for($i=0,$j=1;$i<$n;$i++,$j++)
    {
        $q[$i]->get_question($j);
    }
 
//checked="checked"  }
    ?>
    </center>
</body>
</html>
model.php:
PHP
1
2
3
4
5
<?php
$_POST['id']--;
$q[$_POST['id']]->get_answer($_POST['answ']);
include 'tests.php'; 
//echo $_POST['id'].'<br>'.$_POST['answ'];
После нажатия на вариант ответа (после загрузки модели) - выбивает ошибку " Fatal error: Call to a member function get_answer() on a non-object in W:\domains\newf.n\www\test.k\model.php on line 3". Я так понял функция не найдена, хотя доступ к ней открыт и название скопипастил. Где я ошибся?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.11.2014, 19:41
Ответы с готовыми решениями:

Составить функцию и сценарий
Составить функцию вычисления количества и суммы делителей натурального числа. Составить сценарий, в котором определить, сколько...

Составить функцию и сценарий
Помогите пожалуйста, очень срочно:gcray: Составить функцию, выбрасывающую из массива натуральных чисел элементы, делящиеся на...

Не находит объект на андроиде
Доброго времени суток, у меня есть код который ищет объект, уже два часу бьюсь не могу понять в чем проблема, на пк все норм, объект ищется...

22
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 17:43  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от lyod Посмотреть сообщение
а на данный момент что var_dump($q); выводит в model.php? Сейчас вроде всё правильно подключено, должно работать.
выводит все данные (все вопросы,варианты ответов, ид ...)

Добавлено через 6 минут
Цитата Сообщение от lyod Посмотреть сообщение
triadec_96, а на данный момент что var_dump($q); выводит в model.php? Сейчас вроде всё правильно подключено, должно работать.
Но если подключить модель так
PHP
1
2
3
4
5
6
<?php 
    include 'model.php';
    for($i=0,$j=1;$i<$n;$i++,$j++)
    {
        $q[$i]->get_question($j);
    }
, то просто загружается стиль, выводится вся инфа о $q и " Call to a member function get_answer()".
Если подключить так:
PHP
1
2
3
4
5
for($i=0,$j=1;$i<$n;$i++,$j++)
    {
        $q[$i]->get_question($j);
    }
    include 'model.php';
То выводит все вопросы, потом всю инфу о $q и ту же самую ошибку.

Добавлено через 12 минут
Цитата Сообщение от lyod Посмотреть сообщение
а на данный момент что var_dump($q); выводит в model.php?
PHP
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
array (size=10)
  0 => 
    object(question)[1]
      private 'text' => string 'Когда необходимо составлять блок-схему программы?' (length=92)
      private 'variant1' => string 'До начала составления самой программы' (length=70)
      private 'variant2' => string 'После составления программы' (length=52)
      private 'variant3' => string 'В процессе составления программы' (length=61)
      private 'answer' => string '1' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  1 => 
    object(question)[2]
      private 'text' => string 'Наиболее наглядной формой описания алгоритма является структурно-стилизованный метод' (length=160)
      private 'variant1' => string 'представление алгоритма в виде схемы' (length=68)
      private 'variant2' => string 'язык программирования высокого уровня' (length=71)
      private 'variant3' => string 'словесное описание алгоритма' (length=54)
      private 'answer' => string '1' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  2 => 
    object(question)[3]
      private 'text' => string 'Перевод программ с языка высокого уровня на язык более низкого уровня обеспечивает программа -' (length=174)
      private 'variant1' => string 'ассемблер' (length=18)
      private 'variant2' => string 'компилятор' (length=20)
      private 'variant3' => string 'фортран' (length=14)
      private 'answer' => string '2' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  3 => 
    object(question)[4]
      private 'text' => string 'В графических схемах алгоритмов стрелки направлений на линиях потоков' (length=130)
      private 'variant1' => string 'необходимо рисовать, если направление потока сверху вниз и слева направо' (length=134)
      private 'variant2' => string 'рисовать не нужно' (length=32)
      private 'variant3' => string 'необходимо рисовать, если направление потока снизу вверх и справа налево' (length=134)
      private 'answer' => string '3' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  4 => 
    object(question)[5]
      private 'text' => string 'Разработка алгоритма решения задачи – это' (length=78)
      private 'variant1' => string 'сведение задачи к математической модели, для которой известен метод решения' (length=140)
      private 'variant2' => string 'точное описание данных, условий задачи и ее целого решения' (length=107)
      private 'variant3' => string 'определение последовательности действий, ведущих к получению результатов' (length=137)
      private 'answer' => string '3' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  5 => 
    object(question)[6]
      private 'text' => string 'Языком высокого уровня является' (length=59)
      private 'variant1' => string 'Макроассемблер' (length=28)
      private 'variant2' => string 'Шестнадцатеричный язык' (length=43)
      private 'variant3' => string 'Фортран' (length=14)
      private 'answer' => string '3' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  6 => 
    object(question)[7]
      private 'text' => string 'Алгоритм, в котором действия выполняются друг за другом, не повторяясь называется:' (length=151)
      private 'variant1' => string 'линейным' (length=16)
      private 'variant2' => string 'циклическим' (length=22)
      private 'variant3' => string 'простым' (length=14)
      private 'answer' => string '1' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  7 => 
    object(question)[8]
      private 'text' => string 'Разработке алгоритма предшествует' (length=64)
      private 'variant1' => string 'постановка задачи, разработка математической модели, проектирование программ' (length=144)
      private 'variant2' => string 'постановка задачи, разработка математической модели' (length=97)
      private 'variant3' => string 'постановка задачи, выбор метода решения, проектирование программ' (length=120)
      private 'answer' => string '2' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  8 => 
    object(question)[9]
      private 'text' => string 'Символьный тип данных объявляется служебным словом:' (length=96)
      private 'variant1' => string 'CHAR;' (length=5)
      private 'variant2' => string 'STRING;' (length=7)
      private 'variant3' => string 'WORD;' (length=5)
      private 'answer' => string '1' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
  9 => 
    object(question)[10]
      private 'text' => string ' В операторе присваивания summa := sqr(x)+3*a переменными являются' (length=107)
      private 'variant1' => string 'a, x, summa' (length=11)
      private 'variant2' => string ' x, a' (length=5)
      private 'variant3' => string 'sqr,x,a' (length=7)
      private 'answer' => string '1' (length=1)
      private 'ed' => boolean false
      private 'correct' => boolean false
Цитата Сообщение от lyod Посмотреть сообщение
Сейчас вроде всё правильно подключено, должно работать.
Оно то работает, но не в том порядке. Форма отправляется отдельно от запуска модели. Попытался изменить
PHP
1
public function get_question($id)
, но безрезультатно. Надо как-то сделать, чтобы сначала отправлялась форма,а потом подключалась модель, або всё выводится на одной странице (получается формыб а потом внизу написана $q и та самая подлая ошибка). Я вообще без понятия почему функцие не подключается. Я и копипастил название и т.д. Может эту функцию переделать на свойства и попытаться ими решить эту проблему? (конечно, если они запустятся)

Добавлено через 1 час 19 минут
Цитата Сообщение от lyod Посмотреть сообщение
должно работать.
может обработать форму в tests.php?
Что тогда надо писать в action?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 19:33
triadec_96, столько информации, голова болит . За что отвечает model.php и зачем вообще нужно подключать этот файл в test.php?
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 20:05  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
столько информации, голова болит . За что отвечает model.php и зачем вообще нужно подключать этот файл в test.php?
Получается tests.php создаёт фформу с вопросами и вариантами ответов. Подтверждённая форма отправляется в модель для того, чтобы проверить верно или неверно отвечен вопрос и отметить его отвеченным.
Я модель вообще убрал, ибо столько проблем с нею ...
Вот изменил класс:
HTML5
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
<?php 
 
class question 
{
    private $text,$variant1,$variant2,$variant3,$answer,$ed,$correct;
    public function __construct ($text,$variant1,$variant2,$variant3,$answer)
    {
        $this->text = $text;
        $this->variant1 = $variant1;
        $this->variant2 = $variant2;
        $this->variant3 = $variant3;
        $this->answer = $answer;
        $this->ed = false;
        $this->correct = false;
    }
 
    public function get_answer($ans)//don't work
    {
        $this->ed = true;
        if ($this->answer == $ans) {
            $this->correct = true;
        }
    }
 
    /*public function ed()
    {
        return $this->ed;
    }*/
 
    public function set_ed()
    {
        $this->ed = true;
    }
 
    public function answer()
    {
        return $this->answer;
    }
 
    public function get_correct()
    {
        return $this->correct;
    }
 
    public function correct_true()
    {
        $this->ed = true;
    }
 
    public function get_question($id)
    {
            if ($this->ed == false) {
            echo '<form method="POST">' . $this->text . '<br><input type="hidden" name="id" value=' . $id . '>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>' . $this->variant1 . '<br>
<input type="radio" name="answ" value=2>' . $this->variant2 . '<br><input type="radio" name="answ" value=3>' . $this->variant3 . '<br><center>
<input style="font-size: 25px;" type="submit" value="Ответить"></center></p></form>';
        } else if ($this->correct == true) {
            echo '<form style="border: green;">' . $this->text . '<br>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>' . $this->variant1 . '<br>
<input type="radio">' . $this->variant2 . '<br><input type="radio">' . $this->variant3 . '<br><center></center></p></form>';
        } else {
            echo '<form style="border: red;">' . $this->text . '<br>
<p style="font-size: 25px; text-align:left"><input type="radio" name="answ" value=1>' . $this->variant1 . '<br>
<input type="radio">' . $this->variant2 . '<br><input type="radio">' . $this->variant3 . '<br><center></center></p></form>';
        }
    }
}
Как видите добавил несколько свойств. Я их добавил потому, что get_answer() не найден. Получается эту функцию я зменил свойствами и получился такой код в tests.php
PHP/HTML
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
<!-- <?php  session_start(); ?> -->
<!--<!DOCTYPE html>-->
<html>
<head>
    <meta charset="UTF-8">
    <title>Testing of knowledge</title>
</head>
<body>
    <style>
    * {
    margin: 0;
    padding: 0;
}
body {
    background-image: url(back.jpg);
}
strong {
    font-size: 50px;
    font-family: Comic Sans MS;
}
form {
    background-color: #a6b7be;
    border: #a6b7be solid 1px;
    margin-left: 25%;
    margin-right: 25%;
    border-radius: 20px;
    padding: 10px;
    font-size: 45px;
    margin-top: 10px;
    margin-bottom: 10px;
}
    </style>
    <center>
    <?php 
 
    for($i=0,$j=1;$i<$n;$i++,$j++)
    {
        $q[$i]->get_question($j);
    }
 
 
//checked="checked"  }
    ?>
    </center>
</body>
</html>
 
<?php if(isset($_POST['id'])) //echo '<form style="font-size: 80px;">IT`S WORKS!';
{$_POST['id']--;
$_POST['answ']+=0;
// var_dump($q);
$q[$_POST['id']]->set_ed();
if($q[$_POST['id']]->answer() == $_POST['answ']) 
    $q[$_POST['id']]->correct_true();
else $q[$_POST['id']]->correct();//такой функции уже нету в классе, ибо я кое-что изменил, но не обращайте внимание. Пока для првоерки отвечаю только правильно
if($q[$_POST['id']]->get_correct() == false) echo '<form>FALSE<br>'.$q[$_POST['id']]->answer().'<br>'.$_POST['answ'].'</form>';
else echo '<form>TRUE</form>';
// echo '<form>'.$q[$_POST['id']]->get_correct().'</form>';
/*echo '<form>FALSE</form>';
else echo '<form>TRUE</form>';
$q[$_POST['id']]->get_answer($_POST['answ']);
include 'tests.php';*/ } ?>
То есть сделал так, чтобы ответ проверялся сразу в tests.php. Но новая проблема: свойство correct всегда false.
Я 54 строку проверял выводом инфы, то true присваивается свойству correct, но в результате почему-то всё-равно выводится false и две одинаковые цыфры (ибо пока для проверки отвечаю только правильно).
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2014, 20:05
Помогаю со студенческими работами здесь

Составьте сценарий обработки формы. Сценарий должен включать две веб-страницы
Составьте сценарий обработки формы. Сценарий должен включать две веб-страницы: страница с формой и страница-обработчик. Страница-обработчик...

Составьте сценарий обработки формы. Сценарий должен включать две веб-страницы
Составьте сценарий обработки формы. Сценарий должен включать две веб-страницы: страница с формой и страница-обработчик. Страница-обработчик...

Написать функцию, которая находит элемент в массиве символов равна указанному символа. Использовать эту функцию в програ
Не могу понять в чем проблема! Помогите пожалуйста! #include &lt;stdio.h&gt; #include &lt;ctype.h&gt; #include &lt;locale.h&gt; int main() {...

Конвертация данных. Не понимаю, каким образом система находит объект
Всем привет. Помогите по конвертации пожалуйста. Обмен между Бухней 2.0 и УТ 10.3. Короче, есть несколько контрагентов, у которых...

Недопустимый неполный тип , или как передать в функцию указатель на объект класса , или просто объект
Други мои , кодеры. Не могу я ни как передать в функцию объект класса , или что еще лучше(для меня , так как учусь работать с указателями)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru