-K-

Рейтинг
97
Регистрация
07.12.2005

Запости еще функцию clsDoXMLReq() и селект, содержимое которого надо изменить. Вечером напишу - с собой исходников нету.

Через скрытый iframe и XMLRPC можно попробовать.

на select поле вешаешь onChange, который загружает в iframe файл, он подтягивает с удаленного данные и в ответ генерирует уже локальный JavaScript меняющий список в родителе

Не пробовали вернуть скрипт?
Ответить с цитированием

Честно говоря нет. Сразу же возникла мысль, что если хочешь хорошо - сделай сам :)

Люблю такие топики, респекта бочку тебе -K- валяюсь под столом

Вот тогда еще в догонку. Функция CategorySelect() была разработана для создания списка категорий на страницах добавления/редактирования объявления, но для верности была беспорядочно натыкана везде гне не попадя... иногда по несколько раз... А каждый вызов грозит несколькими десятками запросов к базе. Но это, наверное, исходя из логики, что в шаблон нужно передать максимум, а верстальщик уж пусть сам решает нужен ли ему будет при просмотре объявления выпадающий список с категориями.

Кстати {html_options options=$cust_options selected=$customer_id} еще никто не отменял.


function CatSelectRow($parent,$level){

global $sort_cat;

$q = mysql_query("SELECT cat, name, count_items, total_items, parent FROM wzb_cat WHERE cat<>0 and parent=$parent $sort_cat");
$a = array();
while ($row = mysql_fetch_row($q))
{
$row[5] = $level;
$a[] = $row;
$b = CatSelectRow($row[0],$level+1);
for ($j=0; $j<count($b); $j++)
{
$a[] = $b[$j];
}
}
return $a;

}

function CategorySelect()
{
$category_select = "";
$tmp = isset($_GET["cat"]) ? $_GET["cat"] : (isset($_POST["category_select"]) ? $_POST["category_select"] : null);
$cats = CatSelectRow(0,0);
for ($i=0; $i<count($cats); $i++)
{
if($cats[$i][4] == 0)$category_select .= " &nbsp;&nbsp;<optgroup label='".$cats[$i][1]."'></optgroup>\n";

if($cats[$i][4] == 0){
}else{
$category_select .= "<option value=\"".$cats[$i][0]."\"";
if ($tmp == $cats[$i][0])
$category_select .= " selected";
$category_select .= ">";


for ($j=0;$j<$cats[$i][5];$j++) $category_select .= "...";
$category_select .= $cats[$i][1];
$category_select .= "</option>\n"; }
}
return $category_select;
}

