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

  Все выпуски  

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


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

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

Выпуск № 408
от 24.07.2006, 10:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 335, Экспертов: 48
В номере:Вопросов: 8, Ответов: 19


Вопрос № 49441: дополнение к вопросу 49330. Пробывал вставить строку запроса SELECT name FROM data WHERE name LIKE '%$search%' выдает ошибку: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:wampwwwsearc...
Вопрос № 49461: Здраствуйте Уважаемые Эксперты! Есть такая проблема как можно организовать поиск в базе данных (Access) например телефонного справочника по фамилии, и вывести его на страничку.спасибо огромное , если можно примерчик, с/у Ера...
Вопрос № 49472: Уважаемые эксперты! Может вопрос из другой категории, но все же...Вот фрагмент PHP-кода: SELECT u.*, g.*, o.logged, o.idle FROM '.$db->prefix.'users AS u IN Чё за u.*? И для чего в запросе точки?...
Вопрос № 49529: Здравствуйте уважаемые эксперты. У меня следующий вопрос. Скачал с сайта http://de.php.net/downloads.php пакет PHP 5.1.4 zip package. Разархивировал его (d:php) и скачал также инструкцию (manual). При чтении этой инструкции я выяснил что не хватает ...
Вопрос № 49544: И снова здрасте, уважаемые эксперты. Такой вопрос: есть папка на хосте под названием avatars, при установке какого-либо популярного форума рекомендуется изменить для нее ограничения на 0777, дабы можно было грузить в нее аватары. Но это дает возможно...
Вопрос № 49551: Нужно сделать экспорт данных в Excel-таблицу. 1. Есть какой-нибудь готовый компонент для этого? 2. Или как можно добавить данные в существующий файл (знаю номера колонок и строк для добавления; могу сделать шаблон)....
Вопрос № 49553: Уважаемые эксперты, еще один вопрос. Что за файлы такие *tpl, каково их назначение и принцип использования? Заранее благодарю....
Вопрос № 49557: Добрый день эксперты! У меня такой вопрос: имею строку запроса для поиска в базе: $sql="SELECT name FROM data WHERE name LIKE '%".$search."%'"; ввожу строку для поиска (на форме) - 'ГИВ', а мне выдает значен...

Вопрос № 49.441
дополнение к вопросу 49330.
Пробывал вставить строку запроса
SELECT name FROM data WHERE name LIKE '%$search%'
выдает ошибку:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:wampwwwsearch.php on line 41
отрывок программы приведен в приложении.
Я не спец в РНР, но думаю %% там лишние, поскольку отлаживал запросы в PHPmyAdmin.

Приложение:

Отправлен: 18.07.2006, 09:36
Вопрос задал: Нода Сергей (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Нода Сергей!
Для начала напишите mysql_query($conn, $sql) вместо mysql_query($sql, $conn)
% значит "любой набор символов", тоесть если вы пишете %$search%, то ищете строку, которая содержит $search, а без % - точное совпадение с $search
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 18.07.2006, 09:54
Оценка за ответ: 5
Комментарий оценки:
Спасиба что объяснил, я раньше работал на Access, то там не так запросы строились

Отвечает: Madproger
Здравствуйте, Нода Сергей!

2PVS
Насчет функции mysql_query() - порядок у него абсолютно правильный

2Нода Сергей
Почему у тебя в функции $sql - тогда как запрос $qry?
Напиши так
$result=mysql_query($qry, $conn);

И если запрос правильный - то все будет ОК
Во вторых в след раз приводи получившийся запрос
например так
$qry="SELECT name FROM data WHERE name LIKE '%". $search."%'";
echo $qry."<br />";
$result=mysql_query($sql, $conn) or die(mysql_error());
И здесь выкладывай получившийся запрос и ошибку mysql
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 18.07.2006, 10:12
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Получилось. извени, не заметил что поменялась переменная, т.к. скопировал запрос с прошлого вопроса.

Отвечает: Alexey Vilchinsky
Здравствуйте, Нода Сергей!
вот так напиши:
$qry="SELECT name FROM data WHERE name LIKE '%$search%'";
в твоем скрипте ошибка:
$qry="SELECT name FROM data WHERE name LIKE '%". $search."%'"; - нельзя ставить одинарную кавычку между двойными. Надо ее экранировать, либо писать 2 раза.
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: Студент)
Ответ отправлен: 18.07.2006, 11:37
Оценка за ответ: 5
Комментарий оценки:
Со скобками там все нормально. Но всеравно спасиба


