Здравствуйте товаГисчи :-)
Опять я.
В прошлом выпуске говорил, что команда include не работает во вложенных файлах, это несколько ошибочно, простите :-) Проверил, оказалось, что она не вызывает ДВА зацикленных друг на друга файла, а вот ТРИ... Три уже вызывает, но потом всёравно вываливается ошибка. Тоесть если последовательность вызываемых файлов не замкнута сама на себя, то всё будет нормально.
Недавно возился со сложными запросами к базе SQL. Оказалось, что если делать выборку сразу из НЕСКОЛЬКИХ таблиц, то все параметры надо записывать в виде: имя таблицы . имя поля Тоесть через точку. Даже если вы не получаете в запросе данные из других таблиц, но они используются при внутренних SQL запросах, необходимо прописывать сложный путь, а в целом синтаксис не отличается от обычного запроса вида:
$query="select * from users;"; //запрос по одной таблице $query="select DISTINCT users.* from users, city where users.idcity <> city.id;"; //запрос по нескольким таблицам DISTINCT - отрезает по идее дубли, но у меня почему-то не работал так, как надо было просто список пользователей из таблицы users, которые условно говоря не живут ни в одном городе, означеном в таблице city.
Работало по другому, тоесть допустим Владимит Жуков живёт в Ростове и SQL проверяя таблицу пользователей игнорировал итерацию проверки на Ростов, но зато выдавал этого Васю Жукова во всех других случаях, так как поле пользователя idcity не совпадало с id любого города, кроме Ростова. В результате объём информации увеличился в количество пользователей, умноженное на количество городов :-) Хорошо, что база была тестовая.
Пришлось сделать по другому: $idrow=""; //Просто определяем пустую переменную на будущее, чтоб если она прийдёт в скрипт каким-либо другим методом(Хакеры блин), небыло лишних проблем
$query='select id from section;'; //Выгребаем все ID существующих разделов
$result=mysql_query($query, $db); //Выбираем их из таблицы запросом
while(list($row)=mysql_fetch_row($result)) {$idrow=$idrow."'".$row."', ";} //Складываем в одну сторку через запятую с последующим пробелом гоняя цикл
$len=strlen($idrow); // Определяем длину получившейся строки
$idrow=substr($idrow, 0, $len-2); // Отрезаем ДВА последних символа в строке начиная с нулевой (0) позиции. Количество вырезаемых символов: ($len-2)
$idrow="(".$idrow.")"; //Получившуюся строку заключаем в скобки, как того требует синтаксис запроса к SQL
$query='select * from tovar where idsection not in '.$idrow.' order by title;';
// И вот теперь уже получаем список того, что не подпадает ни под одну категорию(ID номер) другой таблицы. Сортировка по полю TITLE. Если бы мы добавили в конце после title оператор обратной сортировки:
DESC, то сортировка была-бы обратной. Логично, да ? :-)
По умолчанию-же стоит сортировка ASC - тоесть по возрастанию.
На сегодня хватит. Досвиданья.
Пишите, если что: IrkutskProject(зверушка)yandex.ru