echo '"', __NAMESPACE__, '"';
$page_path = ['page1', 'subpage2'];
$site_menu =
[
'page1' =>
[
'title' => 'Страница 1',
'child' =>
[
'subpage2' => ['title' => 'Субстраница 2', 'child' => []]
]
],
'page2' =>
[
'title' => 'Страница 2',
'child' => []
],
];
// рекурсивная функция для получения сверстанного меню из структуры
function get_main_menu(
$curr_menu, //часть меню текущего уровня
$level, // номер текущего уровня
$menu_path, // путь к текущему уровню меню
&$page_path // путь к текущей странице
)
{
$out = '';
if(count($curr_menu) > 0)
{
$out .= '<ul class="main-menu main-menu_level-'.$level.'">';
foreach($curr_menu as $key_item => $menu_item)
{
$out .= '<li class="main-menu__item '
.($page_path[$level] == $key_item ? 'main-menu__curent' : '') // определяем текущий пункт меню
.'"><a href="'.$menu_path.'/'.$key_item.'">'.$menu_item['title'].'</a>';
get_main_menu($curr_menu['child'], $level + 1, $menu_path.'/'.$key_item, $page_path); // рекурсивный вызов функции для прорисовки следующего уровня
$out .= '</li>';
}
$out .= '</ul>';
}
return $out;
}
// получаем html-фрагмент меню по структуре
$out_site_menu = get_main_menu($site_menu, 0, '', $page_path);
$protocol = $_SERVER['HTTPS'] == 'on' ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'];
$path = $_SERVER['SCRIPT_NAME'];
/****/
// Что-то сделать с $protocol, $host, $path а может что-то еще забрать из $_GET, $_POST, $_FILES....
/****/
header('location: '.$protocol.'://'.$host.$path);
$rows = /* тут выполняется запрос для получения данных */;
$out_data = []; // массив выходных данных
foreach($rows as $row)
{
$order = &$out_data[$row['order_id']]; // ссылка на элемент массива заказа
$order['order_id'] = $row['order_id'];
$order['firstname'] = $row['firstname'];
$order['lastname'] = $row['lastname'];
$order['telephone'] = $row['telephone'];
if(!isset($order['products'])) $order['products'] = []; // этот if нужен, если обязательно наличие ключа products с пустым массивом, если в выборке возможны пустые реквизиты продукта.
if(!is_null($row['product_id']))
{
$product = &$order['products'][$row['product_id']]; // делаем ссылку на элемент массива products с уникальным ключом product_id
$product['product_id'] = $row['product_id'];
$product['sku'] = $row['sku'];
$product['quantity'] = $row['quantity'];
// ... таким же способом можно делать более глубокие ссылки в product, если в этом элементе понадобится массив данных
unset($product); // уничтожайте ссылку в конце цикла, иначе не сможете переиспользовать переменную $product за циклом.
}
unset($order);
}
<?php
// считаем, что данные пришли по POST-у
if(isset($_POST['submit'])) // проверяем, что приехали данные формы по submit, в кнопке сабмита атрибут name должен иметь значение submit
{
$inserted_user_count = 0;
if(isset($_POST['selected_users'])) // присутствуют отмеченные пользователи
{
$pdo = new PDO(параметры подключения к базе);
foreach($_POST['selected_users'] as $selected_user_id)
{
$stmt = $pdo->prepare('insert into ваша таблица (атрибуты таблицы) values (значения атрибутов таблицы, кроме user_id, :user_id)');
$stmt->bindParam(':user_id', $selected_user_id, PDO::PARAM_INT);
// еще байндим какие-то параметры у запроса, если есть плейсхолдеры, кроме :user_id.
$stmt->execute(); // наконец, выполняем запрос
$pdo->commit(); // фиксируем изменения в базе данных, если у вас соединение открыто не в режиме автокамита
$inserted_user_count++;
}
$pdo = null; // закрываем соединение с базой
}
echo 'Обработано пользователей: '.$inserted_user_count;
}
?>
function file_session_write($base, $deltaLastTime)
{
$id = session_id();
//текущее время
$CurrentTime = time();
//через какое время сессии удаляются
$LastTime = time() - $deltaLastTime;
$file = file($base);
$k = 0;
for ($i = 0; $i < sizeof($file); $i++) {
$line = explode("|", $file[$i]);
if ($line[1] > $LastTime) {
$ResFile[$k] = $file[$i];
$k++;
}
}
for ($i = 0; $i<sizeof($ResFile); $i++) {
$line = explode("|", $ResFile[$i]);
if ($line[0]==$id) {
$line[1] = trim($CurrentTime)."\n";
$is_sid_in_file = 1;
}
$line = implode("|", $line); $ResFile[$i] = $line;
}
$fp = fopen($base, "w");
for ($i = 0; $i<sizeof($ResFile); $i++) { fputs($fp, $ResFile[$i]); }
fclose($fp);
if (!$is_sid_in_file) {
$fp = fopen($base, "a-");
$line = $id."|".$CurrentTime."\n";
fputs($fp, $line);
fclose($fp);
}
return sizeof(file($base));
}
session_start();
// а тут просто вызываем функцию с какими угодно параметрами, сколько угодно раз
$result1 = file_session_write( "session1.txt", 30);
$result2 = file_session_write( "session2.txt", 86400);
echo 'res1='.$result1.'; res2='.$result2;
$conn = new mysqli("localhost", "y96360rs_a", "xR&O&&37", "y96360rs_a");
$sql = "UPDATE `admins` SET `login` = ?, `pass` = ?, `name` = ?, `role` = ? WHERE `id` = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssi', $login, $pass, $name, $role, $id);
$id = $conn->insert_id;