Столкнулась с тем, что при открытии popup окна с помощью window.open с четко заданными размерами в разных браузерах реальный размер окна отличается.

Решение оказалось на поверхности и немного неожиданное - просто в одном из сайтов было активно приближение - вместо 100% он отображался на 110%. Так что первым делом рекомендую проверить, оба ли сайта у вас на 100% zoom, если столкнулись с похожей проблемой. 

Допустим, есть список: 

<select name="country" class="input" id="country">
<option value="1" data-type="europe">Страна 1</option>
<option value="2" data-type="africa">Страна 2</option>
</select>

И нам нужно при смене выбора селекта получить значение элемента data-type.

Это можно сделать просто: 

$(document).ready(function () {
$('#country').on('change', function() {
var type = $(this).find(":selected").data().type;
});
});

В миграционный центр Сахарово помимо автобусов МЦ-1 и МЦ-2 теперь ходит еще один маршрут - это МЦ-3. 

Автобус МЦ-3 ходит по маршруту Миграционный центр Сахарово - станция МЦД-2 в Подольске. 

Расписание автобуса достаточно редкое, местами промежутки более часа, поэтому перед поездкой желательно уточнить расписание заранее. 

Расписание от Подольска (автобус отходит от автобусной станции, остановка рядом с троллейбусным кольцом):

  • 6:40, 7:24, 8:09, 8:39, 9:08, 9:38, 10:22, 11:15, 12:08, 13:13, 14:18, 15:23, 16:28, 17:33,  18:31, 19:30

Расписание от Сахарово:

  • 7:25, 8:14, 8:59, 9:29, 9:58, 10:28, 11:12, 12:05, 12:58, 14:03, 15:08, 16:13, 17:18, 18:28, 19:26, 20:20

Расписание актуально на момент написания заметки. Перед поездкой желательно проверить на сайте Мосгортранса. По некоторой информации иногда автобусы приезжают не по расписанию. 

Время в пути: чуть менее часа (зависит от пробок в Подольске). 

Стоимость: как поездка в автобусах Москвы. Возможна оплата Тройкой. 

 

Разберем на примере миграционного центра в Сахарово.

Документы

Точно понадобится: 

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