Что еще отличает порядочного разработчика? Что нужно сделать что бы лишний раз не мозолить глаза надоедливыми варнингами об обращении к неустановленной переменной или несуществующему ключу массива? Нет не правильно - не инициализировать, не проверять на существование и боже упаси использовать эти бредовые is_set`ы и прочуюю муру, а взять и отключить показ ошибок! Зато при включении их можно будет наблюдать аж 2-3 экрана. :)

ЗЫ. Небольшой оффтоп.

Идею с паролем для каждого объявления откинул сразу и пока прикрутил авторизацию с базой пользователей основного сайта. Хотелось бы что бы можно было поставить независимо от основного сайта. Как вариант сделать авторизацию и получение пользовательской инфы через XMLRPC с дальнейшем сохранением в сессии?

Большую часть переписал, но на некоторый бред хотелось бы еще особо обратить внимание :)

Прикрепление изображений к объявлению.

Метод автора: для начала определим сколько нам необходимо прикреплять изображений к объявлению? Пусть будет 3! Не вопрос, в таблице с объявлениями добавляем 3 поля photo, photo1, photo2 где будем хранить имя изображения. Далее в странице добавления объявления 3 раза повторяем кусок кода для загрузки изображения, а на странице редактирования объявления - обрабатываем 3 действия для удаления картинки из объявления, разумеется 3 идентичными кусками кода! Теперь допустим я решил что мне мало 3 фотографий для объявления, хочу 15 - таблица обзаводится еще 12 полями, а в коде размножаем одинаковые куски по 12 раз? Почему же нельзя было создать отдельную табличку куда писать имя файла, ID объявления, а кол-во изображений для объявлений ограничить в конфиге?

Загрузка списка категорий.

Для получения категорий левого (основного меню), (см. аттачмент) основного списка (тот который с иконками в центре) и в центре ниже используются 3 разных метода - которые непременно рекурсивно лазеют в базу ☝ Т.е. для кол-ва рубрик на скриншоте получится около 40 SQL запросов!!! А если рубрик будет больше и вложенность увеличена - то это настоящее испытание для SQL сервера. В итоге был написан 1 запрос, из которого строится полное дерево категорий и передается в шаблон, а там уже в разных местах по разному разбирается одно и тоже дерево.

Ну и так еще некоторые перлы с которыми столкнулся :)

На главной странице выводятся последние объявления, при просмотре раздела - там так же выводятся последние объявления этого раздела. Логично было предположить что используется один метод для получения последних объявлений в зависимости от рубрики (на главной от корня). Но только не здесь! На каждой странице (даже при создании объявления) из базы выгребаются последние для главной, а при просмотре рубрик - выбираются еще и для рубрики. Вот так вот.

Пока все... Но это только пока - работа еще не закончена.

ЗЫ Для всех желающих или вложивших деньги в это чудо разработки по окончании работ будет выложен дистриб под GPL

jpg wz.jpg
restall:
Он жрет много ресурсов. Трафика, места (если все модули подключать). На обычном хостинг его ОЧЕНЬ видно, он довольно резко бросается в глаза по статистике. А вот если для него отдельный сервер, либо отличный хостинг, то это лучший чат. Тк. оч много возможностей.

Да не жрет он много ни ресурсов ни трафика. Стоит уже больше 2-х лет, работает как часы. Только если покупать - то лучше здесь chatmod.net.ru - они демона переписали и затачивают под остальные браузеры кроме IE

Вариант для FF:

Инструменты - Информация о странице - Мультимедиа.

Для каждой картинки/флеша есть кнопка "Сохранить"

Вот рабочий вариант:


function currency($currency_code)
{
$scripturl = "http://www.cbr.ru/scripts/XML_daily.asp";
$doc = "";
$handle = fopen($scripturl, "r");
while (!feof($handle)) {
$doc .= fread($handle, 8192);
}
fclose($handle);
$r = array();
preg_match("/<Valute ID=\"".$currency_code."\">(.*)<\/Valute>/is", $doc, $m);
preg_match_all("/<Value>([0-9,]+)<\/Value>/is", $m[1], $r, PREG_SET_ORDER);
return str_replace(",", ".", $r[0][1]);
}

echo currency("R01235");
Eddie:
А вот арифметическое действие вроде (2+3)*4 или (sin(pi/6)+2) - это не всем распознавалкам капч под силу, это правильная мысль.

Может еще интеграл предложить с редактором формул для ввода ответа? 😮

А еще у некоторых может анимация не отображаться ( /ru/forum/98059 ) и будет бедный пользователь пытаться вбить первое число, и недоумевать - почему же неверно )))

Дело в настройках сервера, см 8 пост

Если хочешь использовать эту функцию, попробуй такой вариант:


function currency($currency_code)
{
$scripturl = 'http://www.cbr.ru/scripts/XML_dynamic.asp';
$date_1=date('d/m/Y', time()-172800);
$date_2=date('d/m/Y');
$requrl = "{$scripturl}?date_req1={$date_1}&date_req2={$date_2}&VAL_NM_RQ={$currency_code}";
$doc = "";
$handle = fopen($scripturl, "r");
while (!feof($handle)) {
$doc .= fread($handle, 8192);
}
fclose($handle);
$r = array();
if(preg_match("/<ValCurs.*?>(.*?)<\/ValCurs>/is", $doc, $m))

preg_match_all("/<Record(.*?)>(.*?)<\/Record>/is", $m[1], $r, PREG_SET_ORDER);

$m = array();
$d = array();

for($i=0; $i<count($r); $i++) {
if(preg_match("/Date=\"(\d{2})\.(\d{2})\.(\d{4})\"/is", $r[$i][1],$m)) {
$dv = "{$m[1]}/{$m[2]}/{$m[3]}";
if(preg_match("/<Nominal>(.*?)<\/Nominal>.*?<Value>(.*?)<\/Value>/is", $r[$i][2], $m)) {
$m[2] = preg_replace("/,/",".",$m[2]);
$d[] = array($dv, $m[1], $m[2]);
}
}
}

$last = array_pop($d);
$prev = array_pop($d);
$date = $last[0];
$rate = sprintf("%.2f",$last[2]);

$delta = (($last[2]>$prev[2])?"+":"").sprintf("%.2f",$last[2]-$prev[2]);

$string = "{$rate}\n";
return $string;
}
Всего: 287