RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 475
от 01.10.2006, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 363, Экспертов: 49
В номере:Вопросов: 5, Ответов: 14


Вопрос № 56702: Есть на сайте много картинок и ,соответственно, хочется к ним сделать превьюшки. Вручную долго, да и это не наши методы! Есть скрипт (в приложении), который все это делает, только почему-то из GIF'ов он делает нормальные картинки, а из JPEG и PN...
Вопрос № 56713: Подскажите, в как помещать дату в таблицу (MySQL). Дата нужна в таком виде Y-n-d H:i:s (обязательно). Вопрос в том, как потом сделать выборку из таблицы не по всей отформатированной дате, а по трем вариантам: по году, по году и месяцу, по году и меся...
Вопрос № 56734: Добрый день! При изучении PHP и MySQL в программу вставил фрагмент, (echo "<pre>" .....echo "</pre>") из www.php.su/mysql/?function. Если фрагмент стоит перед выдачей таблицы на экран, то таблица выводи...
Вопрос № 56783: Уважаемые эксперты! Прошу научить, как правильно написать скрипт запроса для вставки данных из текстового файла (по количеству полей, разделенных точкой с запятой) в таблицу базы данных MySQL. Я пробовал $sql = "LOAD DATA LOCAL INFILE '$txt_file...
Вопрос № 56807: Уважаемые эксперты, хотелось бы узнать ваше мнение. Я начинающий. В интернету много готовых скриптор. Просмотривая их, я обратил внимание, что многие избегают использовать для хранения и обработки данных базы MySQL и использование обычных текстовых ф...

Вопрос № 56.702
Есть на сайте много картинок и ,соответственно, хочется к ним сделать превьюшки. Вручную долго, да и это не наши методы!
Есть скрипт (в приложении), который все это делает, только почему-то из GIF'ов он делает нормальные картинки, а из JPEG и PNG почти черно-белые, блеклые какие-то, в общем, лажа полная!(даже при качестве=100)
Пробовал
imagecreatefromjpeg(...)
а потом
imagecopyresized(...)
и
imagejpeg(...) ,
т.е. сохранить в памать вставить в новый рисунок и вывести
в браузер - такая-же история...
Вопрос, как всегда: что делать?
PHP 4.3.3

Приложение:

