Web Мастерская»Блог

Сообщество Web Мастеров. Тут собрано всё, чтобы написать свой первый сайт, запустить его в Интернет и поддерживать его в течении всей его работы.

MySQL: Как получить самую длинную строку столбца

Порой необходимо знать самую длинную строку столбца, чтобы правильно указать размер поля. Для этого можно использовать запрос:
SELECT MAX(`столбец`) FROM `таблица`;

Укажите свой столбец и таблицу и выполните запрос. Запрос вернёт самую длинную строку....

Uncaught mysqli_sql_exception: Data too long for column

Получил ошибку: Uncaught mysqli_sql_exception: Data too long for column. Из текста ошибки ясно, что машина получила слишком длинные данные.

Я не стал менять тип поля, чтобы увеличить её ёмкость, я просто сделал проверку на длину строки, перед сохранением данных в Базу Данных (По аналогии: Тема: Слишком большое имя (failed to open stream: File name too long)).

Делаю так:
$insert['search_query'] = (mb_strlen($search) > 250) ? mb_substr($search, 0, 250) : $search;

Готово. Ошибка исчезла.

Строка нужна для одногоразового поиска, и длиннее чем 250 символов, она ни к чему. Поэтому, в моём случае, удаление части строки допустимо. Если это не Ваш случай, рассмотрите вариант с увеличением ёмкости поля, куда сохраняется запись, либо замену типа столбца....

Карусель фотографий

Для одной своей идеи, использовал карусель фотографий, взятую из интернета и переписанную под себя. Выложу, как было у меня. Карусель использует библиотеку jQuery, так что придется подключать её, хотя, переписать на чистый JavaScript не составит особого труда.

jQuery:
var carouselID = 1, change = 8000;

function carouselStart() {
	if ($('div[data-carousel="carousel"]').length < 1) {
		return false;
	};

	$('div[data-carousel="carousel"]').each(function() {
		$(this).removeAttr('data-carousel').attr('id', 'carousel_' + carouselID);
		carousel('#carousel_' + carouselID);
		carouselID++;
	});
};

$(() => {
	carouselStart();
	window.setInterval(carouselStart, 3000);
});

function carousel(carouselID) {
	var $slr, $sls, interval, $selectors, $btns, currentIndex, nextIndex;
	var cycle = index => {
		var $currentSlide, $nextSlide, $currentSelector, $nextSelector;
		nextIndex        = index !== undefined ? index : nextIndex;
		$currentSlide    =
...

JS: Метод массива forEach()

Метод forEach() перебирает все элементы массива. В качестве параметра используется функция, которая будет работать с каждыми элементом массива.

Пример:
const n = [1, 2, 3, 4, 5]

n.forEach(function(num) {
	alert(num);
});
...

Магический метод __call(): Вызов при недоступных методов

PHP
Магический метод __call() запускается при попытке обращения к несуществующему/недоступному методу:
	public function __call($name, $arguments)
	{
		echo 'Метод: ' . $name . ' не найден.';
	}

Мои два метода (installation и update) были похоже друг с другом, за исключением деталей, я решил их объединить, в один, при этом обращение к методам должно было остаться прежним:
$class->installation();
$class->update();

С решением этой задачи мне помог магический метод __call():
	// Установка | Обновление
	public function __call(string $name, array $arguments)
	{
		// Проверка: Если вызываемый метод не: installation, или не: update, то функция вернёт null 
		if (!in_array($name, ['installation', 'update']))
		{
			return null;
		}

		// Код функции
	} // End: Установка | Обновление
...