Вопрос № 52986: Привет всем экспертам! У меня к Вам вопрос: есть строка вида "какойтотекст$x1текст$x2...". Т.е содержит текст и названия переменных. Она получена динамически(загружена из файла например). Можно ли как-нибудь заменить подстроки $xi на реальн...Вопрос № 53003: Уважаемые Эксперты раньше пользовлся версией PHP 4.2 при переходе на 4.4 перестали работать сслки вида <a href="index.php?s=company">о компании</a>
код индексной странички приведен ниже подскажите для чайника в чем проблемма....Вопрос № 53012: Доброго времени суток уважаемые. Мне надо сделать скрипт голосования. основанный не на базе данных, а на файлах. И тут я чуть-чуть встал в тупик. Дело в том что вывод нужно сделать срахуна две страницы. в одной итоги голосования а во вторйо комменты....Вопрос № 53042: Здравстуй
те, уважаемые эксперты.
Подскажите, пожалуйста, какие-нибудь ссылки на описание и работу с AJAX и его взаимодействие с PHP, елси у кого есть электронные книги по теме, также буду благодарен.
Заранее, спасибо...Вопрос № 53063: Помогите, пожалуйста, найти ошибку
Есть форма, при нажатии кнопки переменные формы передаются скрипту...Вопрос № 53078: Доброе время суток!
Вопрос по ф-ции mail() - как можно задать путь к sendmail? В cpanel путь /usr/sbin/sendmail, если просто отправлять письмо через mail, то на двух моих хостингах из трех письма не отправляются. Точнее не доходят, сама ф-ци...Вопрос № 53082: Здравствуйте эксперты!
База данных MySQL содержит слова русского языка (~110000 записей)
почему при запросе
SELECT* FROM `dictionary` WHERE `word` ='гений' в результат попадает ещё одно слово "веник" ??
С чем это может...
Вопрос № 52.986
Привет всем экспертам! У меня к Вам вопрос: есть строка вида "какойтотекст$x1текст$x2...". Т.е содержит текст и названия переменных. Она получена динамически(загружена из файла например). Можно ли как-нибудь заменить подстроки $xi на реальные значения соответствующих переменных? Причем все автоматически? Названия переменных конечно не пронумерованы.
Отправлен: 23.08.2006, 10:52
Вопрос задал: Alexius (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Zysoftik
Здравствуйте, Alexius!
Можно. Вы можете вызвать функцию eval, которая исполнит переданную ей строку как PHP код.
Т.е. можно так:
<?
...
$s='$str=какойтотекст$x1текст$x2';
eval($s);
echo $str;
...
?>
если код что-о выводит, то вывод будет перенаправлен в браузер (или в открытый активный буфер)
Ответ отправил: Zysoftik (статус: 6-ой класс)
Ответ отправлен: 23.08.2006, 11:01 Оценка за ответ: 5 Комментарий оценки: Спасибо за быстрый ответ. Помог код из справочника по ф-ии eval: eval("$str = "$str";");
Отвечает: Cimus
Здравствуйте, Alexius!
Функчия eval более медленная чем include(), можно вывести текст вот так:
include('Ваш текст.txt');
Сам текст должен выглядеть вот так -
текст текст текст <?=$x1?> текст текст текст <?=$x2?> <?=$x2?>текст текст текст
<?=$x...?>.......
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 6-ой класс)
Ответ отправлен: 23.08.2006, 13:28
Отвечает: Santana
Здравствуйте, Alexius!
Ответ лежит на поверхности. ПХП развернет Ваши переменные и в том виде в каком вы его употребили в вопросе. те
есть переменная $x1 и пусть она равна $x1 = " ЗНАЧЕНИЕ ПЕРВОЙ ПЕРЕМЕННОЙ "
соответственно $x2 = " ЗНАЧЕНИЕ ВТОРОЙ ПЕРЕМЕННОЙ " и ежели мы какой то третей переменной пусть это будет $x3 присвоим значение "какойтотекст$x1текст$x2..."
$x3 = "какойтотекст$x1текст$x2..."
то в ней будет строка следущего вида
"какойтотекст ЗНАЧЕНИЕ ПЕРВОЙ ПЕРЕМЕННОЙ текст ЗНАЧЕНИЕ ВТОРОЙ ПЕРЕМЕННОЙ ..."
честно слово :)
Ответ отправил: Santana (статус: 5-ый класс)
Ответ отправлен: 23.08.2006, 18:32
Отвечает: NoOne
Здравствуйте, Alexius!
В общем виде можно сделать так (см. приложение), переменная может состоять из символов a-z0-9 и символа подчеркивание, после переменной должен идти хотя бы один символ, которых не входит в набор a-z0-9 и "_", хотя бы просто пробел. Возможно в приложении код вставится криво и не будет работать, тогда отпишитесь в ПМ.
Приложение:
--------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (c) М.Фаулер
Ответ отправил: NoOne (статус: 2-ой класс)
Ответ отправлен: 23.08.2006, 19:46
Вопрос № 53.003
Уважаемые Эксперты раньше пользовлся версией PHP 4.2 при переходе на 4.4 перестали работать сслки вида <a href="index.php?s=company">о компании</a> код индексной странички приведен ниже подскажите для чайника в чем проблемма.
Очевидно изменился параметр register_globals в файле конфигурации php.ini, если этот параметр включен, то это позволяет обращатся к переменным передаваемым скрипту напрямую, т.е. будто они были заданы как глобвльные. А отключение этого параметра так делать не позволяет, и к таким переменным следует обращаться через массивы $_GET - для переменных переданных методом GET и $_POST - для POST, т.е. в данном случае переменная s будет $_GET['s'], а вообще, чтобы скрипт не зависел от установки этого параметра, используйте
эти массивы ($_GET и $_POST) всегда.
Ответ отправил: Saw (статус: 3-ий класс)
Ответ отправлен: 23.08.2006, 13:56
Отвечает: Zysoftik
Здравствуйте, Игорь Том/ IgorSpb!
Скорее всего в конфигурации PHP отключена опция register_globals.
А вообще, я бы рекомендовал использовать специальные предопределенные массивы:
$_GET - для переменных, передаваемых через GET запрос,
$_POST - для POST запроса.
Попробуйте вместо $s в коде написать $_GET['s'] и все должно заработать.
Ответ отправил: Zysoftik (статус: 6-ой класс)
Ответ отправлен: 23.08.2006, 13:58
Отвечает: gp
Здравствуйте, Игорь Том/ IgorSpb!
Попробуйте в начале php кода в приведенном примере вставить
$s=$_GET["s"];
Если поможет, значит, в новой конфигурации у вас register_globals = off
--------- Я знаю достаточно, чтобы осознать, сколь многого я не знаю...
Ответ отправил: gp (статус: Академик) Украина, Симферополь WWW:Недвижимость в Крыму ---- Ответ отправлен: 23.08.2006, 13:59
Вопрос № 53.012
Доброго времени суток уважаемые. Мне надо сделать скрипт голосования. основанный не на базе данных, а на файлах. И тут я чуть-чуть встал в тупик. Дело в том что вывод нужно сделать срахуна две страницы. в одной итоги голосования а во вторйо комменты. и потому возникает вопрос, как вывести на страницу ЧАСТЬ массива текстового? Ведь иного пути я не вижу, кроме как использовать в текстовой файле массив. И второй вопрос. Я немного полдазил по мануалу, но так и не вспомнил функцию блокирования доступа к файлу пока
его считываютзаписывают. И подскжите, как лучше всего организовать вывод массива - общие советы? Просто такое я делаю в первый раз и с базой данных вопросов бы не возникло вообще. Заренее благодарю.
Отправлен: 23.08.2006, 14:39
Вопрос задал: Чинга (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Козлов Алексей Сергеевич
Здравствуйте, Чинга!
1. Хранить данные можно в файле-CSV. Т.е. в виде номер_голосовавщего, оченка, комментарий. Разделенных спецсимволом - например : или ;
Функция fgetcsv() читает построчно CSV-файл с дескриптором $fp и разбивает по символу $delim.
2. Для блокировки файла в PHP существует функция flock(). Для блокировки файла лучше использвать следующую комбинацию:
flock($f, 1); - блокировка на чтение.
flock($f, 2); - блокировка на запись.
... некий код
flock($f, 3); - снятие блокировки.
--------- Вы доставили мне истинное удовольствие парни, взвалив на меня Ваши проблемы (М. Фрай).
Ответ отправил: Козлов Алексей Сергеевич (статус: 6-ой класс)
Ответ отправлен: 23.08.2006, 14:55 Оценка за ответ: 4 Комментарий оценки: Благодарю. Но я не буду пользовать CVS файлами 1) я не знаю специфику работу. 2) Во избежания разных прецендентов то как, использование на машине хостера php3 - код обязан быть универсальным.
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, Чинга!
можно сделать следующее:
хранить каждый опрос в отдельном файле.
к примеру, 1.txt, 2.txt, 3.txt, ...
всё в одной папке vote
предположим, что каждый файл имеет такую структуру (без нумерации строк):
0. <вопрос>
1. <вариант1>%%<вариант2>%%<вариант3>
2. <количество1>%%<количество2>%%<количество3>
3. <коммент1>%%<коммент2>
так вот, читаете файл с помощью file().
например, $vot = file('vot/2.txt'); получаете массив.
$vot[0] - это ваш вопрос, $vot[1] - варианты ответа, и т.д...
если нужны, варианты ответа, колчество выбора вырианта, комментарии можете разделить ещё.
для этого можете использовать explode(), ну, или split().
для данного примера:
$ver = explode("%%", $vot[1]); $kol = explode("%%", $vot[2]); $com = explode("%%", $vot[3]);
вот Вы и получили всё в массивах...
варианту $ver[$i] соответствует $kol[$i].
для вывода чего-либо просто выводите элементы соответствующего массива в цикле.
это можно сделать так: foreach($com as $key=>$value){ echo($value); } или for($i=0;$i<count($com);$i++){ echo($com[$i]); }
думаю, всё ясно...
на счет блокирования файла...
вот, прочтите это: http://www.compdoc.ru/internet/php/php_blocking/
P.S. Вы можете придумать любую другую структуру для хранения информации. Возможно, получится по лучше... и даже сможете держать все опросы в одном файле...
Удачи!
Ответ отправил: Яруллин Азат Рифкатович (статус: 8-ой класс)
Ответ отправлен: 23.08.2006, 23:21 Оценка за ответ: 5 Комментарий оценки: Благодарю! Все ясно четко и понятно! ПАСИБО ОГРОМНОЕ ВАМ! :))))
Вопрос № 53.042
Здравстуйте, уважаемые эксперты.
Подскажите, пожалуйста, какие-нибудь ссылки на описание и работу с AJAX и его взаимодействие с PHP, елси у кого есть электронные книги по теме, также буду благодарен.
Заранее, спасибо
Отправлен: 23.08.2006, 17:02
Вопрос задал: Diver (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, Diver!
Нашел книгу "Ajax And Php: Building Responsive Web Applications" на английском языке (русское название книги - "AJAX и PHP. Разработка динамических веб-приложений". Книгу можно скачать с http://rapidshare.de/files/28779396/Packt.Publishing.Ajax.And.Php.Building.Responsive.Web.Applications.Mar.2006.rar.html
Ответ отправил: Бакулин Станислав Анатольевич (статус: 1-ый класс)
Ответ отправлен: 24.08.2006, 13:38 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 53.063
Помогите, пожалуйста, найти ошибку
Есть форма, при нажатии кнопки переменные формы передаются скрипту
Приложение:
Отправлен: 23.08.2006, 20:22
Вопрос задал: TaRaS (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Santana
Здравствуйте, TaRaS!
Ну во первых в sex.php нужны теги <html> и <body> в паре иссесно
во вторых зачем <form action="http://test1.ru/sex.php" method="get"> если они в одном каталоге на серваке вполне хватит <form action="sex.php" method="get">.
а так вроде все нормально. может разве, что метод не get a post попробовать
удачи
Ответ отправил: Santana (статус: 5-ый класс)
Ответ отправлен: 23.08.2006, 20:36
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, TaRaS!
Вы просто не правильно получаете выбранное значение...
Вот:
Файл sex.php
<?php
echo($_GET['sex']); // или echo($_REQUEST['sex']);
?>
Удачи!
Приложение:
Ответ отправил: Яруллин Азат Рифкатович (статус: 8-ой класс)
Ответ отправлен: 23.08.2006, 20:37 Оценка за ответ: 5
Вопрос № 53.078
Доброе время суток!
Вопрос по ф-ции mail() - как можно задать путь к sendmail? В cpanel путь /usr/sbin/sendmail, если просто отправлять письмо через mail, то на двух моих хостингах из трех письма не отправляются. Точнее не доходят, сама ф-ция возвращает true, никаких варнингов не выпадет... ini_set('sendmail_path', '/usr/sbin/sendmail') ничего не меняет.
Я конечно понимаю что тут нужно в саппорт обращаться, но сейчас я этого сделать не могу, поэтому если есть какие-то идеи - помогите плз. Заранее благодарен!
Отправлен: 23.08.2006, 23:48
Вопрос задал: Nexus (статус: 4-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Яруллин Азат Рифкатович
Здравствуйте, Nexus!
Вообще, функция mail() - это не гарантированная доставка почты, т.е. она может не дойти... как в Вашем случае. (Вы правы на счет того, что нужно в support)
Лучше использовать какой-нибудь класс для отправки письма через smtp с авторизацией. при такой отправке вероятность того, что письмо дойдет выше.
Классы:
http://www.alangor.com/products/smtp/manual.php
http://www.phpclasses.org/browse/package/2065.html
Таких классов много, можете поискать в интернете...
Удачи!
Ответ отправил: Яруллин Азат Рифкатович (статус: 8-ой класс)
Ответ отправлен: 24.08.2006, 00:16 Оценка за ответ: 5 Комментарий оценки: спасибо за ответ. через mail было бы проще, но, наверное придется действительно через smtp
Отвечает: Cimus
Здравствуйте, Nexus!
Попробуйте отправлять письма через внешние сервера, такие как smtp.maul.ru,
для этого есть класс PHPmailer.
http://php.russofile.ru/ru/translate/mail/phpmailer/
Используя его, у меня вообще небыло проблем с почтой, да и сама отправка становиться значительно легче.
--------- Достичь можно любых высот !
Ответ отправил: Cimus (статус: 6-ой класс)
Ответ отправлен: 24.08.2006, 02:09 Оценка за ответ: 5 Комментарий оценки: действительно неплохой класс, хотя если нужно отправить короткое письмо mail() был бы удобнее... если бы работал =
Вопрос № 53.082
Здравствуйте эксперты!
База данных MySQL содержит слова русского языка (~110000 записей)
почему при запросе
SELECT* FROM `dictionary` WHERE `word` ='гений' в результат попадает ещё одно слово "веник" ??
С чем это может быть связано?
Структура таблицы в приложении.
Приложение:
Отправлен: 24.08.2006, 03:44
Вопрос задал: Cimus (статус: 6-ой класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Madproger
Здравствуйте, Cimus!
Потому что у тебя кодировка таблицы скорее всего latin1 а должна быть cp1251
Можешь попробовать сделать так
SELECT* FROM `dictionary` WHERE BINARY `word` ='гений';
Но лучше все таки создовай таблицы в нужной тебе кодировке
--------- И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 9-ый класс)
Ответ отправлен: 24.08.2006, 09:32 Оценка за ответ: 5 Комментарий оценки: Да, действительно так и есть, о кодировках я и неподумал. Спасибо.