<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру 2.0

PHP и MySQL с Нуля до Гуру 2.0

Данный курс научит Вас программировать на самом популярном Web-языке в мире - PHP. Курс состоит из 11 разделов, в которых с нуля рассказывается и показывается процесс написания различных скриптов на PHP.

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

Почти к каждому уроку идут упражнения.

Просмотрев данный курс, Вы сможете создавать абсолютно любые PHP-сайты любой сложности.

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

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

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

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

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

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

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

При выборке данных из базы в цикле происходит зацикливание
01.04.2012 23:16:44 При выборке данных из базы в цикле происходит зацикливание Сообщение #1
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Михаил, есть вот такой код для работой с БД (Класс Mysql)
class Mysql extends Mysqli{
public function connect() {
$this->con = new Mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
return $this->con;
}
public function getCountries() {
$query = Mysql::connect()->query("SELECT id_country, country_name_ru FROM country_ ORDER BY country_name_ru ASC"->fetch_array();
return $query;
}}

И соответственно класс конструктора главной страницы
function countriesConstruct() {
while ($row = Mysql::getCountries()) {
//$country_id = $row['id_country'];
//$country_name = $row['country_name_ru'];
$countries = file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/temp/option.tpl";
$countries = str_replace("{value}", $row['id_country'], $countries);
$countries = str_replace("{name}", $row['country_name_ru'], $countries);
}
return $countries;
}
function registrationConstruct() {
PageDetails::headerConstruct($this->get);
PageDetails::fastMenuConstruct();
$reg = file_get_contents($_SERVER['DOCUMENT_ROOT'] . '/temp/reg.tpl');
$reg = str_replace("{counries}", $this->countriesConstruct(), $reg);
echo $reg;
PageDetails::footerConstruct();
}

Так вот изза чего может быть зацикливание? Проблема именно в том, что идёт зацикливание, такое уже наблюдал ещё в процедурном коде, что если while получает данные, которые прошли через fetch_array(), а не были переведены в массив именно в условии цикла, то происходило зацикливание. Заранее спасибо
Профиль Ответить
01.04.2012 23:19:14 При выборке данных из базы в цикле происходит зацикливание Сообщение #2
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Конечно, зацикливание. Зачем постоянно выполнять один и тот же запрос? Вытащили все необходимые данные из базы, а затем уже fetch_array() в while().
Профиль Ответить
01.04.2012 23:22:12 При выборке данных из базы в цикле происходит зацикливание Сообщение #3
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

Лпс, точно)) А это не будет дурной чертой при работе в ооп? Ведь получается цикл выполняет лишнюю работу?
Профиль Ответить
01.04.2012 23:29:10 При выборке данных из базы в цикле происходит зацикливание Сообщение #4
brussens

brussens

Мега-мастер

Мега-мастер

Дата регистрации:
11.10.2011 22:50:07

Сообщений: 438

И как вообще в while это сделать? Уже практически всё попробовал
Профиль Ответить
02.04.2012 00:04:11 При выборке данных из базы в цикле происходит зацикливание Сообщение #5
Admin

Admin

Администратор

Администратор

Дата регистрации:
27.05.2010 21:23:42

Сообщений: 3063

Получаете result_set, затем в while перебираете все элементы (с помощью fetch_array()). Когда fetch_array() возвращает false, автоматически происходит выход из цикла.
Профиль Ответить