Вопрос № 49.461
Здраствуйте Уважаемые Эксперты! Есть такая проблема как можно организовать поиск в базе данных (Access) например телефонного справочника по фамилии, и вывести его на страничку.спасибо огромное , если можно примерчик, с/у Ера
Отправлен: 18.07.2006, 12:13
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, ERA!
То, что Вы хотите сделать, возможно через функции ODBC. Также вполне возможно что существует какое-то расширение PHP, которое может доступатся напрямую к Access'y. Поищите в Internet'e - там иногда попадаются нужные вещи :-)
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 18.07.2006, 12:27


Вопрос № 49.472
Уважаемые эксперты! Может вопрос из другой категории, но все же...Вот фрагмент PHP-кода:
SELECT u.*, g.*, o.logged, o.idle FROM '.$db->prefix.'users AS u IN
Чё за u.*? И для чего в запросе точки?
Отправлен: 18.07.2006, 14:22
Вопрос задал: RebornDemon (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, RebornDemon!
В случае, когда выборка делается не из одной конкретной таблицы, а из нескольких сразу, синтаксис SELECT немного другой. При выборке из одной таблицы:
SELECT `поле` FROM `таблица`
При выборке из нескольких таблиц:
SELECT Таблица1.поле1 , Таблица1.Поле2 , Таблица2.Поле3 FROM `Таблица1`,`Таблица2`,`Таблица3`
Поэтому в данном случае из таблиц u и g выбираются все поля без исключения, а также из таблицы o выбираются logged и idle.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 18.07.2006, 14:27

Отвечает: Alexey Vilchinsky
Здравствуйте, RebornDemon!
u.* значит выбрать все поля таблицы, у которой алиас u.
users AS u - значит дать таблице users алиас u
---------
Делая людям добро, мы возвращаем его многократно...
Ответ отправил: Alexey Vilchinsky (статус: Студент)
Ответ отправлен: 18.07.2006, 14:38

Отвечает: PVS
Здравствуйте, RebornDemon!
$db->prefix.'users AS u - назначает алиас u для таблицы $db->prefix.'users . Таким образом u.* значит "все поля таблицы с алиасом или именем u"
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 18.07.2006, 15:10

Отвечает: SergeyMAC
Здравствуйте, RebornDemon!
u.* и g.* используется как вам сказали выше для выбора из нескольких таблиц, а . это просто конкатенация (слияние строк), сделано чтобы включить значение $db->prefix в текст запроса.
Удачи...
---------
броня крепка, и танки наши быстры
Ответ отправил: SergeyMAC (статус: 6-ой класс)
Ответ отправлен: 18.07.2006, 15:10


Вопрос № 49.529
Здравствуйте уважаемые эксперты. У меня следующий вопрос. Скачал с сайта http://de.php.net/downloads.php пакет PHP 5.1.4 zip package. Разархивировал его (d:php) и скачал также инструкцию (manual). При чтении этой инструкции я выяснил что не хватает файла php5activescript.dll. Я потом выяснил что этот файл находится в пакете Collection of PECL modules for PHP 5.1.4 . Но зачем этот файл нужен, я так точно и не понял. Я так понял что его используют для интеграции в другие языки. Что потом создавая программы на других языках для Win32 можно использовать скрипты php. Это как ассемблерные вставки в C/C++ или нет? Если я не прав, то может объясните мне зачем этот файл php5activescript.dll нужен и как его использовать.
Заранее благодарю.
Отправлен: 19.07.2006, 00:40
Вопрос задал: igorok (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Madproger
Здравствуйте, igorok!

ActiveScript is a windows only SAPI that enables you to use PHP script in any ActiveScript compliant host, like Windows Script Host, ASP/ASP.NET, Windows Script Components or Microsoft Scriptlet control

Для интеграции правильно.
Позволяет встраивать куски кода РНР например в ASP код
<%@language=PHPScript %>
<% $Response->Write("Hello"); %>

http://cvs.php.net/viewvc.cgi/pecl/activescript/README?revision=1.6
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 19.07.2006, 10:40
Оценка за ответ: 5
Комментарий оценки:
Спасибо. Всё понятно.


Вопрос № 49.544
И снова здрасте, уважаемые эксперты. Такой вопрос: есть папка на хосте под названием avatars, при установке какого-либо популярного форума рекомендуется изменить для нее ограничения на 0777, дабы можно было грузить в нее аватары. Но это дает возможность заливать на хост вредоносные скрипты от юзера. Каким образом можно избежать загрузки в эту папку не того что надо? (только ли с помощью .htaccess?)
Отправлен: 19.07.2006, 07:58
Вопрос задал: RebornDemon (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, RebornDemon!
Подождите, вы что-то путаете... Каким образом пользователь сможет загрузить файл к вам на сервер? Если вы имеете ввиду загрузку аватаров с компьютера пользователя, то, обычно делается проверка на тип файла - расширения изобрадений: *.jpg, *.gif, *.png. Каким же образом пользователь может загрузить туда посторонний файл? Если проверки нет, её нужно обязательно написать! А насчёт 0777 - я бы не стал ставить такие права. Форуму и аватарам, как вполне обычным скриптам, достаточно 0755. Удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 19.07.2006, 09:19

Отвечает: Physicist
Здравствуйте, RebornDemon!

Во-первых при заливке проверяйте расширение файла, например, так:
$filename=$_FILES['ImageFormName']['name'];
$ext=substr($newfilename,1+strrpos($newfilename,'.'));
if(!in_array(strtolower($ext),array('jpg','gif','png'))) exit;

Затем проверьте, можно ли определить размер картинки (если нет - это не картинка):
$tmpfilename=$_FILES['ImageFormName']['tmp_name'];
$data=GetImageSize($tmpfilename);
if(!is_array($data)) exit;

И лишь после этого выполняйте
move_uploaded_file($tmpfilename,'avatars/'.$filename);

На самом деле большинство форумов выполняют такую (или аналогичную) проверку. Чтобы узнать так ли это в Вашем случае - попробуйте сами загрузить произвольный файл в качестве аватара.
Ответ отправил: Physicist (статус: 7-ой класс)
Ответ отправлен: 19.07.2006, 09:50


Вопрос № 49.551
Нужно сделать экспорт данных в Excel-таблицу.
1. Есть какой-нибудь готовый компонент для этого?
2. Или как можно добавить данные в существующий файл (знаю номера колонок и строк для добавления; могу сделать шаблон).
Отправлен: 19.07.2006, 08:56
Вопрос задал: Php23 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: PVS
Здравствуйте, Php23!
Если Вы работаете под Windows'ом, то через extension php_w32api Вам доступны функции API Windows. Таким образом Вы можете использовать OLE для работы с Excel.
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 19.07.2006, 09:54

Отвечает: Physicist
Здравствуйте, Php23!

1. Есть такой компонент: PEAR::Spreadsheet_Excel_Writer (http://pear.php.net/Spreadsheet_Excel_Writer)
Про работу с ним читайте на http://www.codenet.ru/webmast/php/Excel.php (или http://phpclub.ru/detail/article/Excel_Writer - не знаю, где оригинал)

2. Точно не помню, но по-моему PEAR::Spreadsheet_Excel_Writer позволяет только создавать Excel-файлы. Если это действительно так, то нужно или искать другой компонент, или придумывать что-то самому.
Мне пришло в голову только использование компонента Spreadsheet_Excel_Reader (http://sourceforge.net/projects/phpexcelreader) для чтения Excel файла, а затем PEAR::Spreadsheet_Excel_Writer для создания нового на его основе.
Ответ отправил: Physicist (статус: 7-ой класс)
Ответ отправлен: 19.07.2006, 10:29

Отвечает: Santana
Здравствуйте, Php23!
Я делаю файлы XML-формата. Нет необходимости пользоватся какими-то компонентами. файлы XML-формат текстовые и этим все сказано. Отчень удобно. Если дать ему расширение .xls, то по ссылке
<a href=XMLFileName.xls TARGET=_blank>Форматированный отчет</a>
он будет грузится прямо в ексель.
Ответ отправил: Santana (статус: 4-ый класс)
Ответ отправлен: 19.07.2006, 11:06


Вопрос № 49.553
Уважаемые эксперты, еще один вопрос. Что за файлы такие *tpl, каково их назначение и принцип использования? Заранее благодарю.
Отправлен: 19.07.2006, 09:08
Вопрос задал: RebornDemon (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Jeka911
Здравствуйте, RebornDemon!

tpl - сокращение от template, это файлы шаблонов.
Вероятнее всего это шобоны Smarty (smarty.php.net) имеют собственные скрипты описания, что позволяет полностью переложить дизайн на smarty, в то время как код php остается тем же.
---------
Шахтер - чемпион!!!
Ответ отправил: Jeka911 (статус: 7-ой класс)
Ответ отправлен: 19.07.2006, 09:18

Отвечает: PVS
Здравствуйте, RebornDemon!
Скорее всего Вам попался какая-то разработка, содержащая шаблоны (TemPLate). Конкретное расширение не имеет зачения - оно зависит от того, что написано в PHP-скрипте, который будет их использовать. Расширение tpl никак специально не обрабатывается (по умолчанию, но все можно настроить).
Принцип использования следующий: Вы пишете страницу (html), раскрашиваете ее как Вам нравится, вообщем полный полет фантазии :-). Затем те части страницы, которые должны динамически изменятся Вы заменяете на набор символов, который позволит Вам однозначно идентифицировать, что это и есть место вставки, например [%MESSAGE_TEXT%]. Потом в скрипте Вы открываете файл шаблона, читаете его содержимое и если встречается "ключевая фраза" заменяете ее на реальное содержимое, взятое например из базы данных.
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 19.07.2006, 10:09

Отвечает: SergeyMAC
Здравствуйте, RebornDemon!
*tpl - это шаблоны для станиц, коротенько глянуть про них можно здесь:
http://infocity.kiev.ua/inet/content/inet204.phtml
http://www.hostmake.ru/articles/php_perl/673/
http://www.intuit.ru/department/pl/plphp/15/2.html

А если есть возможность прочитай в книжке Д.Котеров "php 5" , там работа с шаблонами хорошо описана.

Удачи...
---------
броня крепка, и танки наши быстры
Ответ отправил: SergeyMAC (статус: 6-ой класс)
Ответ отправлен: 19.07.2006, 17:34


Вопрос № 49.557
Добрый день эксперты!
У меня такой вопрос: имею строку запроса для поиска в базе:

$sql="SELECT name FROM data WHERE name LIKE '%".$search."%'";

ввожу строку для поиска (на форме) - 'ГИВ', а мне выдает значения в которых нет даного сочетания букв.
Возвращаемый список навожу в приложении.
Заранее спасибо.

Приложение:

Отправлен: 19.07.2006, 09:48
Вопрос задал: Нода Сергей (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Нода Сергей!
Похоже, что Вам просто выводится полный список. Вставте перед выполнением запроса
echo $sql;
и посмотрите действительно ли правильно сформирован запрос.
Ответ отправил: PVS (статус: 10-ый класс)
Ответ отправлен: 19.07.2006, 09:58
Оценка за ответ: 3
Комментарий оценки:
строка запроса:
SELECT name FROM data WHERE name LIKE '%ГИВ%'
все нормально, но в базе не 30 записей, а более 500

Отвечает: Madproger
Здравствуйте, Нода Сергей!

Если запрос правильный - то скорее всего следующая проблема
У тебя таблицы с кодировкой по умолчанию latin-1 данные же в кодировке cp1251. Отсюда и такой вывод.
Частично помочь может

SELECT BINARY name FROM data WHERE name LIKE BINARY('%".$search."%')"
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 19.07.2006, 10:27


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное