• Как монетизировать фриланс биржу?

    @sorokinfil
    Добрый день. У меня есть своя биржа.
    Монетизация по типу Фрилансим - платное размещение откликов, услуги по выделению цветом и подъёму в списке различных единиц (заказы, отклики, участники), возможность прикрепить портфолио к откликам. Это наиболее простой вариант, но какие бы крутые проекты не крутились при такой схеме, монетизация получается фиксированной.
    Возможно также введение на сайт рекламы.
    Монетизация за счёт безопасной сделки довольно сложна юридически, но теоретически тоже возможна.
    Ответ написан
    6 комментариев
  • Как обновить дату в mysql?

    @sorokinfil
    Попробуйте заменить
    `reg_date`=CURRENT_TIMESTAMP
    на
    `reg_date`=NOW()
    Ответ написан
  • Ошибка в SQL запросе?

    @sorokinfil
    Ошибка в порядке частей запроса и ещё наверное во WHERE, где у вас cat_category_id, возможно, Вы хотели написать cat.category_id. Попробуйте:
    UPDATE j35_products AS prod
    JOIN j35_product_categories AS cat ON prod.product_id = cat.product_id 
    SET 
      prod.product_weight = '3',
      prod.product_length = '0.15',
      prod.product_width = '0.15',
      prod.product_height = '0.15'
    WHERE cat.category_id = '275';

    И значения лучше взять в кавычки.

    Извините, погуглил про FROM, кое-где так пишут. Убрал из ответа про лишний FROM.
    Ответ написан
  • Как бороться с inline-block и его отступами?

    @sorokinfil
    Если я правильно понял, нужно убрать лишнее пространство в 4px справа от картинок с чаем. Попробуйте сделать вычисляемый width у элемента с классом .dor.
    width: calc(100% + 4px);
    Благодаря этому отступ справа в 4px должен уйти за пределы экрана.
    Обновлено: если появляется скролл, должен убраться через overflow: hidden у родительского для .dor блока.
    Ответ написан
  • Как правильно сделать линию под табами?

    @sorokinfil
    Если нет задачи поддерживать старые версии IE, можно воспользоваться flexbox'ом на ul и чередовать фиксированные отступы с пунктами. Повесить border-bottom светлого цвета на все пункты и отступы. Создать класс .selected для выделенного пункта и изменить там цвет border-bottom на тёмный. Понятно или накидать пример?

    Обновлено
    Накидал пример https://jsfiddle.net/htrj8kg5/1/
    Ответ написан
    Комментировать
  • Запуск функции по времени js?

    @sorokinfil
    Вам поможет при первом визите высчитать текущее время + 30 секунд и занести это время в куки. Далее по таймеру определять, есть ли нужная кука, и если есть, то не наступил/прошёл ли нужный момент, и если он наступил/прошёл, вызывать окошко, удалять старую куку и добавлять другую, по которой будет определяться, что окошко уже всплывало. Так понятно?

    Под спойлером функции, которые я дёрнул из своего проекта для проверки и занесения кук.
    Функции
    /* Возвращает cookie */
    	function Get_Cookie (name)
    	{
    		var matches = document.cookie.match (new RegExp
    		(
    			"(?:^|; )" + name.replace (/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    		));
    		return matches ? decodeURIComponent (matches[1]) : undefined;
    	}

    /* Записать в cookies */
    	function setCookie (name, value, options)
    	{
    		if (!options)
    		{
    			var expires = new Date ();
    			expires.setFullYear (expires.getFullYear () + 10);
    			options = {'path': '/', 'expires': expires};
    		}
    		
    		var expires = options.expires;
    		
    		if (typeof expires == "number" && expires)
    		{
    			var d = new Date ();
    			d.setTime (d.getTime () + expires * 1000);
    			expires = options.expires = d;
    		}
    		if (expires && expires.toUTCString)
    		{
    			options.expires = expires.toUTCString ();
    		}
    		
    		value = encodeURIComponent (value);
    		
    		var updatedCookie = name + "=" + value;
    		
    		for (var propName in options)
    		{
    			updatedCookie += "; " + propName;
    			var propValue = options[propName];
    			if (propValue !== true)
    			{
    				updatedCookie += "=" + propValue;
    			}
    		}
    		
    		document.cookie = updatedCookie;
    	}

    Ответ написан
    4 комментария
  • XAMPP поменял группу, теперь не стартует MySQL - как исправить?

    @sorokinfil
    Могу ошибаться. Попробуйте сделать www-data владельцем.
    sudo chown -R www-data:www-data /opt/lampp
    Ответ написан
    Комментировать
  • Правильно ли хранить длинные строки(>250сим) и массивы в константах?

    @sorokinfil
    Сделайте подключаемым php-файлом, в котором будут только такие константы. Дурным тоном не считается, но если таких строк много, лучше не засорять ими имена констант и объявить общий массив со всеми строками и с другими массивами, а константы оставить для каких-то чисел.
    Ответ написан
    Комментировать
  • Умер жесткий диск. Что делать?

    @sorokinfil
    Скорее всего, вышел из строя контроллер. Выход - замена контроллера с донора. Данные должны быть в порядке, если не было других факторов.
    Ответ написан
    4 комментария
  • Как организовать поиск сразу по 3 таблицам?

    @sorokinfil
    Если не нужна постраничная навигация, то UNION запросов должен помочь. В противном случае придётся делать отдельную таблицу чисто для FULLTEXT с внешними ключами.
    Ответ написан
    2 комментария
  • Почему отправляются какие-то заголовки, если использую include_once?

    @sorokinfil
    Есть вероятность, что дело в так называемом BOM-маркере, который присутствует по умолчанию в UTF-8 кодировке. Сделайте бекап проблемного файла, который добавляется через include_once, и попробуйте пересохранить его код в UTF-8 без BOM. Такое можно сделать, например, в Notepad++.

    Обновлено
    Сейчас заметил, что в начале php-файла, который вы подключаете, html-код. Так делать нельзя. Вот пример функции, которую использую я, чтобы получать содержимое из файлов с html-кодом в переменную и не отправлять никаких заголовков.
    function Get_HTML ($file)
    {
    	if (!file_exists ($file))
    		return false;
    	ob_start ();
    	extract ($GLOBALS, EXTR_OVERWRITE);
    	include ($file);
    	$content = ob_get_contents ();
    	ob_end_clean ();
    	return $content;
    }

    Подключать вместо include таким образом
    $content = Get_HTML ('path/to/your/include');
    // ...
    echo $content; // вывод на страницу не раньше, чем будут выполнены все php-скрипты
    Ответ написан
  • Как подключится к серверу в websockets (socket.io)?

    @sorokinfil
    На клиенте. url, по которому доступен сокет, обычно в виде ip:порт, либо домен:порт; порт обычно 3000, но может быть любой. Объект отправлять необязательно, достаточно отслеживать события, передаваемые в emit первым параметром. Синтаксис emit и on на сервере и клиенте одинаковые.
    var socket_url = "yoursite.ru:3000";
    var socket = io.connect (socket_url);
    
    // Отправка чего-то на сервер
    socket.emit ('Privet',
    {
    	param1: 'kaknikruti',
    	param2: 12345
    	// и так далее
    });
    
    // Приём с сервера
    socket.on ('Otvet', function (data)
    {
    	alert (data.otvet);
    });


    Обновлено
    Судя по описанию, клиентом в этом случае выступает Ваш облачный сервер. Но процедура не должна отличаться.
    Ответ написан
    Комментировать
  • Как реализовать это на PHP?

    @sorokinfil
    Напишу по-старинке, не помню, что как в prepare'ах. tbl_1 и tbl_2 соответствуют порядку, в котором выводятся картинки, нужно заменить на имена своих таблиц.
    // Создаём переменную, в которую будем заносить инфу из БД
    $your_list = [];
    // Получаем id и username всех пользователей из tbl_1, id которых встречаются в tbl_2
    $query = $dbpdo->query
    ("
    	SELECT tbl_1.user_id, tbl_1.username
    	FROM tbl_1
    	INNER JOIN tbl_2 ON tbl_2.id = tbl_1.user_id
    ");
    // Извлекаем, формируем двумерный массив
    while ($user = mysqli_fetch_assoc ($query))
    	$your_list[] = $user;
    // Выводим через echo
    foreach ($your_list as $user)
    	echo $user['user_id'] . ': ' . $user['username'] . '<br />';
    Ответ написан
    1 комментарий
  • Как реализовать подгрузку данных при вводе текста в input?

    @sorokinfil
    Ajax по событию onchange на js. И обязательно проконтролировать частоту возможных вызовов запроса, чтобы не чаще пары раз в секунду, можно сделать через таймеры на js. Одним php не ограничиться.
    Ответ написан
    Комментировать
  • Ступор в развитии js(и не только)Как быть?

    @sorokinfil
    Не нравится php, так попробуйте себя в Nodejs. Это серверный js, а там уж есть, куда расти. Вещь перспективная однозначно.
    Ответ написан
    2 комментария
  • Как компилируются пути из scss в css?

    @sorokinfil
    Глянул один из своих проектов. У меня каталог scss лежит внутри каталога с css, относительные пути указаны от родительского каталога с css. Вероятно, у вас каталоги css и scss лежат в одном каталоге, и поэтому кажется, что пути относительные от scss. Выход - расположите каталоги таким же образом там, где у вас они сбрасываются.
    Ответ написан
    Комментировать
  • Разница frontend и web developer?

    @sorokinfil
    front-end - всё, что связано с клиентским приложением, back-end - с серверным.
    web developer - множество, которое может пересекаться как с front-end, так и с back-end developer.
    WPF - да, можно отнести к front-end.
    Ответ написан
    Комментировать
  • C++ или C# новичку?

    @sorokinfil
    Универсальнее и старше C++, лучше его в первую очередь.
    Для работы приложений на C# обязательно нужен установленный .NET Framework, т.н. лишняя зависимость. А он бывает разных версий, что немаловажно для работы приложений, и поддерживается не всеми операционными системами. Знаю только о поддержке в Windows. Сфера применения, соответственно, тоже ограничена. Пока .NET не является мастхэвом, без C# можно обойтись.
    Ответ написан
    Комментировать
  • Что нужно включить в серверную часть PHP для формы обратной связи (JS, Ajax)?

    @sorokinfil
    На стороне клиента данные преобразуются в Json-объект и отправляются по адресу что_за_домен/app/c.
    Значит, на стороне сервера должен находиться обработчик, который вызывается при обращении к этому адресу. Если слишком сложно, то просто создаём ajax.php и кидаем в корень сайта. Обращаемся из js так:
    $.ajax("/ajax.php", { //...

    А вот примерный код в ajax.php
    <?
    	// Email владельца лендинга, на который придёт форма
    	$admin_email = 'admin@example.ru';
    	
    	// Сразу объявляем массив ответа клиенту
    	$response = [];
    	$response['status'] = 'during';
    	
    	// Если передан необходимый Json-объект
    	if (isset ($_POST['data']))
    	{
    		// Преобразуем Json-объект в привычный массив
    		$data = json_decode ($_POST['data']);
    		
    		// Проверяем, есть ли в массиве нужные нам значения
    		if
    		(
    			(isset ($data['name'])) && ($data['name']) &&
    			(isset ($data['email'])) && ($data['email']) &&
    			(isset ($data['phone'])) && ($data['phone'])
    		)
    		{
    			// Сбор и отправка письма владельцу лендинга (переменная с email'ом задана в начале листинга)
    			// Рекомендую установить и использовать PHPMailer вместо стандартной функции mail
    			$mail_subject = "Форма обратной связи";
    			$mail_message = "Имя: " . $data['name'] . "\r\n";
    			$mail_message .= "Email: " . $data['email'] . "\r\n";
    			$mail_message .= "Телефон: " . $data['phone'];
    			mail ($admin_email, $mail_subject, $mail_message);
    			
    			// Установка статуса ответа ок и текста для того, чтобы вывести сообщение
    			$response['status'] = 'ok';
    			$response['message'] = 'Спасибо! Ваша заявка принята.';
    		}
    		// Если не все поля формы были заполнены или не все дошли до сервера
    		else
    		{
    			$response['status'] = 'error_data_is_not_complete';
    		}
    	}
    	// Если ничего не пришло в переменной $_POST['data']
    	else
    	{
    		$response['status'] = 'error_no_data';
    	}
    	
    	// Вывод (отправка обратно) Json-представления ответа, который легко можно распарсить на стороне клиента
    	// Если что-то пошло не так, то в объекте ответа будет status с ошибкой, иначе будет status: ok.
    	echo (json_encode ($response));
    	exit;
    ?>


    На клиенте строчку с
    success: y,
    замените на
    success: function (data)
    {
    	try
    	{
    		// Пробуем распарсить Json-ответ от сервера
    		data = $.parseJSON (data);
    		if (data['status'] == 'ok')
    			alert (data['message']);
    		else
    			alert (data['status']);
    	}
    	catch (e)
    	{
    		// Если ответ не Json, то через alert должна вывестись ошибка, которую вернул php
    		alert (data);
    	}
    },


    Как только убедитесь, что ответ приходит и всё ок, возвращайте обратно на клиентской части
    success: y,
    Чувствую, что y - это какая-то шаблонная функция.

    Я код накидал, но не тестировал. Могут встречаться опечатки.
    Ответ написан
  • Как сгруппировать ключи в массиве и перебрать их?

    @sorokinfil
    Судя по всему, Вам нужен DOM-парсер на php, который разобьёт html-код на массивы, как это делает JQuery.
    Вот что нашёл по первой ссылке из яндекса: https://habr.com/ru/post/176635/
    Ответ написан
    Комментировать