Jump to content

fiver

User
  • Posts

    155
  • Joined

  • Last visited

Everything posted by fiver

  1. Баллы и прибавляются работам. А к работам привязываются пользователи. Так сейчас все и есть. У каждой работы есть id_work, он уникален. Код в первом посте выводит работы по всем категориям по кол-ву голосов. Мне надо из этого списка убрать лишнее, работы не занявшие 1, 2 и 3 места. Условия я все описал. 1 чел в 1 номинации не может занять 2 и более мест, и челы с одинаковым кол-м голосов делят место. Все. Но никак не могу сделать. На данный момент я могу вывести 1, 2, 3 места с учетом одинакового кол-ва голосов. Никак не смекну, как граматно удалить людей занявших несколько мест.
  2. Это не ошибка. Каждый участник может выложить на суд несколько работ. Например у тебя есть 10 классных фоток и ты не знаешь какая лучше и выкладываешь на голосование все фото. А так как у других участников фотки говно, то очень часто получается что у одного участника все 3 места за 3 разных работы. Но он и так уже победитель и у него 1 место. поэтому 2 и 3 место должны занять другие участники, это только в 1 категории 1-1-1. В 1-2-1 , это уже другие работы по другой теме, но в той же возрастной категории, он опять может выложить свои работы и опять занять какое то место. Вообще сайт делал не я (меня попросили помочь с определением победителей, вот я и снашаюсь). Там конечно есть косяки. Например информация об участнике хранится в другой таблице, и связь с таблицей с работами и номинациями осуществляется по id участника (общее поле для 2-х таблиц). Но весь прикол в том, что бы выложить работу, участник каждый раз регится заново. В итоге у участника не 1 id, а целая куча. Поэтому надо отсекать участников не по их id, а сравнивать 2 поля Имя и Фамилия. А они еще могут там и ошибку сделать или 1 раз написать Иван, другой Ваня, третий ИВАН. Короче одни косяки.
  3. Ну так спрашивай.. Я в своём примере несколько подходов к обработки данных в строке предложил То что сделал ты, круто. Кратенько, сам бы я до такого не дошел. Это надо видеть готовые примеры и на них учиться. Вот такой еще вопрос. У меня есть таблица, которая содержит названия всех улиц Москвы, и относит их соответственно к нужным АО и районам. Но данные содержатся в таком виде - Большой Николопесковский переулок Ленина улица Лесная 2-я улица А в ексель улицы в виде Большой Николопесковский пер. Ленина ул. 2-я Лесная ул. С пер. ул. пр. пл. и т.п. я решил проблему просто. С помощью str_replace заменяю их на полное наименование, т.е. ул. на улица и т.д. Там немного всего, еще тупики, набережные, мосты, проезды, поселки ну и т.д. А вот как быть с Лесная 2-я на 2-я Лесная Или Микраройон 3-й Зеленоград на 3-й Микраройон Зеленограда. У меня на данный момент 4243 улиц, и частенько встречаются перемена мест в названиях.
  4. А как его заставить работать по нескольким фиксированным ключам? В частности для каждой номинации 5 параметров. Три определяют саму номинацию, плюс 2 параметра Имя и Фамилия. Можно примерчик.
  5. Ну да, работа с CVS. Я и извлекаю из cvs файла данные, бью на строки и вгоняю эти строки в переменную, которую потом потрошу на нужные мне составляющие, которые вношу в нужном виде в БД. Так что бы в результате и сортировка работала и поиск по данным и прочее. Еще есть автоопределение района и АО по названию улицы и т.п. Смысл не в том, что бы взять готовое решение. Смысл в том, что бы научиться работать со строками, отсекать лишнее, изымать нужное. Можно это и самому освоить. Что я и делаю параллельно общению на форуме. Но всегда хочется узнать как это делают профи, что бы оценить свои решения и оптимизировать их. Поэтому большое спасибо всем кто откликнулся. По поводу в "в теге <a> стоит nofollow", обратил внимание, что почему то не всегда это срабатывает. Вот если параметр применить ко всей странице, то результат есть, а к одной ссылке, частенько не работает. Т.е. делал ссылки с одного своего сайта на другой с nofollow, а когда захожу в мои сайты в яндекс и смотрю внешние ссылки, то ссылка там есть. Да и с форумов ссылки тоже всегда добавляются.
  6. Помогите сделать выборку из БД. Сделал кучу вложенных циклов. Вроде все работает, но в некоторых случаях получается не то что надо. Причем не понятно почему. Дела обстоят так: Есть куча конкурсантов, все делятся по категориям, подкатегориям и возрасту. Например 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 место, то все, он убирается с других мест, а номинируются те, кто ниже его.
  7. trim, что бы удалить пробелы спереди и сзади. После удаления п или т, после цифры образуется пробел, который до этого разделял цифру и букву.
  8. Второй вариант выглядит более симпотно. Для сравнения как это сделал я сам. Не судите строго $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 проверял на истину ложь.
  9. Предложенный ранее $blablalba = explode (';', $value) работает как надо. теперь возникают частые нюансы. например разбить 5п или 15т на 2 переменных 1-я только цифра, и 2-я в зависимости от буквы п или т = пешком или транспортом. Только цифру можно оставить например 2 раза воспользовавшись функцией str_replace и заменив т и п на '' пусто. А с т и п, проверить наличие на символ т, если есть, то транспортом, если нет, то значит пешком. Это вот с моей точки зрения, как можно сделать. Просто интересно узнать, а как правильно и оптимально это сделать. И вообще вот такая запись работает, но имеет ли она право на жизнь, или можно сделать все проще? $min_ot_m = trim(str_replace('п','',str_replace('т','',$vtok[2])));
  10. Вас понял. А я вот нарыл вот такую функцию $vtok = strtok($value, ';'); while ($vtok) { echo $vtok; echo "<br>"; $vtok = strtok(";"); } тоже получается разбил на массив. Но если пишу echo $vtok[1]; Выводится какая то хренатень. А так все выводится прям от ; к ;
  11. Здравствуйте! Столкнулся с задачей переноса данных из 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 символа до первой ; На этом знания мои иссякли. Что бы извлечь метро, надо вернуть строку от первой ; до второй ;, потом убрать м., потом убрать пробелы с начала и конца. Все могу, кроме как вернуть значение второй ;
  12. Да, вы правы, я уже нашел это. Спасибо!
  13. Дело было в том, что chpu.php вызывался раньше чем sample-html-graphic.php в котором - session_start(); Инициировав сессию до вызова chpu.php ошибка убралась. Вот только почему так произошло непонятно. Видимо какие то данные нельзя выводить до инициации сессии. И возможно что дело вовсе не в chpu.php В общем пока ошибку устранил, но без понимания почему она возникла.
  14. Здравствуйте! Возникла схожая проблемма. Начал делать форму отправки сообщений с сайта. При добавлении в файл 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 существует.
  15. На всякий случай сделал 2 вида. просто вывод. И передача POST. Отпишусь. СПАСИБО!
  16. И просто выведенная запись может попасть каким то образом им в логи? А если они мне так же передают информацию? Т.е. тоже просто выводят <?xml version="1.0" encoding="utf-8"?> <response><result>0</result> Возможно извлечь result=0 ?
  17. Уважаемый 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
  18. Мне методом пост передается запрос, я должен его обработать и исходя из результатов запроса - ЦИТИРУЮ: На вопрос у принимающей стороны, о том каким макаром вы обрабатываете переданный хмл, был получен ответ, что он записывается в логи. Собственно и все. Если есть какие то конкретные вопросы, задавайте, я попытаюсь все разузнать.
  19. Возникают вопроосы. Тут в заголовке я указал, что те, кому передаю этот 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);
  20. Сталкнулся с такой хренью, стоит задача по 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/
  21. Ознакомился с сокетами и curl, несмотря на подробное описание метода сокетами, у меня что то не вышло, ошибка 400. А вот с curl получилось, пришлось правда доставить библиотеки с функциями. А можно поподробнее про file_get_contents() , какие там нужны настроики и стоятли они по умолчанию на обычных хостингах. В частности hc.ru Спасибо всем кто откликнулся!
  22. Дело в том, что номер телефона и еще много чего должно отправляться на сторонний сервис. Моя задача им передать всю нужную информацию в нужном формате, желательно методом post, но можно get. Я все нужные данные собрал, привел к нужному виду, осталось туда приплюсовать номер телефона и надо отправить. Как это сделать, не заставляя пользователя еще раз жать на кнопку?
  23. Здравствуйте! Возник такой вопросик. У меня есть форма, куда посетитель вводит номер мобильного телефона. Далее нажимает кнопку и методом 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. В принципе я могу сделать кнопку типа - Подтверждаю, но хотелось бы этого избежать, т.к. данные на корректность уже проверились.
  24. Проблемма решена. Навигацию разместил тоже в div с абсолютным позиционированием, но более высоким z-index. Логотип не стал делать фоном по той самой причине, что он является переходом на главную страницу. Надеялся что у кого нибудь есть готовое элегантное решение, как выравнять div по центру, учитывая сами размеры слоя.
  25. left: 50% размещает по центру левый край логотипа. А сам лого смещается от центра на половину своей ширины, т.е 150 пикс. что очень заметно даже на большом мониторе. В этом случае z-index вообще не нужен. Я задал z-index слою с ссылками, но разница в z-index работает только когда и слой с ссылками имеет position: absolute; При другом позиционировании слой с position: absolute выше чем другой любой слой, в независимости от z-index
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy