if($date < date('YmdHis'))
{
}
select S.*,
(select S1.location from services S1 where S1.main = S.main and (S1.list is null or S1.list = '')) head_index
from services S
order by head_index, S.list is null or S.list = '' desc, S.location is null or S.location = '' desc, S.location
$sql = "select S.*,
(select S1.location from services S1 where S1.main = S.main and (S1.list is null or S1.list = '')) head_index
from services S
order by head_index, S.list is null or S.list = '' desc, S.location is null or S.location = '' desc, S.location";
$res = mysqli_query($conn, $sql);
$cat_index = 0;
while($row = msqli_fetch_assoc($res))
{
if(is_null($row['list']))
{
if($cat_index > 0)
echo '</ul>'; // закрытие списка
echo '<p>'.$row['main'].'</p><ul>'; // название категории, начало списка
$cat_index++; // считаем категорию, чтобы правильно закрывать списковые теги
}
else
{
echo '<li>'.$row['list'].'</li>';
}
}
if($cat_index > 0)
echo '</ul>'; // закрытие списка
при желании ее удалять
if(isset($_POST['action']) && $_POST['action'] == 'delete') // есть action и он равен delete
{
$link = mysqli_connect($host, $user, $password, $database);
$sql = "DELETE FROM `program_day_1`"; // по одной инструкции удаления на каждую таблицу
$res = mysqli_query($link, $sql);
$sql = "DELETE FROM `program_day_2`";
$res = mysqli_query($link, $sql);
mysqli_close($link);
header('location: program-admin.php');
}
$str = 'Привет 2019 Мир!'; // написано в той кодировке, в которой сохранен файл (хрустальный шар говорит, что utf-8)
$str = mb_convert_encoding( $str, 'windows-1251', mb_detect_encoding( $str ) ); // конвертируем в cp1251
header('Content-Type: text/html; charset=windows-1251'); // Откуда трабла с кодировкой? - не соответствие сообщаемой кодировки в http-заголовке от сервера, с выводимым контентом от сервера. Исправляется явным указанием заголовка
var_dump( $str ); // выводим в той кодировке, что выводит заголовок charset сервера в браузер (хрустальный шар говорит, что до указания header() было charset=utf-8)
// в начале php файла указывается
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$result = curl_exec($ch);
if($result === false)
{
echo 'Ошибка curl: ' . curl_error($ch);
}
else
{
var_dump($result);
}
while($row=mysqli_fetch_array($res))
{
// #########################
// #### начало тела цикла #####
// ##########################
$iduser=$id;
$idkat=$row['idkat'];
// #########################
// #### конец тела цикла #####
// ##########################
}
$res=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat)
VALUES(?,?)");
mysqli_stmt_bind_param($res, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ПОСЛЕДНЕМ прогоне цикла
$result2=mysqli_stmt_execute($res);
while($row=mysqli_fetch_array($res))
{
// #########################
// #### начало тела цикла #####
// ##########################
$iduser=$id;
$idkat=$row['idkat'];
$res2=mysqli_prepare($bd, "INSERT INTO zakaz (iduser,idkat)
VALUES(?,?)");
mysqli_stmt_bind_param($res2, 'ii', $iduser,$idkat); // подставляем переменные, которые присвоились на ТЕКУЩЕМ прогоне цикла
$result2=mysqli_stmt_execute($res2);
// #########################
// #### конец тела цикла #####
// ##########################
}
<form action="send.php">
...
</form>
<form action="send.php" method="POST">
...
</form>
echo "GET:";
var_dump($_GET);
echo "POST:";
var_dump($_POST);
exit();
$product_list = [30, 32, 38];
$query = " `productId` in (".join(', ', array_map(function($item){return int $item;}, $product_list)).")";
$sql = "SELECT * FROM `products` WHERE ".$query;
// Должен получиться запрос:
// SELECT * FROM `products` WHERE `productId` in (30, 32, 38)
// array_map тут нужен для принудительного перевода всех значений в числовой вид, обеспечив тем самым экранирование.
$query = $db->query($sql);
$products_data = $query->fetchAll(\PDO::FETCH_ASSOC);
$product_list = [30, 32, 38];
$in_params = [];
for($i = 0; $i < count($product_list), $i++)
$in_params[':productId'.$i] = $product_list[$i];
// получили массив: $in_params = [':productId0' => 30, ':productId1' => 32, ':productId0' => 38];
$placeholder_string = join(', ', array_keys($in_params));
// получили строку $placeholder_string = ":productId0, :productId1, :productId2";
$sql = "SELECT * FROM `products` WHERE `productId` in (".$placeholder_string.")";
// Должен получиться запрос:
// SELECT * FROM `products` WHERE `productId` in (:productId0, :productId1, :productId2)
$query = $db->prepare($sql);
$query->execute($in_params); // in_params в точности в таком формате, который нужен для связки параметров productId
$products_data = $query->fetchAll(\PDO::FETCH_ASSOC);
$content = hex2bin(str_replace(" ","", "25 50 44 46 2D 31 2E 35 0D 0A 25 B5 B5 B5 B5 0D 0A 31 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 43 61 74 61 6C 6F 67 2F 50 61 67 65 73 20 32 20 30 20 52 2F 4C 61 6E 67 28 72 75 2D 52 55 29 20 2F 53 74 72 75 63 74 54 72 65 65 52 6F 6F 74 20 32 32 20 30 20 52 2F 4D 61 72 6B 49 6E 66 6F 3C 3C 2F 4D 61 72 6B 65 64 20 74 72 75 65 3E 3E 3E 3E 0D 0A 65 6E 64 6F 62 6A 0D 0A 32 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 50 61 67 65 73 2F 43 6F 75 6E 74 20 31 2F 4B 69 64 73 5B 20 33 20 30 20 52 5D 20 3E 3E 0D 0A 65 6E 64 6F 62 6A 0D 0A 33 20 30 20 6F 62 6A 0D 0A 3C 3C 2F 54 79 70 65 2F 50 61 67 65 2F 50 61 72 65 6E 74 20 32 20 30 20 52 2F 52 65 73 6F 75 72 63 65 73 3C 3C 2F 45 78 74 47 53 74 61 74 65 3C 3C 2F 47 53 35 20 35 20 30 20 52 2F 47 53 36 20 36 20"));
// если записать в каталог сервера, то так:
file_put_contents("file.pdf", $content);
// если отдать контент браузеру, то так:
header("Content-type:application/pdf");
header("Content-Disposition:inline;filename='file.pdf");
echo $content;
echo $datetime->format('F j, Y');