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

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

30.11.2014, 19:41. Показов 1668. Ответов 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
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 09:02
triadec_96, посмотрите, что содержится в $_POST['id'] с помощью var_dump().
1
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 10:35  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
посмотрите, что содержится в $_POST['id'] с помощью var_dump().
Нажал на второй вопрос - вывело:
string '2' (length=1)
Я так понял проблема в том, что тип string, а не int. Сейчас попробую преобразовать.

Добавлено через 1 минуту
Цитата Сообщение от lyod Посмотреть сообщение
посмотрите, что содержится в $_POST['id'] с помощью var_dump().
А вот так
PHP
1
2
$_POST['id']--;
var_dump($_POST['id']);
уже выводит int 1

Получился такой код в модели
PHP
1
2
3
4
$_POST['id']--;
var_dump($_POST['id']);
$q[$_POST['id']]->get_answer($_POST['answ']);
include 'tests.php';
Но ошибка осталась: Call to a member function get_answer() on a non-object in

Добавлено через 7 минут
+
PHP
1
2
$_POST['answ']+=0;
var_dump($_POST['answ']);
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 10:43
triadec_96, а
PHP
1
var_dump($q[$_POST['id']]);
Что выводит? Может там вообще нет объекта?
1
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 10:51  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
Что выводит? Может там вообще нет объекта?
null
Реально нету объекта. А куда мог деться экземпляр?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 11:08
Попробуйте просто $q распечатать. Если и там пусто - нужно пересмотреть код.
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 11:13  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
Попробуйте просто $q распечатать. Если и там пусто - нужно пересмотреть код.
PHP
1
var_dump ($q);
null
Почему не наследуются экземпляры?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 11:21
triadec_96, проверяйте вот эту часть:
PHP
1
2
3
4
5
$query = mysql_query("SELECT * FROM `Questions`");
$n = mysql_num_rows($query);
$i=0;
while($row = mysql_fetch_array($query,MYSQL_BOTH))
    {
Может записи из БД не получаются? mysql_* устарели, используйте mysqli или PDO. Но если это только для зачёта (я так понимаю это для учебного заведения делается), и преподаватель Вам сам так преподавал - то он сам виноват. Когда будете делать для себя - используйте актуальный функционал php.
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 11:25  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
преподаватель Вам сам так преподавал - то он сам виноват
Да преподаватель даже и не преподавал. Всю пару сидел, у доту рубался. Я всё сам учил.
Цитата Сообщение от lyod Посмотреть сообщение
Может записи из БД не получаются?
Но все вопросы и варианты ответов выводит верно в tests.php.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 11:33
Лучший ответ Сообщение было отмечено triadec_96 как решение

Решение

triadec_96, а, я только увидел. Вы же первый, приведённый Вами файл, не подключаете в model.php
Нужно его подключать.
1
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 11:37  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
а, я только увидел. Вы же первый, приведённый Вами файл, не подключаете в model.php
Нужно его подключать.
О, работает! ДУмал экземпляры унаследуются через tests.php.
Получилось:
PHP
1
2
3
4
5
$_POST['id']--;
$_POST['answ']+=0;
include 'start.php';
$q[$_POST['id']]->get_answer($_POST['answ']);
include 'tests.php';
Все вопросы выводит, но где-то ошибка, ибо выводит их неотвеченными. Ну что ж, буду искать ошибку. Благодарю)
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 11:39
Цитата Сообщение от triadec_96 Посмотреть сообщение
ДУмал экземпляры унаследуются через tests.php
Нет, вот если бы Вы в test.php подключали тот файл - тогда да. Но Вы test.php подключаете в том файле, а не наоборот.
Не за что.
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 12:15  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
Нет, вот если бы Вы в test.php подключали тот файл - тогда да. Но Вы test.php подключаете в том файле, а не наоборот.
Не за что.
И снова здрасте:
У меня таким образом получилось зацикливание. Подключая в начале модели файл "start.php" -я загружаю файл "tests.php", который вызывает модель и т.д. по цыклу пошло и нету выхода.
Не могу придумать как бы обойти эту инициализацию.
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 12:37
Цитата Сообщение от triadec_96 Посмотреть сообщение
я загружаю файл "tests.php", который вызывает модель
Зачем он её вызывает? У Вас на model.php форма отправки ведёт. Вроде в test.php не видно, чтобы модель подключалась.
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 12:44  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
Зачем он её вызывает? У Вас на model.php форма отправки ведёт. Вроде в test.php не видно, чтобы модель подключалась.
Блин, новая ошибка: Fatal error: Cannot redeclare class question in W:\domains\newf.n\www\test.k\class.php on line 4
class.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
<?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 ed()
    {
        return $this->ed;
    }
/*
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>';
        }
    }
}
start.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php 
 
include 'class.php';
$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]);
$i++;
}
//var_dump($q);
include 'tests.php';
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 12:54
В test.php что на данный момент?
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 12:56  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
В test.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
<!-- <?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 
    include 'model.php';
    for($i=0,$j=1;$i<$n;$i++,$j++)
    {
        $q[$i]->get_question($j);
    }
 
//checked="checked"  }
    ?>
    </center>
</body>
</html>
Понял где ошибка!
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 12:59
triadec_96, а в model.php тоже class.php подключается?
0
 Аватар для triadec_96
12 / 12 / 8
Регистрация: 27.12.2012
Сообщений: 448
01.12.2014, 13:02  [ТС]
Цитата Сообщение от lyod Посмотреть сообщение
В test.php что на данный момент?
модель получается такая:
PHP
1
2
3
4
5
6
$_POST['id']--;
// var_dump($_POST['id']);
$_POST['answ']+=0;
//include 'class.php';
var_dump($q);
$q[$_POST['id']]->get_answer($_POST['answ']);
$q всё выводит, но Call to a member function get_answer() on a non-object

Добавлено через 50 секунд
Цитата Сообщение от lyod Посмотреть сообщение
в model.php тоже class.php подключается?
Я понял, что та ошибка была через то, что класс второй раз подключал. Но почему все экземпляры выводятся, а функция не найдена?
1
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
01.12.2014, 13:17
triadec_96, а на данный момент что var_dump($q); выводит в model.php? Сейчас вроде всё правильно подключено, должно работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2014, 13:17
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
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 - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru