<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Ошибки на уроках Михаила при "создании поиска по сайту".
21.11.2013 23:32:11 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #1
Ильюха

Ильюха

Новичок

Новичок

Дата регистрации:
21.11.2013 22:53:48

Сообщений: 18

Здравствуйте!
Создал сайт-копию при просмотре бесплатного курса по РНР. Следующий урок: "Создание поиска по сайту".
http://blog.myrusakov.ru/site-search.html

Идентично слизал один в один. Пять раз проверял. Таблицу в БД проверял. Кодировки проверял. Гуглил - не помогло..

----------------
Вылезают ошибки:

Warning: explode() [function.explode]: Empty delimiter in S:\home\mysite.local\www\Lib\functions.php on line 96

Warning: Invalid argument supplied for foreach() in S:\home\mysite.local\www\Lib\functions.php on line 98

Fatal error: Call to a member function fetch_assoc() on a non-object in S:\home\mysite.local\www\Lib\functions.php on line 36

--------------

function resultSetToArray($result_set) {
$array = array();
(36) while (($row = $result_set->fetch_assoc()) != false)
$array[] = $row;
return $array; }


function searchArticles($words) {
$query_search = "";
(96) $arraywords = explode("", $words);
print_r($arraywords);
(98) foreach ($arraywords as $key => $value) {
if (isset($arraywords[$key - 1])) $query_search .= " OR ";
$query_search .= "(`full_text` LIKE '%$value%' OR `title` LIKE '%$value%')";
}
global $mysqli;
connectDB();
(104) $result_set = $mysqli->query("SELECT * FROM `articles` WHERE $query_search";
closeDB();
return resultSetToArray($result_set);
}

-------------------

<?php
if (($_GET["button_search"]) && (!empty($_GET["words"]))) {
$words = htmlspecialchars($_GET["words"]);
$results = searchArticles($words);
if (count($results) != 0) {
for ($i = 0; $i < count($results); $i++) {
$number = $i + 1;
$link = "article.php?id=".$results[$i]["id"];
$title = $results[$i]["title"];
include "search_item.php";
}
}
else echo "Ничего не найдено";
}
else echo "Не задан поисковый запрос!";
?>


--------------
Пробовал отключать часть кода, искать ошибку..
Так вот если убрать «WHERE $query_search» в строке 104, то появятся все четыре статьи из БД (не взирая на запрос в "поиске" и пропадёт ошибка в 36 строке. Но ошибки в 96 и 98 остаются.

Помогите пожалуйста.
С уважением, Илья
Профиль Ответить
22.11.2013 11:18:25 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #2
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Здравствуйте Илья. На Ваш вопрос я ответил в службе поддержки. Убедительная просьба, не создавать копии Ваших тем, на форуме, если параллельно был дан запрос в службу поддержки. Спасибо за понимание.

Копия ответа на Ваш запрос:

Здравствуйте, Илья.

1.Warning: explode() [function.explode]: Empty delimiter



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



2. Warning: Invalid argument supplied for foreach()

Ошибка гласит, что какая-то из переменных не содержит массив, а foreach() ожидает именно его. Опять же разберитесь. Скорее всего после решения первой ошибки, эта ошибка тоже отпадет.



3.Fatal error: Call to a member function fetch_assoc() on a non-object

Это значит $result_set пустой и не является объектом.Эта ошибка возникает когда в запросе ошибка

Так же:

closeDB();

return resultSetToArray($result_set);

}



Не совсем понятно. Извлекаем огурцы из закрытой банки? Проверьте.



Так же, допишите после запроса



echo $_DB->error . '<br />'; И посмотрите, что он хочет.



Проверьте синтаксис внимательнее. Где-то ошибка. В БД проверьте типы полей в таблице, может там ошибка, не тот тип.

Попробуйте заменить Ваш while:

while (($row = $result_set->fetch_assoc()) != false)
$array[] = $row;

На этот:
while ($row = $result_set->fetch_assoc())
$array[] = $row;


С Уважением, Александр Пархоменко.
Служба поддержки Михаила Русакова.
Профиль Ответить
22.11.2013 12:52:10 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #3
Ильюха

Ильюха

Новичок

Новичок

Дата регистрации:
21.11.2013 22:53:48

Сообщений: 18

Здравствуйте, Александр!
Спасибо за Ваш ответ - буду разбираться.

О наболевшем..
1. На e-mail я получил только одно предупреждение: ответ на форуме. Как получить ответ в службе поддержки - не-зна-ю.

2. Про "огурцы в закрытой банке" смотрите в уроке Михаила: http://blog.myrusakov.ru/site-search.html
Всё списывал один в один.

3. Замена while не дало положительного результата. Тем более, что на функцию resultSetToArray подвязано три других - и все работают.
В том числе подвязанные на ту же самую таблицу из базы данных.

4.
closeDB();
return resultSetToArray($result_set);
echo $_DB->error . '<br />';
Не показывает ничего.

5. Проверяю код на кириллицу, переписал отдельные куски. Не помогает.
Профиль Ответить
22.11.2013 13:14:32 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #4
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Напишите пожалуйста, в службу поддержки.
Профиль Ответить
22.11.2013 13:31:02 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #5
Ильюха

Ильюха

Новичок

Новичок

Дата регистрации:
21.11.2013 22:53:48

Сообщений: 18

Опять? Вчера написал же вопрос. :-)

Пробую войти с мейлом или логином от форума - пишет:
Неверный e-mail и/или пароль!
Профиль Ответить
22.11.2013 16:12:47 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #6
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Проверьте поля в БД, ихний тип.
И попробуйте так:
$arraywords = explode(' ', $words);
Профиль Ответить
22.11.2013 17:37:25 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #7
Ильюха

Ильюха

Новичок

Новичок

Дата регистрации:
21.11.2013 22:53:48

Сообщений: 18

И попробуйте так:
$arraywords = explode(' ', $words);

Да! Бинго. :-)

Но у Михаила в уроке имеенно ", не '.

C чем связано? Настройки Notepad++?


Спасибо, tikkiwiki!
Профиль Ответить
22.11.2013 22:23:06 Ошибки на уроках Михаила при "создании поиска по сайту". Сообщение #8
tikkiwiki

tikkiwiki

Модератор

Модератор

Дата регистрации:
15.11.2013 15:36:59

Сообщений: 194

Обращайтесь, если у Вас возникнут какие-то вопросы.
Профиль Ответить