Вопрос № 97613: Здравствуйте, господа эксперты.
Вопрос у меня не совсем банальный. Имеется скрипт небольшого магазина. Все написано с ООП. Так вот в классе подключения к базе данных используется функция mysql_pconnect, а скрипт ставится на виндоусовский се...Вопрос № 97639: Здрасьте!
Вопрос больше по MYSQL, а не по пхп. Но на MYSQL я не подписан. Так что спрашиваю здесь, тем более, что вопрос, думаю, не сложный. К делу.
Имеется таблица `pictures` с картинками. Поле `id_pic` ключ к записи. Поле `category` определ...
Вопрос № 97.613
Здравствуйте, господа эксперты.
Вопрос у меня не совсем банальный. Имеется скрипт небольшого магазина. Все написано с ООП. Так вот в классе подключения к базе данных используется функция mysql_pconnect, а скрипт ставится на виндоусовский сервер и IIS где ПХП установлен как CGI wrapper. Соответственно ни о каком посоянном подключении к базе данных не может быть и речи. То есть надо осуществить переход с функции mysql_pconnect на mysql_connect без переписывания всех вызовов в других классах. Если тупо взять и исправить mysql_pconnect на mysql_connect
то выдается следующая ошибка:
Warning: mysql_query(): 24 is not a valid MySQL-Link resource in e:siteseggaeexchange.com shirtscdatabase.php on line 106
Очень прошу помочь - сам уже замучался.
Спасибо заранее.
Отвечает: PVS
Здравствуйте, Сергей Галкин!
Вероятно где-то встречается mysql_close раньше чем оно действительно должно быть. При mysql_pconnect оно просто игнорировалось а теперь вылезает. Вам проще всего оставить mysql_pconnect - ничего плохого оно не делает.
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 07.08.2007, 12:35
Отвечает: Flynn
Здравствуйте, Сергей Галкин!
Независимо от того как подключаетесь mysql_query действует одинаково.
Ищите в других файлах, что открываются при вызове этой ошибки, вызовы обращения к $data->m_id или же $data->disconnect(), возможно где-то происходит замена или же подключение закрывается.
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 07.08.2007, 12:48
Отвечает: Powoditch konstantin
Здравствуйте, Сергей Галкин!
А где Вы вызываете соединение с базой?
//Constructor (Get all config records)
function cdatabase()
{
parent::cbase();
$this->m_db=$this->m_config->m_db;
$this->connect(); // исправлено
register_shutdown_function(create_function("", "mysql_close($this->m_id)"));
}
Потом можете спокойно заменить mysql_pconnect на mysql_connect, это на результат влиять не будет.
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 07.08.2007, 13:34
Вопрос № 97.639
Здрасьте!
Вопрос больше по MYSQL, а не по пхп. Но на MYSQL я не подписан. Так что спрашиваю здесь, тем более, что вопрос, думаю, не сложный. К делу.
Имеется таблица `pictures` с картинками. Поле `id_pic` ключ к записи. Поле `category` определяет категорию, в которой расположена картинка.
Выбираю картинку:
$query = "SELECT * FROM pictures WHERE `id_pic`='$id'";
вывожу картинку
Вопрос:
как мне вывести следующую и предыдущую картинку в _текущей_категории_, то есть в той же, что и эта картинка? То есть показывается большая картинка и внизу две ссылочки: предыдущая, следующая.
Отвечает: Yurio
Здравствуйте, Бобровский Сергей Сергеевич!
$category- номер категории картинки
$id - номер текущей картинки.
select * from pictures where category=$category and id>$id order by id limit 1 - следующее фото
select * from pictures where category=$category and id<$id order by id limit 1 - предыдущеефото
Ответ отправил: Yurio (статус: 2-ой класс)
Ответ отправлен: 07.08.2007, 19:03 Оценка за ответ: 5 Комментарий оценки: Спасибо, как раз это и нужно!
Отвечает: PVS
Здравствуйте, Бобровский Сергей Сергеевич!
Пердыдущий ID
select max(id) as prev_id from pictures where category=$category and id<$id;
Следующий:
select min(id) as next_id from pictures where category=$category and id>$id;
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 07.08.2007, 19:07 Оценка за ответ: 4
Отвечает: Flynn
Здравствуйте, Бобровский Сергей Сергеевич!
Попробуйте объединять запросы.
Select P.*, max(Prev.id_pic) as prev, min(Next.id_pic) as next From pictures P
left join pictures Prev on (Prev.category=P.category and Prev.id_pic<P.id_pic)
left join pictures Next on (Next.category=P.category and Next.id_pic>P.id_pic)
Where P.id_pic=38 Group By P.category
Т.е. выбираем нашу картинку, а потом максимальное айди из этой же категории где оно меньше нашего айди, и минимальное где оно больше.
Хотя тоже самое можно сделать несколькими запросами.
Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 07.08.2007, 19:08 Оценка за ответ: 4 Комментарий оценки: МНе это ни к чему, я еще плохо разбираюсь в MYSQL, мне удобней будет несколькими запросами. Но всё равно спасибо!
Отвечает: Azrr
Здравствуйте, Бобровский Сергей Сергеевич!
Допустим, картинка отображается по ссылке http://somesite.ru/script.php?id=3&cat=2, где id=3 - id_pic картинки, а cat = 2 - категория, тогда запросом вида
$query = "SELECT * FROM `pictures` WHERE `id_pic`='$id'+1 AND `category`=$cat"; мы получим следующую картинку, а ссылка будет вида http://somesite.ru/script.php?id=($id+1)&cat=2. Аналогично для предыдущей.
Ответ отправил: Azrr (статус: 2-ой класс)
Ответ отправлен: 07.08.2007, 21:36
Отвечает: Василенко Алексей Васильевич
Здравствуйте, Бобровский Сергей Сергеевич!
как не банально но вопрос в большей степени по пхп.
для того, чтоб организовать просмотр категории исходя из картинки необходимо:
- определить категорию к которой пренадлежит выбранная картинка,
- для обработки "предидущий" и "следующий" необходимо отображать пользователю не картинку, а картинку из категории,
- для корректного движения по галерее очень желательно определить "место" текущей картинки в категории.
--------- Готовых решений небыло, нет и не будет... вся жизнь - это лишь размышления на тему