Возможно понадобится:

  • старый паспорт (туда ставят штамп “погашено”. Возможно можно обойтись и без него, если его отбирают при выдаче нового, но его номер надо знать обязательно - это нужно указать в заявлении на смену.

Порядок действий

Приезжаете в миграционный центр. В Сахарово идете ко входу номер 4, сектор ЮЗ. При входе на территорию нужно будет показать паспорт, при входе 4 будет контроль вещей через ленту. 

...

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

Конечно можно было бы поменять паспорт в посольстве, но это дольше о дороже, решено было менять за границей. 

Все бы ничего, но опасения внушал 1 вопрос - а пустят ли назад в Россию, если в новом паспорте не будет печати о том, что выдан ВНЖ?

Спросили у таможенников - сказали не проблема, просто потом печать надо будет переставить из старого паспорта в новый (по приезде). 

И действительно - когда пересекала границу назад ни у кого даже вопроса не возникло по этому поводу, въехала с новым паспортом без проблем.

Может кому-либо пригодится эта информация. 

Чтобы в таблицу добавить FOREIGN KEY достаточно такого запроса:

ALTER TABLE название_таблицы_куда_добавить
ADD FOREIGN KEY (колонка_в_таблие_куда_добавить)
REFERENCES таблица_на_которую_ссылаемся(название_колонки_в_таблице_куда_ссылаемся);

Если нужно задать название ключа:

ALTER TABLE название_таблицы_куда_добавить
ADD CONSTRAINT название_ключа
FOREIGN KEY (колонка_в_таблие_куда_добавить)
REFERENCES таблица_на_которую_ссылаемся(название_колонки_в_таблице_куда_ссылаемся);

Иногда бывает нужно найти в базе все таблицы, в которых встречается колонка с определенным названием.

Есть несколько способов, как это сделать. К примеру: 

SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%columnName%';

Где columnName - название колонки.

Если убрать знак % - то будет искать по точному соответствию, если  оставить - то по встречающейся в названиях подстроке.

...

Чтобы изменить отступы по краям страницы в PHPWord достаточно при инициализации задать параметры с нужным отступом с каждого бока.

Пример:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection(array(
'marginLeft' => 500,
'marginRight' => 500,
'marginTop' => 500,
'marginBottom' => 500
));
...

Бывает необходимость, когда нужно сделать вложенную таблицу (к примеру, чтобы на каждую линию быт свой стиль, у вложенное таблицы можно отключить границы и визуально ее видно не будет).

Пример, как можно сделать вложенную таблицу в PHPWord:

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();

$table = $section->addTable([
'borderSize' => 2,
'borderColor' => '000000',
'afterSpacing' => 0,
'Spacing' => 0,
'cellMargin' => 0
]);


$table->addRow();

$tableInner = $table->addCell($this->cellWidth)->addTable([
'borderSize' => 1,
'borderColor' => '000000', // тут можно установить белый цвет, если границ не нужно (ffffff)
'afterSpacing' => 0,
'Spacing' => 0,
'cellMargin' => 0
]);
$tableInner->addRow();
$tableInner->addCell($this->cellWidth)->addText('текст');

 

Для того, чтобы заменить только первое вхождение подстроки в строку, можно воспользоваться этой функцией:

function replaceInStringOnce($string, $needle, $replace)
{
$pos = strpos($string, $needle);
if ($pos !== false) {
$string= substr_replace($string, $replace, $pos, strlen($needle));
}
return $string;
}

где: 

  • $string - строка, в которой осуществляется замена
  • $needle - что заменяем
  • $replace - на что заменяем

Возвращает функция либо строку  с заменой, либо исходный вариант строки (если не нашлось, что заменить). 

Пример:


$filename = 'testfile.docx';
header( "Content-Type: application/vnd.openxmlformats-officedocument.wordprocessing‌​ml.document" );
header( 'Content-Disposition: attachment; filename='.$filename);

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection();

$section->addText('My test text');

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'Word2007');
$objWriter->save( "php://output");

Чтобы сделать черные (или любого другого цвета) границы таблицы в PHPWord, при ее инициализации необходимо подать массив с параметрами.  

За цвет отвечает параметр borderColor (в данном случае 000000 - черный), за размер - borderSize

Пример:

...
$table = $section->addTable( [
'borderSize' => 3,
'borderColor' => '000000',
'afterSpacing' => 0,
'Spacing'=> 0,
'cellMargin'=> 0
]);
$table->addRow();
$table->addCell(200)->addText('test');
$table->addCell(200)->addText('test2');
...

Для того, чтобы в PHPWord как сменить ориентацию листа с вертикальной на горизонтальную, необходим такой код:

$paper = new \PhpOffice\PhpWord\Style\Paper();
$paper->setSize('A4');

$phpWord = new \PhpOffice\PhpWord\PhpWord();
$section = $phpWord->addSection(array(
'pageSizeW' => $paper->getWidth(),
'pageSizeH' => $paper->getHeight(),
'orientation' => 'landscape'
));

$paper->setSize('A4');  - тут можно задать и другой размер из доступных. 

Основная настройка:   'orientation' => 'landscape'

 

Вариант, как можно установить сегодняшнюю дату по дефолту:

$( "#mydate" ).datepicker({
dateFormat: 'yy-mm-dd'
}).datepicker("setDate",'now');

В данном примере данная дата будет установлена всегда, не зависимо от того, задано что-то в input value или нет. Если необходимо чтобы это  было зависимо от каких-то условий, добавьте проверку перед тем, как назначать значение. 

Иногда необходимо вывести содержимое json в читаемом виде.

Для этого достаточно просто закодировать json с флагом JSON_PRETTY_PRINT (если у вас уже есть json, который уже был закодирован - просто сделайте json_decode, а затем заново json_encode).

Пример:

 $result = json_encode($data, JSON_PRETTY_PRINT);
echo '<pre>' . $result . '</pre>';

Если необходимо чтобы кириллица тоже не кодировалась и ее сразу можно было прочитать: 

$result = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
echo '<pre>' . $result . '</pre>';