-
Posts
155 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by fiver
-
Баллы и прибавляются работам. А к работам привязываются пользователи. Так сейчас все и есть. У каждой работы есть id_work, он уникален. Код в первом посте выводит работы по всем категориям по кол-ву голосов. Мне надо из этого списка убрать лишнее, работы не занявшие 1, 2 и 3 места. Условия я все описал. 1 чел в 1 номинации не может занять 2 и более мест, и челы с одинаковым кол-м голосов делят место. Все. Но никак не могу сделать. На данный момент я могу вывести 1, 2, 3 места с учетом одинакового кол-ва голосов. Никак не смекну, как граматно удалить людей занявших несколько мест.
-
Это не ошибка. Каждый участник может выложить на суд несколько работ. Например у тебя есть 10 классных фоток и ты не знаешь какая лучше и выкладываешь на голосование все фото. А так как у других участников фотки говно, то очень часто получается что у одного участника все 3 места за 3 разных работы. Но он и так уже победитель и у него 1 место. поэтому 2 и 3 место должны занять другие участники, это только в 1 категории 1-1-1. В 1-2-1 , это уже другие работы по другой теме, но в той же возрастной категории, он опять может выложить свои работы и опять занять какое то место. Вообще сайт делал не я (меня попросили помочь с определением победителей, вот я и снашаюсь). Там конечно есть косяки. Например информация об участнике хранится в другой таблице, и связь с таблицей с работами и номинациями осуществляется по id участника (общее поле для 2-х таблиц). Но весь прикол в том, что бы выложить работу, участник каждый раз регится заново. В итоге у участника не 1 id, а целая куча. Поэтому надо отсекать участников не по их id, а сравнивать 2 поля Имя и Фамилия. А они еще могут там и ошибку сделать или 1 раз написать Иван, другой Ваня, третий ИВАН. Короче одни косяки.
-
Ну так спрашивай.. Я в своём примере несколько подходов к обработки данных в строке предложил То что сделал ты, круто. Кратенько, сам бы я до такого не дошел. Это надо видеть готовые примеры и на них учиться. Вот такой еще вопрос. У меня есть таблица, которая содержит названия всех улиц Москвы, и относит их соответственно к нужным АО и районам. Но данные содержатся в таком виде - Большой Николопесковский переулок Ленина улица Лесная 2-я улица А в ексель улицы в виде Большой Николопесковский пер. Ленина ул. 2-я Лесная ул. С пер. ул. пр. пл. и т.п. я решил проблему просто. С помощью str_replace заменяю их на полное наименование, т.е. ул. на улица и т.д. Там немного всего, еще тупики, набережные, мосты, проезды, поселки ну и т.д. А вот как быть с Лесная 2-я на 2-я Лесная Или Микраройон 3-й Зеленоград на 3-й Микраройон Зеленограда. У меня на данный момент 4243 улиц, и частенько встречаются перемена мест в названиях.
-
А как его заставить работать по нескольким фиксированным ключам? В частности для каждой номинации 5 параметров. Три определяют саму номинацию, плюс 2 параметра Имя и Фамилия. Можно примерчик.
-
Ну да, работа с CVS. Я и извлекаю из cvs файла данные, бью на строки и вгоняю эти строки в переменную, которую потом потрошу на нужные мне составляющие, которые вношу в нужном виде в БД. Так что бы в результате и сортировка работала и поиск по данным и прочее. Еще есть автоопределение района и АО по названию улицы и т.п. Смысл не в том, что бы взять готовое решение. Смысл в том, что бы научиться работать со строками, отсекать лишнее, изымать нужное. Можно это и самому освоить. Что я и делаю параллельно общению на форуме. Но всегда хочется узнать как это делают профи, что бы оценить свои решения и оптимизировать их. Поэтому большое спасибо всем кто откликнулся. По поводу в "в теге <a> стоит nofollow", обратил внимание, что почему то не всегда это срабатывает. Вот если параметр применить ко всей странице, то результат есть, а к одной ссылке, частенько не работает. Т.е. делал ссылки с одного своего сайта на другой с nofollow, а когда захожу в мои сайты в яндекс и смотрю внешние ссылки, то ссылка там есть. Да и с форумов ссылки тоже всегда добавляются.
-
Помогите сделать выборку из БД. Сделал кучу вложенных циклов. Вроде все работает, но в некоторых случаях получается не то что надо. Причем не понятно почему. Дела обстоят так: Есть куча конкурсантов, все делятся по категориям, подкатегориям и возрасту. Например 1-1-1 = 1 категория, 1 подкатегория, 1 возраст, там 100 участников Или 7-14-4 = 7 категория, 14 подкатегория, 4 возраст, там 50 участников, а в 15-15-2, может быть всего один участник. Где то участников вообще нет. У каждого участника есть Фамилия и какое то кол-во голосов. Что бы вывести всех участников я делаю так: while($w_cat < 20) { while($w_sub < 18) { while($age < 6) { $query = "SELECT * FROM tbl WHERE w_cat=$w_cat and w_sub=$w_sub and age=$age ORDER BY work_count DESC"; $age++; } $age = 1; $w_sub++; } $w_sub = 1; $w_cat++; } А мне надо вывести работы победителей в каждой категории, подкатегории и возрасте, но с такими условиями: 1. Всего - 3 места; 2. Если участники получили одинаковое к-во голосов, то они делят это место, неважно сколько их. 3. Один участник награждается 1 раз в одной номинации и не может занять несколько мест, только одно самое высокое. ДЛЯ ПРИМЕРА ИМЕЕМ в 1-1-1 Вася - 200 голосов Петя - 200 голосов Коля - 200 голосов Вася - 150 голосов Вася - 100 голосов Дима - 50 голосов Толя - 50 голосов Женя - 25 голосов Гоша - 10 голосов Результат: 1 место - Вася - 200 голосов 1 место - Петя - 200 голосов 1 место - Коля - 200 голосов 2 место - Дима - 50 голосов 2 место - Толя - 50 голосов 3 место - Женя - 25 голосов Т.е. Вася по идее занял и 2 место и 3, но так как у него уже 1 место, то все, он убирается с других мест, а номинируются те, кто ниже его.
-
trim, что бы удалить пробелы спереди и сзади. После удаления п или т, после цифры образуется пробел, который до этого разделял цифру и букву.
-
Второй вариант выглядит более симпотно. Для сравнения как это сделал я сам. Не судите строго $min_ot_m = trim(str_replace('п','',str_replace('т','',$vtok[2]))); $kak_ot_m = strpos($vtok[2], 'п'); if ($kak_ot_m === false) $kak_ot = 'Транспортом'; else $kak_ot = 'Пешком'; Что касаемо замены, я менял не на пробел, а на пустой символ, т.е. просто удалял (в ковычках нет ничего '' , а не ' '). а результат функции strpos проверял на истину ложь.
-
Предложенный ранее $blablalba = explode (';', $value) работает как надо. теперь возникают частые нюансы. например разбить 5п или 15т на 2 переменных 1-я только цифра, и 2-я в зависимости от буквы п или т = пешком или транспортом. Только цифру можно оставить например 2 раза воспользовавшись функцией str_replace и заменив т и п на '' пусто. А с т и п, проверить наличие на символ т, если есть, то транспортом, если нет, то значит пешком. Это вот с моей точки зрения, как можно сделать. Просто интересно узнать, а как правильно и оптимально это сделать. И вообще вот такая запись работает, но имеет ли она право на жизнь, или можно сделать все проще? $min_ot_m = trim(str_replace('п','',str_replace('т','',$vtok[2])));
-
Вас понял. А я вот нарыл вот такую функцию $vtok = strtok($value, ';'); while ($vtok) { echo $vtok; echo "<br>"; $vtok = strtok(";"); } тоже получается разбил на массив. Но если пишу echo $vtok[1]; Выводится какая то хренатень. А так все выводится прям от ; к ;
-
Здравствуйте! Столкнулся с задачей переноса данных из exel в уже существующую БД. Да вот незадача, нихрена не умею работать со строками. Возникает куча вопросов. Я понимаю, что работа со стоками это важный атрибут php, но вот с опытом беда. Задачка такая, преобразовать строку в переменные которые я смог бы внести в БД. Строка имеет вид: $value = "2;Цветной бульвар м.;5п;Печатников пер.;3;2/6 М;70,6/40/15;Б;П+Г;" что к чему: 2- кол-во комнат, 5п - 5 минут пешком от метро, 2/6 М - 2 этаж 6 эт.зд. монолитного, 60/40/15 - площадь общ./жил/кухня, Б - балкон, П+Г (лифты пассажирски и грузовой). Ну там еще куча всего в строке, но хотя бы разобраться с этим. надо получить: $kol-komnat = 2; $metro = 'Цветной бульвар'; $minut-ot-metro = 5; $kak = 'пешком'; $ul = 'Печатников пер.'; $dom = '3'; $etazh = 2; $etazhnost = 6; $zdanie = 'monolit'; $sq-ob = 60; $sq-zh = 40; $sq-kuh = 15; $balkon = 'yes'; $lift-pas = 'yes'; $lift-gruz = 'yes'; ну и т.д, т.п. Готов разобрать каждый шаг отдельно. Например шаг 1 - $kol-komnat = 2; Я сделал так: $kkom = substr($value, 0, strpos($value,';')); т.е. присвоил значение с 0 символа до первой ; На этом знания мои иссякли. Что бы извлечь метро, надо вернуть строку от первой ; до второй ;, потом убрать м., потом убрать пробелы с начала и конца. Все могу, кроме как вернуть значение второй ;
-
Да, вы правы, я уже нашел это. Спасибо!
-
Дело было в том, что chpu.php вызывался раньше чем sample-html-graphic.php в котором - session_start(); Инициировав сессию до вызова chpu.php ошибка убралась. Вот только почему так произошло непонятно. Видимо какие то данные нельзя выводить до инициации сессии. И возможно что дело вовсе не в chpu.php В общем пока ошибку устранил, но без понимания почему она возникла.
-
Здравствуйте! Возникла схожая проблемма. Начал делать форму отправки сообщений с сайта. При добавлении в файл sample-html-graphic.php <?php session_start(); ?> Выскакивает ошибка: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\barma\www\chpu.php:62) in Z:\home\barma\www\sample-html-graphic.php on line 1 chpu.php: 62 строка, это последняя пустая строка после ?> <?php // Получаем URL в переменную $result в случае yourdomain.com/name-page.html в $result окажется строка: /name-page.html // $result = $_SERVER['REQUEST_URI']; $result = parse_url($_SERVER['REQUEST_URI']); $result = $result['path']; // проверяем, что бы в URL не было ничего, кроме символов алфавита (a-z A-Z), цифр (0-9), а также . / — _ # в противном случае — выдать ошибку 404 $array_url = preg_split ("/(\/|\..*$)/", $result,1, PREG_SPLIT_NO_EMPTY); // в случае, если обращение было только к домену (yourdomain.com/ или yourdomain.com), в $array_url будет пустой результат, такое событие нужно обработать, как страницу с ID_page = 1 if (!$array_url) { $ID_page = 1; } else { $sef_value = $array_url[0]; /* Далее идёт запрос в БД о наличие в столбце SEF строки $sef_value при положительном ответе получаем из БД соответствующий $sef_value $ID_page, если такой строки не найдено — выводим страницу ошибки 404. */ $query = "SELECT id_menu FROM main_menu WHERE url = '".$sef_value."' LIMIT 1"; $result = mysql_query($query); if ($row = mysql_fetch_array($result)) { $ID_page = $row ['id_menu']; } else { // header("HTTP/1.0 404 Not Found"); echo "Страница не существует"; exit; } } // Теперь обычная обработка, как если бы $ID_page был получен методом GET */ $cont = "SELECT * FROM main_menu WHERE id_menu = $ID_page LIMIT 1"; $conte = mysql_query($cont); $row = mysql_fetch_array($conte); ?> Кодировка всех файлов ANSI, поэтому как я понимаю BOM исключается, он только в UTF-8 существует.
-
На всякий случай сделал 2 вида. просто вывод. И передача POST. Отпишусь. СПАСИБО!
-
И просто выведенная запись может попасть каким то образом им в логи? А если они мне так же передают информацию? Т.е. тоже просто выводят <?xml version="1.0" encoding="utf-8"?> <response><result>0</result> Возможно извлечь result=0 ?
-
Уважаемый s0rr0w! Спасибо что возитесь с моей проблеммой. Я понимаю, что мне надо ответить на запрос. У меня попросили ссылку на скрипт, куда передают запрос типа //moy-site.ru/script.php?id=777 После чего в скрипте принимается параметр id, я его проверяю и формирую xml типа: <response> <result>0</result> <descr>все ок!</descr> </response> или <response> <result>1</result> <descr>все хреново!</descr> </response> C первой частью проблемм нет, все обрабатываю, формирую xml. А вот дальше в инструкции написанно Что сие означает, как это передается, куда это должно быть записанно, мне непонятно. Именно поэтому я и обратился на форум, что бы спросить у тех, кто подобное делал. Какие логи как и куда, представления не имею. Просто думаю, что для тех кто реализовавал оплату посредством отправки смс и работал с сервисами которые называют себя агрегаторами, это все понятно сразу. Они ведут обмен данными посредством передачи этих самых xml
-
Мне методом пост передается запрос, я должен его обработать и исходя из результатов запроса - ЦИТИРУЮ: На вопрос у принимающей стороны, о том каким макаром вы обрабатываете переданный хмл, был получен ответ, что он записывается в логи. Собственно и все. Если есть какие то конкретные вопросы, задавайте, я попытаюсь все разузнать.
-
Возникают вопроосы. Тут в заголовке я указал, что те, кому передаю этот xml, читают его в логах. А куда передастся этот запрос в данном случае? В логи хостинга? Или должен будет принят скриптом и извлечен из глабального массива POST? Я не очень силен в этих материях. Я тут набросал то, что вы порекомендовали. Так сработает? $dom = new domDocument("1.0", "utf-8"); // Создаём XML-документ версии 1.0 с кодировкой utf-8 $root = $dom->createElement("response"); // Создаём корневой элемент $dom->appendChild($root); $result = $dom->createElement("result", 0); $disk = $dom->createElement("disk", 1); $root->appendChild($result); $root->appendChild($disk); $dom->saveXML(); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'http://site.ru/id/ip/whrh'); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, 'xml='.$dom.''); curl_setopt($curl, CURLOPT_USERAGENT, 'Opera 10.00'); $res = curl_exec($curl); if(!$res){ $error = curl_error($curl).'('.curl_errno($curl).')'; echo $error; } else { echo "Все ОК!"; } curl_close($curl);
-
Сталкнулся с такой хренью, стоит задача по html запросу сформировать и отправить ответ в формате XML, кодировка UTF-8 (Content-type: text/plain). Т.е. мне приходит POST запрос, я его обрабатываю, формирую xml и отсылаю по адресу сайта (адрес заранее известен типа: http://site.ru/id/ip/whrh/) Загвоздка стала в том, как отправить мне готовый xml по ссылке. Вот код моего готового xml, я знаю как например сохранить его, или отправить на печать. $dom = new domDocument("1.0", "utf-8"); $root = $dom->createElement("response"); $dom->appendChild($root); $result = $dom->createElement("result", 0); $discr = $dom->createElement("sum", OK!); $root->appendChild($result); $root->appendChild($discr); $dom-> А ЗДЕСЬ ДОЛЖНО БЫТЬ ЧТО ТО ПОЗВОЛЯЮЩЕЕ ОТПРАВИТЬ ВСЕ ЭТО ПО ССЫЛКЕ http://site.ru/id/ip/whrh/
-
Ознакомился с сокетами и curl, несмотря на подробное описание метода сокетами, у меня что то не вышло, ошибка 400. А вот с curl получилось, пришлось правда доставить библиотеки с функциями. А можно поподробнее про file_get_contents() , какие там нужны настроики и стоятли они по умолчанию на обычных хостингах. В частности hc.ru Спасибо всем кто откликнулся!
-
Дело в том, что номер телефона и еще много чего должно отправляться на сторонний сервис. Моя задача им передать всю нужную информацию в нужном формате, желательно методом post, но можно get. Я все нужные данные собрал, привел к нужному виду, осталось туда приплюсовать номер телефона и надо отправить. Как это сделать, не заставляя пользователя еще раз жать на кнопку?
-
Здравствуйте! Возник такой вопросик. У меня есть форма, куда посетитель вводит номер мобильного телефона. Далее нажимает кнопку и методом POST передает данные другому скрипту, который проверяет данные на корректность, и в случае некорректного введения, возвращает посетителя опять к форме для повторного заполнения. Вот код: if (empty($_POST['phone'])) { echo "Вы не ввели номер телефона!"; echo "<p><a href='javascript: history.back();' class='black'>Ввести номер телефона</a></p>"; exit(); } else { if(!preg_match("/^[0-9]{7,7}+$/", $_POST['phone'])) { echo ("Телефон задан в неверном формате, выбирите из списка код оператора и введите 7 значный номер без пробелов и тире!"); echo "<p><a href='javascript: history.back();' class='black'>Ввести номер телефона</a></p>"; exit(); } else { $phone = $_POST['phone']; $kod = $_POST['kod']; $tlf = "7".$kod.$phone; echo $tlf; exit(); } } А вот далее мне надо не выводить номер телефона как в последнем условии, а передать его для обработки следующему файлу. Метод передачи не важен, но желательно post. В принципе я могу сделать кнопку типа - Подтверждаю, но хотелось бы этого избежать, т.к. данные на корректность уже проверились.
-
выравнивание абсолютно позиционированного блока по центру
fiver replied to fiver's question in HTML Coding
Проблемма решена. Навигацию разместил тоже в div с абсолютным позиционированием, но более высоким z-index. Логотип не стал делать фоном по той самой причине, что он является переходом на главную страницу. Надеялся что у кого нибудь есть готовое элегантное решение, как выравнять div по центру, учитывая сами размеры слоя. -
выравнивание абсолютно позиционированного блока по центру
fiver replied to fiver's question in HTML Coding
left: 50% размещает по центру левый край логотипа. А сам лого смещается от центра на половину своей ширины, т.е 150 пикс. что очень заметно даже на большом мониторе. В этом случае z-index вообще не нужен. Я задал z-index слою с ссылками, но разница в z-index работает только когда и слой с ссылками имеет position: absolute; При другом позиционировании слой с position: absolute выше чем другой любой слой, в независимости от z-index