Отправлен: 25.09.2006, 23:23
Вопрос задал: Mo-skin (статус: 2-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, Mo-skin!
Попробуйте вместо строки

$thumb=imagecreate($x,$y);

использовать

$thumb=imagecreatetruecolor($x,$y);
Ответ отправил: HookEst (статус: 3-ий класс)
Ответ отправлен: 26.09.2006, 09:35
Оценка за ответ: 5
Комментарий оценки:
Спасибо, все верно, хотя вчера ночью и сам разобрался.

Отвечает: PVS
Здравствуйте, Mo-skin!
Что-то у Вас не то. ImageJPEG уже выводит результат в бровзер, а то, что Вы потом дописываете через echo вполне вероятно портит картинку
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 26.09.2006, 10:32
Оценка за ответ: 4
Комментарий оценки:
Ксожалению это не так,
но, к счастью,- я ужеразобрался.
Спасибо за участие!

Отвечает: Zysoftik
Здравствуйте, Mo-skin!

В дополнение, хотел бы сказать, что вместо imagecopyresized(...) лучше использовать imagecopyresampled(...). Это улучшит качество получаемых изображений. Хотя все зависит от размера конечного изображения.
Ответ отправил: Zysoftik (статус: 6-ой класс)
Ответ отправлен: 27.09.2006, 10:16
Оценка за ответ: 5
Комментарий оценки:
Спасибо за совет, може когда-ни'ть пригодится.


Вопрос № 56.713
Подскажите, в как помещать дату в таблицу (MySQL). Дата нужна в таком виде Y-n-d H:i:s (обязательно). Вопрос в том, как потом сделать выборку из таблицы не по всей отформатированной дате, а по трем вариантам: по году, по году и месяцу, по году и месяцу и дню (время вообще не должно приниматься во внимание). Если отформатировать дату в php и в таком виде поместить в таблицу, то по отдельному элементу (напр. только по году) поиск не проходит. В общем, нужно так, чтобы в sql-запросе можно было выбирать варианты поиска. Каким образом?
Отправлен: 26.09.2006, 01:04
Вопрос задал: Defalex (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Козлов А. С.
Здравствуйте, Defalex!
1. Поместить дату можно так:

$query = "INSERT INTO имя_таблицы (data) VALUES ('2006-09-26 00:00:00');";
mysql_query($query);

2. Выборки делаются так:

// Выборка года
$query = "SELECT * FROM имя_таблицы WHERE LEFT(data, 4) = '2006';";
mysql_query($query);

// Выборка месяца
$query = "SELECT * FROM имя_таблицы WHERE LEFT(data, 7) = '2006-09';";
mysql_query($query);

// Выборка дня
$query = "SELECT * FROM имя_таблицы WHERE LEFT(data, 10) = '2006-09-26';";
mysql_query($query);

Цифра в LEFT(time, 10) указывает на то сколько чисел в дате необходимо учитывать

---------
Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов А. С. (статус: 8-ой класс)
Ответ отправлен: 26.09.2006, 07:17
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное! Именно то что нужно!

Отвечает: PVS
Здравствуйте, Defalex!
Сохраняйте в текстовом поле, тогда нужные Вам условия записываются как:
"dt_field like '".$year."-%'"
"dt_field like '".$year."-".$month."-%'"
"dt_field like '".$year."-".$month."-".$day." %'"
Более того. Можете использовать только последние условие, а вместо ненужных параметров подставлять строку "__" (два нижних подчеркивания), которая в условии поиска заменяєт два любые символа (% - любое количество произвольных символов)

Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 26.09.2006, 10:24
Оценка за ответ: 5

Отвечает: Дмитрий Иванов
Здравствуйте, Defalex!

ну это в принципе стандартный вариант даты и если ты выбрал тип ячейки DATATIME то у тебя не должно быть проблемм с использованием стандартных функций MySQL
MONTH(date) DAY(date) или YEAR(date)

как пример:
select * from mytab where YEAR(mydate)='2006' and MONTH(date)='11' and DAY(date) ='1'

но в принципе могут быть и другие варианты

к тому же прочитай http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
тебе станет многое более понятно.
---------
ставя оценку - подумай, может ты не все описал
Ответ отправил: Дмитрий Иванов (статус: Практикант)
Ответ отправлен: 26.09.2006, 13:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо! Всегда понятнее, когда тебе кто-то на примере покажет, чем штудировать инструкции. А тип ячейки именно DATATIME формата 0000-00-00 00:00:00


Вопрос № 56.734
Добрый день!
При изучении PHP и MySQL в программу вставил фрагмент,
(echo "<pre>" .....echo "</pre>") из www.php.su/mysql/?function.
Если фрагмент стоит перед выдачей таблицы на экран,
то таблица выводится с пустыми полями.
Если фрагмент поместить после, то таблица заполняется полями.
Это мне не понятно.
И второй вопрос - что находится в переменной $res и как там размещены данные, выбранные по запросу из базы данных?
(У меня установлен ДЕНВЕР под Windows XP)
Спасибо.

Приложение:

Отправлен: 26.09.2006, 10:29
Вопрос задал: Eliz (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Козлов А. С.
Здравствуйте, Eliz!
1. В описании функции mysql_result() написано следующее:
"Вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса".
Вероятно всего при вызове это функции первой происходит обнуление переменной $res и в вывод таблицы идет пустым.

2. В переменной $res хранится упорядоченный набор данных, аналогичный двумерному массиву в PHP. А именно, массив строк, каждая из которых состоит из одной или нескольких ячеек.

3. Комбинацию
$colzap = mysql_num_rows($res);
for ($i=0; $i < $colzap; $i++) {
...
}

я бы заменил на следующую

while(mysql_num_rows($res)){
...
}
---------
Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов А. С. (статус: 8-ой класс)
Ответ отправлен: 26.09.2006, 11:07
Оценка за ответ: 5
Комментарий оценки:
Спасибо за четкий ответ.

Отвечает: HookEst
Здравствуйте, Eliz!
Функция mysql_query() возвращает ТОЛЬКО УКАЗАТЕЛЬ на результат(тип RESOURCE, а не ARRAY), А НЕ САМ РЕЗУЛЬТАТ.
Сами данные можно получить функциями mysql_fetch_array(),mysql_fetch_row(),mysql_fetch_assoc() или mysql_result().
mysql_fetch_...() функции можно использовать ТОЛЬКО ОДИН РАЗ для каждой записи, вызовы функции mysql_result() не должны смешиваться с другими функциями, работающими с результатом запроса. Пройдите по записям 1 раз, заполните массив данными запроса, а вот этот массив уже можно использовать хоть сколько и для вывода <PRE> и для вывода <TABLE>.(можно также использовать mysql_data_seek(0), чтобы вернуться к первой записи).
И если $cehid к Вам приходит в запросе я бы предварительно установил бы его тип в integer(только если $cehid -число)
И не пишите while(mysql_num_rows($res)){...} - возможен бесконечный цикл.

Удачи.

Приложение:

Ответ отправил: HookEst (статус: 3-ий класс)
Ответ отправлен: 26.09.2006, 12:34
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ, и приложение.
Все стало понятно.
Кроме того мне надо пользоваться
более четкой литературой с описанием
функций.


Вопрос № 56.783
Уважаемые эксперты! Прошу научить, как правильно написать скрипт запроса для вставки данных из текстового файла (по количеству полей, разделенных точкой с запятой) в таблицу базы данных MySQL. Я пробовал $sql = "LOAD DATA LOCAL INFILE '$txt_file' INTO TABLE $datatable fields terminated by ';//' lines terminated by ' ' "; и у меня работало на старых версиях PHP и MySQL. А сейчас установил: MySQL 4.1.16-max и PHP Version 4.4.2 и не получается импортировать данные.
Отправлен: 26.09.2006, 16:12
Вопрос задал: Vicbar (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Дмитрий Иванов
Здравствуйте, Vicbar!

если средствами PHP, то :

Приложение:

---------
ставя оценку - подумай, может ты не все описал

Ответ отправил: Дмитрий Иванов (статус: Практикант)
Ответ отправлен: 26.09.2006, 16:38
Оценка за ответ: 5
Комментарий оценки:
Спасибо, помогли!

Отвечает: Козлов А. С.
Здравствуйте, Vicbar!
Так же можно воспользоваться следующим кодом:

Приложение:

---------
Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).

Ответ отправил: Козлов А. С. (статус: 8-ой класс)
Ответ отправлен: 27.09.2006, 07:20
Оценка за ответ: 5


Вопрос № 56.807
Уважаемые эксперты, хотелось бы узнать ваше мнение. Я начинающий. В интернету много готовых скриптор. Просмотривая их, я обратил внимание, что многие избегают использовать для хранения и обработки данных базы MySQL и использование обычных текстовых файлов приветствуется. Хотелось бы узнать, почему.
Отправлен: 26.09.2006, 19:22
Вопрос задал: Гузенко Руслан Николаевич (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Бородин Александр Олегович
Здравствуйте, Гузенко Руслан Николаевич!
Не все хостеры предоставляют базы данных. Кроме того, использование БД подтормаживает приложение.
---------
Ничто не сближает людей так, как совместное преступление. Или покупка телевизора.
Ответ отправил: Бородин Александр Олегович (статус: 1-ый класс)
Ответ отправлен: 26.09.2006, 19:53

Отвечает: Игорь Елизаров
Здравствуйте, Гузенко Руслан Николаевич!
Скорее всего это связано с тем, что халявный хостинг , тот же самый народ.ру не всегда поддерживает ПХП, а тем более MySQL.
Хотя, конечно, на мой взгляд, все- таки с базами данных лучше..
Ответ отправил: Игорь Елизаров (статус: 6-ой класс)
Ответ отправлен: 26.09.2006, 21:12

Отвечает: Uman
Здравствуйте, Гузенко Руслан Николаевич!
Из распространённых причин могу назвать только две
1) На некоторых хостинг - планах не предусмотрена MySql
2) Некоторые "левые" хостинг компании очень часто угражают пользователям закрытием их счёта из-за "огромной" нагрузки на сервер

Мой совет Вам таков, если Вы не планируете писать чего либо масштабного, то лучше используйте для хранения данных файлы.
Ответ отправил: Uman (статус: 2-ой класс)
Ответ отправлен: 26.09.2006, 21:38

Отвечает: PVS
Здравствуйте, Гузенко Руслан Николаевич!
Ну не всегда же на сервере есть поддержка MySQL, а вот поддержка текстовых файлов - всегда :-)
На самом деле истина где-то посредине и если MySQL используется, то обычно для хранения "малокалиберной" информации (пользователи, права доступа, структура сайта), а собственно наполнение хранится в текстовом виде (огромадный текст извлекать из базы дольше). Но это не непоколебимое правило и каждый пишет ссобразно своим (пользовательским) потребностям и возможностям.
Ответ отправил: PVS (статус: Студент)
Ответ отправлен: 27.09.2006, 09:59


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.36 от 06.09.2006
Яндекс Rambler's Top100

В избранное