Вопрос № 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 коммандой засунуть в массив.
Отвечает: 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
Отвечает: Бобровский Сергей Сергеевич
Здравствуйте, Александр Михайлович!
Специальной функции, к сожелению, не знаЮ, но осуществить это можно следующим образом:
Приложение:
--------- Никогда не бойтесь делать то, что не умеете! Помните: Ноев Ковчег построил любитель, а Титаник - профессионал.