Отправляет email-рассылки с помощью сервиса Sendsay

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

  Все выпуски  

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


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

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

Выпуск № 736
от 12.08.2007, 12:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 443, Экспертов: 54
В номере:Вопросов: 3, Ответов: 9


Вопрос № 97556: Здравствуйте, уважаемые эксперты! Проблема у меня следующая: есть класс. В нём есть метод, который использует функцию mixed preg_replace_callback ( mixed $pattern, callback $callback, mixed $subject [, int $limit [, int &$count]] ). Мне нужно, чтобы ...
Вопрос № 97596: Доброго времени суток уважаемые эксперты. Возник такой вопрос. Есть страничка на html c таблицей вида (см. приложение). Существует ли простой способ сделать так, чтобы при нажатии на ссылку в открывающуюся форму письма в качестве темы автомат...
Вопрос № 97608: Привет. Есть таблица. Мне нужно сформировать массив из первого столбца для всех записей . Как засунуть все эти данные в масив $query = "SELECT two FROM table"; //выбираем нужный столбец из таблицы $result = mysql_query($query); //...

Вопрос № 97.556
Здравствуйте, уважаемые эксперты! Проблема у меня следующая: есть класс. В нём есть метод, который использует функцию mixed preg_replace_callback ( mixed $pattern, callback $callback, mixed $subject [, int $limit [, int &$count]] ). Мне нужно, чтобы аргумент $callback был другим методом класса. Но... интерпритатор выдает ошибку и желаемого действия не проиходит. Как можно это реализовать? или хотя бы, чтобы в callback-функцию можно было передать дополнительные аргументы?
Отправлен: 06.08.2007, 22:50
Вопрос задал: IceTaG (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: HookEst
Здравствуйте, IceTaG!
Если callback - метод класса, нужно передавать вместо имени callback - массив из двух элементов, первый - переменная-объект класса(может быть $this), второй имя метода:

class CBR{

function callback($matches){
return get_class($this);
}

function pregreplace($subject){
return preg_replace_callback('/%CLASS%/',array($this,'callback'),$subject);
}
}

$cb=new CBR;
echo $cb->pregreplace('%CLASS%->pregreplace sad: "%CLASS% has callback method!"');

Успехов.
Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 07.08.2007, 05:52

Отвечает: Oleg S. Mezhov
Здравствуйте, IceTaG!
в функции preg_replace_callback вы указываете имя функции callback. Вы вполне можете написать myclass->mycallbackfunction, в этом случае в функцию в любом случае будет передано значение myclass. (попробовал, работает)
Если вы хотите создать что-то ещё, то нарушается логика вызова callback функции. Она подбирает замену на основании списка вхождений подстроки $pattern.

Если все же обязательно нужно сделать то, что вы хотели изначально, то сделайте собственную функцию!

Приложение:

Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 07.08.2007, 09:21


Вопрос № 97.596
Доброго времени суток уважаемые эксперты.
Возник такой вопрос.
Есть страничка на html c таблицей вида (см. приложение). Существует ли простой способ сделать так, чтобы при нажатии на ссылку в открывающуюся форму письма в качестве темы автоматически копировалось содержимое ячейки таблицы из той же строки?
Т.е. пользователю не нужно было бы заполнять в форме графу с темой (subject) письма, она будет скрыта (см. приложение). Поскольку я практически не знаком с php, то не знаю возможно ли это реализовать и если возможно, то как. Знаю лишь, что есть функция print, которая может выводить переменные в определённом месте, в данном случае в качестве значения темы письма (value).
Заранее огромное спасибо тем, кто сможет помочь с решением данной проблемы!
С уважением, Евгений.

Приложение:

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

Отвечает: Flynn
Здравствуйте, Seigi!
Самых простых варианта два. В приложении показаны оба.
Первый - если у тебя тема передается по ссылке - то её название берем из массива $_GET[]. Но русские буквы через строку запроса передаются только их кодами.
Второй - через форму. Собственно тоже самое, только в строке запроса теперь самой названии темы не будет и обращение уже к другому масиву $_POST

Но лично я бы советовал таким образом не делать, так как в любом из методов поменять значения очень просто (в первом для этого надо просто изменить строку запроса) - и то что у тебя тема скрыта или нет ничего не даст.
Так что легче будет передавать какое-то числовое значение темы и уже в РНР заменять его на какое-то строковое значение.
Так же совутею фильтровать переменные, так как приведенный ниже код со взгляда безопасности очень плох, но это уже другой вопрос :)

Приложение:

Ответ отправил: Flynn (статус: 3-ий класс)
Ответ отправлен: 07.08.2007, 10:59

Отвечает: Powoditch konstantin
Здравствуйте, Seigi!
В этом Вам поможет яваскрипт. Допустим Вы открыли новое окно с формой для отправки письма вот таким образом:
-----------
<input type="button" onclick="window.open('title', 'path', 'params')">
-----------
Тоисть при нажатии на кнопку открывается окно для отправки письма(адрес укажете сами).

И в этом окне есть таблица для указания темы письма следующего вида:
----------------
<table>
<tr>
<td id="subj"></td>
// здесь идет html код формы
</tr>
---------------
Для смены темы письма Вы должны вставить следующий код:
type="text/javascript">
document.getElementById("subj").innerHTML = window.opener.document.getElementById("subject").value;
</script>
Ответ отправил: Powoditch konstantin (статус: 4-ый класс)
Ответ отправлен: 07.08.2007, 13:26


Вопрос № 97.608
Привет. Есть таблица. Мне нужно сформировать массив из первого столбца для всех записей . Как засунуть все эти данные в масив
$query = "SELECT two FROM table"; //выбираем нужный столбец из таблицы
$result = mysql_query($query); // посылаем вопрос и сохраняем результат

А дальше что ?
Какой php коммандой засунуть в массив.
Отправлен: 07.08.2007, 11:46
Вопрос задал: Александр Михайлович (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Александр Михайлович!
$query = "SELECT two FROM table"; //выбираем нужный столбец из таблицы
$result = mysql_query($query); // посылаем запрос и сохраняем результат
$arr=array();//инициализируем массив
while(mysql_fetch_row($result)){ //перебираем результат в цыкле
$arr[]=mysql_result($result,"two"); //заносим в массив
};
Ответ отправил: PVS (статус: Специалист)
Ответ отправлен: 07.08.2007, 11:52

Отвечает: Oleg S. Mezhov
Здравствуйте, Александр Михайлович!
Специальной функции для этого не существуют. Вот один из тривиальных способов как сделать тоже самое:

Приложение:

Ответ отправил: Oleg S. Mezhov (статус: 3-ий класс)
Ответ отправлен: 07.08.2007, 11:59

Отвечает: Yumark
Здравствуйте, Александр Михайлович!

а потом я пользуюсь подобным:

while ( $a_row = mysql_fetch_array( $result)) { print "$a_row[two]<br>};

вывод всего списка на экран.

P.S.: все сортировки, выборки, проверки на условия и т.п. делаю средствами MySQL.
Ответ отправил: Yumark (статус: 2-ой класс)
Ответ отправлен: 07.08.2007, 12:33

Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Александр Михайлович!
Специальной функции, к сожелению, не знаЮ, но осуществить это можно следующим образом:

Приложение:

---------
Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.

Ответ отправил: Бобровский Сергей Сергеевич (статус: 1-ый класс)
Ответ отправлен: 07.08.2007, 12:35

Отвечает: Azrr
Здравствуйте, Александр Михайлович!
Смотрите приложение...

Приложение:

Ответ отправил: Azrr (статус: 2-ой класс)
Ответ отправлен: 07.08.2007, 21:32


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное