Скрипт на php по уникализации вывода из базы данных. Не работает по неизвестной причине.

программирование php MySQL скрипт функция

Имеем скрипт для вывода уникальных значений из Базы Данных:

<?php
$sectionOld = ''; // Задаем начальное значение переменной

function uniquesection($section) { // Создаем функцию, она получает параметры из while - цикла
$sectionNew = $section; // Присваиваем полученное значение новой переменной, чтоб с ней работать

if ($sectionNew == $sectionOld) { // Проверяем совпадают ли значения. Так как $sectionOld создан изначально, первая итерация перейдет на ELSE.
$sectionNew = 'NULL'; // Если совпадает - задаем переменной новое значение. Для всех итераций, кроме первой исполнится этот код.
} else { // Если значения не совпадают.
$sectionOld = $sectionNew; // Передаем значение $sectionNew к $sectionOld. Так, на следующей итерации у нас будет новое значение $sectionOld.
}

$section = $sectionNew; // Присваиваем переменную обратно для возврата.

return $section; // Возвращаем данные.
}

while ($row = mysql_fetch_array($result)) { // Получаем данные из базы данных

$section = $row['section']; // Присваиваем $section значение из базы данных, новое на каждой итерации.
$section = uniquesection($section); // Вызываем функцию на каждой итерации.

echo $section . "<br>"; // Вывод результата на каждой итерации
}
?>

Предпологается, что вывод будет уникальным. То есть, если из базы получено неуникальное значение (идет на второй итерации), то оно будет заменяться на NULL. То есть в результате не должно выводиться неуникальное значение, кроме NULL (в случае, если из базы идут неуникальные значения).

Скрипт не работает, идут неуникальные значения. При том, что по идее должен работать.
Есть идеи?

Примечание:
Вы б хотя б сказали почему вопрос плох, а то лишь понизили рейтинг и все?!...

Примечание:
В логах ошибок нет. По какой то причине $sectionOld не писваивается новое значение. Но в таком случае по идее должно выполняться условие IF, и $sectionNew присваиваться значение NULL, что тоже не происходит...

Примечание:
>> Кто же сначала выбирает из базы, а потом отсеивает значения?
Я знаю, что так не делается, но сам SQL запрос у меня не простой, и прикрутить уникализацию туда уже не получится, потому надо фильтровать значения на выходе с помощью php.

А вот насчет глобальной переменной - Вы, кажется, правы. Сейчас еще немного потестирую, чтобы убедиться на все 100%. Но уже СПАСИБО! =)
Ответы:
Какие ошибки выдаются в логах?Проще всего начинать с них
Скрипт не правильный, скажу сразу. Кто же сначала выбирает из базы, а потом отсеивает значения? Вам нужна уникальность по столбцу(ам)?
SELECT * FROM `myTbl` GROUP BY `myColumn`;
И будут Вам уникальные значения, которые не нужно будет отсеивать.. Ну а условия выборки уже сами настраивайте под нужды.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

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

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.