$max_cart_item_count = 500;
$curr_cart_item_count = min(count($_SESSION['cart']), $max_cart_item_count);
for($i = 0; $i < $curr_cart_item_count; $i++)
....
WHERE `type`= '$id'
$stmt = $conn->stmt_init();
$stmt->prepare("SELECT * FROM `items` WHERE `type` = ?"); // подставляем текст запроса, причем на месте входных параметров ставим специальные маркеры - плейсхолдеры.
$stmt->bind_param("i", $id); // подставляем на место плейсхолдера значение параметра как целочисленный тип
$stmt->execute(); // вот теперь можно выполнить запрос
$result = $stmt->get_result();
while($row = $result->fetch_assoc())
{
// Обработка результатов
}
btn_send.addEventListener('click',async() => {
let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
let formData = new FormData(); // Создаем объект формы для наполнения данными, словно мы работаем с тегом form в html.
formData.append('canvas_field', blob, 'canvas.png'); // это эквивалент тому, что в нашей html форме создаем поле input type="file" name="canvas_field" value="canvas.png" и прикрепляем туда содержимое blob (метод append сам расшаривает blob, дополнительных преобразований не требуется). Естественно, на DOM-дереве это никак не отразится, это модель формы в памяти JS.
let response = await fetch('web_tp_word.php', {
method: 'POST',
body: formData // для fetch не нужно дополнительных параметров, чтобы объяснить как работать с formData. Идеально, чтобы завернуть файл в форму и отправить на сервер.
});
});
var_dump($_FILES['canvas_field']); // Сервер при вызове скрипта сложит данные файла во временный файл, а как их получить - в $_FILES. Далее можно обрабатывать всеми теми способами, предназначенные для работы с $_FILES. И после уже неважно, как их сгенерировали на клиенте.
SELECT SUM(rating) as rating, SUM(vote_num) as num
FROM " . PREFIX . "_post_extras as pe
inner join " . PREFIX . "_post as p on p.post_id = pe.post_id -- тут название ключей post_id с обеих сторон нужно уточнять!
WHERE pe.user_id ='{$id}'
and p.category = '{$category_id}'
$imagick->writeImage('*.webp');
var_dump($ext);
$imagick->writeImage($ext.'.webp');
UPDATE article SET visits=(visits+1) WHERE id='".$theme_idss."' LIMIT 1
UPDATE article
SET visits=(visits+1),
today = today + 1 -- суточные посещения
WHERE id='".$theme_idss."' -- когда разберетесь, что такое sql-инъекция, то перепишите все запросы, использующие такой стиль подстановки параметров (склеиванием строк)
LIMIT 1 -- после того, как разберетесь, является ли id первичным ключом, можно убрать лимит
ALTER TABLE article
ADD COLUMN today int default 0 AFTER visits
UPDATE article
SET today = 0
//items/item[categoryId=//catalog/category/@id]
//catalog/category[@id="тут вставляем код категории"]
if($rows) {
$logged = true;
} else {
$logged = false;
}
}
else {
$logged = false;
}
// Секция, где присваиваются значения по умолчанию основных переменных
$logged = false;
.....
....
// начинаем проверку
if(первое условие)
{
if(второе условие)
{
if(еще какое-то супер-пупер условие)
{
$logged = true; // вот теперь, пройдя все медные трубы, мы изменяем статус
}
}
}
<a\s.*?href="(.+?)".*?>\[photo-.+<\/a>
$out_array = [];
foreach($donates as $donate)
{
$donate_copy = $donate; // копируем элемент массива
unset( $donate_copy->id); // удаляем уникальное свойство из элемента
$key = md5(serialize($donate_copy)); // получаем уникальный ключ по содержанию остальных свойств
$out_array[$key] = $donate; // добавляем исходный элемент в новый массив по уникальному ключу
}
... на глобальном сбой.
$this->go_to_back_one_stap = explode('.ru', $_SERVER['HTTP_REFERER']);
Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.
$out_users = [];
foreach($array_decode['response'] as $user)
$out_users[$user['id']]['user'] = $user['user'];
$out_users = [];
foreach($array_decode['response'] as &$user) // обратите внимание на доступ по ссылке & к элементу массива
{
$out_users[$user['id']]['user'] = $user['user'];
unset($user); //удаляем элемент из массива $array_decode['response'], чтобы не росло использование памяти.
}