Ответы пользователя по тегу PHP
  • Как можно задать css стиль для тега option?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    У активного option вы не сможете ничего менять.
    Как изменить фон выпадающего списка select'а, то есть фон option?
    Ответ написан
    Комментировать
  • Какую книгу по AJAX выбрать для изучения?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Всё зависит от того, насколько глубоко вы хотите вникнуть в вопрос.
    Если на уровне ремесленника — да, пара статей, шлёп-шлёп и готово.

    Чуть посерьёзней — CORS, FileReader, FormData, WebSockets. Первое неразрывно связано с XMLHttpRequest, парочка за ним потребуется для кодирования бинарных данных (каждый конструктор для своих целей). Последний в списке — альтернатива для решения асинхронного обмена между разными компьютерами.

    Серьёзное погружение потребует и таких вещей, как XML-RPC, SOAP + WSDL. Правда, это требуется редко и только в крупных компаниях, подсаженных на такие сервисы.
    Ответ написан
    Комментировать
  • Как напечатать table на нескольких листах?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Для современных браузеров должно работать предложенное @EnterSandman
    tr{page-break-inside: avoid;}

    Увы, для webkit конкретно для display:table-xxx не работает. Работает для display:block, но ставить это для всех tr — чистой воды самоубийство.

    Только JS-решения — определять высоту кусков таблицы и... Например, втыкать в месте разрыва tr (здесь с классом devide)
    .devide{
    	display:none;
    	page-break-after:always;
    }
    .devide td{
    	display:none;
    }
    @media print{
    	.devide{
    		display:block;
    	}
    }


    Кстати, и thead, и tfoot при печати на каждом листе webkit также не выведет.
    Ответ написан
    5 комментариев
  • Как передать переменную из js в php?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Непонятно — вы отправляете id в wiz.php, этот скрипт формирует и присылает назад данные, а вы их хотите обратно на сервер? Зачем вам AJAX, если вы можете по id все данные получить прямо на сервере?

    Update: После натужных попыток понять, кажется понял

    CSS
    .item{
    	position:relative;
    }


    PHP
    Цикл построения начался
    <li data-id="<?php echo (string)$obj['_id']; ?>" data-type="item" class="item">...</li>
    Цикл построения закончился
    
    <div id="createdate" data-type="popup">
    	<div class="content"></div>
    	<button type="button" data-action="send">Залайкать</button>
    </div>


    JS
    $(function () {
    	var $popup = $('#createdate'),
    		stop;
    
    	$popup.data('content', $popup.children('.content'));
    	$(document)
    	.on('click', '[data-type="item"][data-id]', function () {
    		if (stop) {
    			return;
    		}
    
    		var $item = $(this),
    			id = $item.data('id');
    
    		$.ajax({
    			type: 'POST',
    			url: 'getObjectInfo.php',
    			data: 'id=' + id,
    			timeout: 5000,
    			beforeSend: function(data) {
    				stop = true;
    				$item.addClass('loading');
    			},
    			success: function(data) {
    				$popup
    					.data('id', id)
    					.data('content').html(data);
    				stop = false;
    				$item.removeClass('loading');
    			},
    			error: function() {
    				//Не забываем про ошибки
    				stop = false;
    				$item.removeClass('loading');
    			}
    		});
    	})
    	.on('click', '[data-action="send"]', function () {
    		if (stop) {
    			return;
    		}
    
    		var $parent = $(this).closest('[data-type="popup"]'),
    			params = {
    				id = $parent.data('id')
    				//Тут собираем изменённые данные
    			};
    
    		$.ajax({
    			type: 'POST',
    			url: 'setLike.php',
    			data: $.params(params),
    			timeout: 5000,
    			beforeSend: function(data) {
    				stop = true;
    				$parent.addClass('loading');
    			},
    			success: function(data) {
    				//Удачно залайкали
    				stop = false;
    				$parent.removeClass('loading');
    			},
    			error: function() {
    				//Не забываем про ошибки
    				stop = false;
    				$parent.removeClass('loading');
    			}
    		});
    	});
    });
    Ответ написан
    4 комментария
  • Как узнать существует ли реальный адрес электронной почты?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    В часто встречающейся схеме при регистрации пишут письмо со ссылкой активации, которая имеет срок годности. Так и будет решена задачи реальности адреса. При этом адрес почты должен использоваться в качестве логина, чтобы избежать накладок с неправильным адресом.

    Все остальные схемы, не использующие адрес почты для подтверждения действий, будут слегка притянуты за уши и могут расцениваться как источник спама.
    Ответ написан
  • На какую зарплату могу рассчитывать (WEB-программист)?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Я называю себя богом. Жена недовольна...
    А по теме — зарплата есть компромисс желания платить поменьше и получать побольше.
    Никто нет платит за слова.
    Ответ написан
    2 комментария
  • Как вставить название двух месяцев на странице?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Делаю на JS примерно так
    function getMonth (index, modify) {
    	var monthesRule = [
    			['(ь|й)', 'я'],
    			['т', 'та']
    		],
    		result = [
    			'Январь',
    			'Февраль',
    			'Март',
    			'Апрель',
    			'Май',
    			'Июнь',
    			'Июль',
    			'Август',
    			'Сентябрь',
    			'Октябрь',
    			'Ноябрь',
    			'Декабрь'
    		][index - 1];
    
    	if (modify) {
    		for (var i = 0, r; i < monthesRule.length; i++) {
    			r = new RegExp(monthesRule[i][0] + '$');
    
    			if (r.test(result)) {
    				return result.replace(r, monthesRule[i][1]);
    			}
    		}
    	}
    
    	return result;
    }
    
    console.log(getMonth(2));
    console.log(getMonth(2, true));
    Ответ написан
    Комментировать
  • Стоит ли оставаться на работе?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Я бы понял, если бы вопрос стоял так: «Я каждый день выполняю одни и те же до боли знакомые операции... Работа — рутина, жизнь — гавно...».

    Вот это было бы печально, а ваша ситуация замечательная. Много нового, непонятного, никто не давит, знай себе расти и расти:)
    Ответ написан
    Комментировать
  • Как передать значение переменной из javascript в php?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    MUSIC — это имя вашей функции в глобальном контексте. То есть при выполнении запроса в вашем документе появится динамически созданный скрипт, в котором будет вызвана функция MUSIC с передачей аргументов, прописанных в том же скрипте.

    Вопрос — а как вы на PHP собираетесь узнать содержание функции, прописанной в клиентском скрипте?
    Ответ написан
  • Как запретить автозакрытие подменю?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Для этого нужно:
    — либо корректировать шаблон (например, проставлением класса в нужном пункте меню)
    — либо разбирать адресную строку на клиенте

    Поскольку ясно, что ваш вопрос лежит во второй части ответа, то нужно иметь чёткое соответствие между частью адресной строки и элементом (атрибут или содержание). В вашем случае вы будете опираться на часть пути после /category/. Не забудьте только про decodeURIComponent().

    А дальше вы проходите первый уровень меню в поисках того, кто содержат строку. Правда для проверки нужно или содержание привести к виду ссылки (дефисы вместо пробелов) или наоборот, что с учётом возможных родных дефисов будет затруднительно.

    Нашли, проделали манипуляции (класс воткнули).
    Ответ написан
  • Почему не срабатывает success в ajax запросе?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    По какой-такой причине стало модным не писать error?
    Спрашиваю каждого, кто не пишет обработчик ошибок — вы уверены, что в мире царит порядок и справедливость, гармония заразила IT и избавила мир от таких понятий, как валидность, ответ 4хх и 5хх и прочих нудных и никому не нужных вещей?
    Ответ написан
    20 комментариев
  • Парсинг - Как получить подкатегории если они подгружаются при помощи js?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Поскольку вы не имеете никакого отношения к сайту, а на запрос с чужого домена возвращается 404, то серверное решение для вас ИМХО закрыто.

    Клиентское также, поскольку парсить документ с другого домена не получится — политика происхождения не позволит.

    Остаётся только прокликать все пункты, которые приводят к загрузке, потом скопировать полученную в итоге структуру (анализатор в браузере) и парсить уже её.
    Как вы будете решать задачу с кликами? Например, программа-кликер просто по координатам, но это муторно и непонятно как сделать.

    Вам поможет Greasemonkey. Обрабатываем клики по ссылкам в цикле. Можно использовать jQuery синтаксис, проверено на этом сайте.

    // ==UserScript==
    // @name        test
    // @namespace   html
    // @description Grabbing categories
    // @include     https://www.ricardo.ch/verkaufen/verkaufsformular/schritt1?src=btn_header_verkaufen&SSL=ON
    // @version     1
    // @grant       none
    // ==/UserScript==
    
    $(function () {
    	var links = $('#navCatLvl1 a');
    	links.each(function () {
    		var $link = $(this);
    
    		$link.trigger('click');
    		//нашли загруженный контент (Mutation Observer) и поехали в нём по циклу
    	});
    });
    Ответ написан
    6 комментариев
  • Почему у меня при обновлении страницы чз AJAX(подгрузка контента) некоторые записи сливаются?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Зачем нам вот эти портянки? В реальности нужно:
    — содержание ответа на AJAX запрос (в любом браузере есть Network)
    — кусок дерева до отправки запроса и построенного после ответа с 2-мя-3-мя блоками (в любом браузере есть анализатор кода)
    — строки CSS, отвечающего за эти блоки
    — кусок скрипта, показывающий, как и куда вставляется этот ответ

    Или можно дать просто ссылку на проект, если не в состоянии подготовить вопрос.
    Вопросы, знаете ли, задавать нужно уметь. Да.

    id_aspin, вот вам прямая подсказка:
    JS:
    $this.append('<div class="content"></div>...');
    ...
    $this.find('.content').append(data);

    PHP:
    <table class=content cellpadding=0 cellspacing=0 border=0>

    Догадались?
    Ответ написан
    Комментировать
  • Добавлять/выводить схему мест в кинотеатрах, как реализовать?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Без простенькой рисовалки не обойтись.

    Следует учесть, что проще сделать таблицу на количество рядов и некое количество мест. Недостающие добавить кнопкой «+», появляющейся при наведении на ряд. Лишние удалить с помощью стандартного «×», появляющегося при наведении на место.

    Очевидно, что номера мест ставятся автоматически непосредственно при добавлении.

    Как абсолютно верно заметил @AMar4enko, нужно дать возможность двигать по горизонтали ряд. Возможно, дискретно. К тому же нередко ряды разбиты на секции проходами. Это также следует учесть и при добавлении, и при движении (боковые секции выравниваются обычно по стене). Проходы могут быть и между рядами.

    Ну а после окончания рисования жамкаем «Сохранить» и вуаля — схема готова.
    Возможно, стоит ввести типовые схемы, чтобы плясать не от белого листа.

    ПыСы. Не уверен, но наверняка есть и особые случаи — расположение рядов по кривым. Тут нужно поломать голову, как реализовать повороты и выравнивания. При этом часть мест может не подчиняться общим правилам...
    Ответ написан
    Комментировать
  • Как умерить жадность регулярных выражений?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Пока есть только туповатый вариант с заменой любого символа на нескобку
    /<b>[^>]*123[^>]*?<\/b>/
    Хотя второй символ заменять, скорее всего, не нужно.
    Ответ написан
  • Как сделать так, нажимая на левую стрелочку браузера, был переход на эту же страницу?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Очень просто:

    1. Нужно помнить, что в окне и до вашей сети возможно наличие других документов, к которым пользователь может изволить вернуться. А что это значит?

    2. Верно, нам нужно просто заменить страницу авторизации на страницу пользователя. А как это сделать?

    3. Ну конечно, есть же объект Location и его метод:

    location.replace(новый_адрес);

    Однако, есть проблема (как всегда, у еды два выхода) — то ли страница пользователя, то ли ошибка авторизации. Выход — с помощью AJAX слать данные (безусловно по https, мы же не гопники какие).
    Ну а дальше понятно:
    — пришла ошибка — подсветили поля и сообщение вывели
    — пришёл идентификатор пользователя — делаем replace чудодейственный с адресом страницы пользователя (можно даже и куки установить, хотя это и страница пользователя может сдеать)

    4. Есть также History и возможность делать replace именно записи в истории, но этот вариант не буду даже и рассматривать.
    Ответ написан
    Комментировать
  • Как при помощи PHP и формы создавать div-блоки?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    При создании блоков PHP вообще не причём. На странице вы добавляете блоки с помощью JS.

    Как при перезагрузке не потерять новые блоки? Отправлять с помощью AJAX на сервер информацию, а вот тут уже ваш PHP скрипт или базу обновит, или шаблон поменяет, или и то, и другое.
    Ответ написан
    Комментировать