Небольшие help-ы из личного опыта
Страницы: 1
Небольшие help-ы из личного опыта, Решение некоторых проблем у начинающих в Mysql и PHP
Для создание данной темы меня сподвиг, во-первых, вечный, ни кому не нужный, апгрейд всех отлично работающих программ, Mysql и PHP в том числе (PHP в меньшей степени).
Во-вторых, если начинаешь искать решение своей проблемы в инете, то первые 50 выдач начинаются словами "Ты чо, лошара, учи матчасть" или "Вот ссыла", а ссыла на английском или, того хуже, на китайском.
Не все живут в Москве, Майами или Шанхае, кто-то живет и в д. Малая Бурёнка, работает скотником, просто у него хобби - писать визитку колхозной фермы с меняющейся номенклатурой производимой продукции. Вот к таким отношусь и я.
Вообщем:
1. Я буду выкладывать возникшую у меня проблему;
2. Постараюсь как можно подробней описать путь решения проблемы;
3. Отметить, что у меня пока не получилось решить проблему и я прошу помощи у коллег по форуму (ответы в личку не принимаются, решение должно быть общедоступным, у многих возникают схожие проблемы).
На это вступительное слово закончено, попробуем наш задел.
Пользуюсь хостингом в Германии 5 лет. Рекомендую, нареканий нет.
И так, я начал писать сайто в OpenServer крайней версии, версия MySQL - 5.7.33, версия PHP - 7.4.27.
1. Создал начальные страницы .php с charset="utf-8"

2. законнектился с MySQL, БД с парой-тройкой таблиц
<?php
$connect = mysqli_connect ('localhost', 'root', '', 'database');
if(!$connect) {
    die ('Ошибка подключения к БД');
}?>
3. В пустые таблицы пытался закачать в формате csv, и формате sql, и формате xml номенклатуру товара, созданную в  Excel. И как говорил Василий Иванович "Нэ лэзэт". Полез в тырнет, нашел примерно 30 первых ответов, из которых ни один не сработал. Мускуль не пропускает ни один формат, внизу пишет "Изучите Mysql Syntax", дает ссылу, открываю - там страница до пола на аглицком, включаю транслейт, выдает общие фразы без конкретики к данной ситуэйшн.
Думаю, да пошли вы все, donnerwetter, на ... и открываю Блокнот (не бумажный), копирую с Mysql пустой запрос на INSERT и забиваю первую строку своими значениями:

INSERT INTO `название таблицы`(`id`, `name`, `company`, `address`, `tel_fax`) VALUES (NULL, 'Огурец многоцелевой', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444')
Объясняю, почему NULL в первом значении id - счетчик ставит значения автоматом, так что нет смысла вставлять самим какое-то значение, тем более оно может быть не уникальным. Ну, ладно, поехали дальше.

Если у нас в исходнике (типа Excel) много строк с номенклатурой, то можно вставлять порциями по 10-20 строк.

В конце запроса, после последней скобки ставим запятую и пробел и делаем копию после VALUE от открывающей скобки и до конца, очищаем поле с прежним названием номенклатуры и вставляем следующую номенклатуру например:
INSERT INTO `название таблицы`(`id`, `name`, `company`, `address`, `tel_fax`) VALUES

(NULL, 'Огурец многоцелевой', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444'),
(NULL, 'Котлеты свежие (и не очень)', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444'),

(NULL, 'Рулет с начинкой из виагры с коньяком', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444'),

(NULL, 'Лапша государственная, длинная', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444'),
(NULL, 'Вода из-под крана - полезная', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444'),
(NULL, '....................... и тд и тп', '"Майами фуд"', 'ул. Майами-Бич, д. 28', '+1 (305) 2-333-444')

В самом конце убираем пробел и запятую (если не убрать, то при закачке выдаст ошибку).
Копируем от INSERT до последней скобки, нажимаем в Mysql вкладку SQL, в нижней строчке с кнопками нажимаем кнопку "Очистить" и вставляем скопированный текст. В правом нижнем углу жмём кноповку "Вперёд" и ... аглицкий враг будет разбит и победа будет за нами.
Метода для небольших закачек (100, 500, 1000 строк) - за то работает без косяков, проверено мной и утверждено ОТК моей конторы (КГБ).
Следующая тема - "задрахало кодировко - знаки вопроса на странице сайта или кракозябры в бд"
Теперь - что такое "не идет кодировка" и как я его победил.
Как вы заметили, у меня в OpenServer чистый коннект и ничего больше

<?php
$connect = mysqli_connect ('localhost', 'root', '', 'database');
if(!$connect) {
    die ('Ошибка подключения к БД');
}?
В .php установлена кодировка utf-8, в Mysql  - utf8mb4_unicode_ci, в таблицах БД все на русском, делаю запрос со страницы .php и тут же на странице вывожу таблицу

<?php
$name = $_POST['tov'];
$sql = mysqli_query($connect, "SELECT * FROM `product` WHERE `name_product` LIKE '%$name%' ORDER BY `name_product`");
$sql = mysqli_fetch_all($sql);
?>

<table border="1" align="center" width="100%">
   <tr class="zagolovok_2" align="center">
     <td width="40%">Наименование</td>
     <td width="20%">Компания</td>
     <td width="20%">Адрес</td>
     <td width="20%">Тел/факс</td>
  </tr>
  <?php foreach($sql as $item) {
    ?>
          <tr class="card_suite_1_1">
<td><strong><?= $item[1] ?></strong></td>
<td><strong><?= $item[2] ?></strong></td>
<td><strong><?= $item[3] ?></strong></td>
<td><strong><?= $item[4] ?></strong></td>
    </tr>
     <?php }
     ?>
Всё тип-топ, выводит красиво, на чиста басяцком русском, панимаш.
Я, с радостной мордой лица, копирую файлы (в пустую директорию) и БД (в пустую БД) на хостинг в Holland (или на Bahamas или в Russia). Везде, после переезда сайта и БД, страница сайта с запросом выдает в результирующей таблице "??????????????????????????????????????".
Полез опять в тырнет, ответы: "У тебя руки кривые" 50%, "Версии Mysql и PHP  не совпадают" 30%, "Поменяй кодировку БД" 10% и "Задай set_charset=utf8" 10%.
Три дня сексуального возбуждения от нерешаемой проблемы, у саппортов на хостингах истерика, перебор всех возможных вариантов ничего не дал, помог русский метод тыка - вставил в $connect строку mysqli_set_charset($connect, "utf8mb4"), а не mysqli_set_charset($connect, "utf8") и все заработало, появились родные для меня буквы "абвгдейка".
Да, еще в догонку, эти нехорошие люди поменяли mysql на mysqli, добавив в конец букву "i" ... и ничего, Бася, больше. И у меня все скопированные коды со старых сайтов не работают, я добавил в код букву "i" - все заработало.
Ну, вроде пока все, появиться проблема, напишу.
Тэк-с, возникла проблема:
<?php
$name = $_POST['tov'];
$sql = mysqli_query($connect, "SELECT * FROM `product` WHERE `name_product` LIKE '%$name%' ORDER BY `name_product`");
$sql = mysqli_fetch_all($sql);
?>

Всё работает, поиск по введенному в форму слову работает. Ищет в поле `name_product` слово $name по любому месту в строке.
Например: вводим слово "ультра" находит

"Ультразвуковое исследование простаты (трансабдоминально)"
вводим "прост"
"Ультразвуковое исследование простаты (трансабдоминально)"
но если мы вводим словосочетание "Ультразвуковое простаты" возникает серьёзный трабл - нуль в выдаче.
Как всегда, в тырнете "Воспользуйся js или c++ или python"

И так, может кто-то уже сталкивался с этой байдой - поиск по любому словосочетанию, отпишитесь.
Для product установить индекс fulltext в настройках структуры таблицы и использовать вместо like - march against примеры погуглите: sql match against w3school
И данные из формы поиска перед использованием в sql запросе таки надо фильтровать, если это общедоступный поиск. Погуглите: фильтровать данные из перед запросом в бд

Проверьте instantCMS 1.10.7 там из коробки есть компонент универсальный каталог и в нем инструмент для импорта exelвских файлов в каталог ну или погуглите парсер xml или какой у вас формат
Цитата
Нил пишет:
march against

Match Against
Спасибо, Нил, за оперативный отклик, но мы опять возвращаемся к "по-гугли", "по-парси", "скачай".
Про fulltext index match against я уже 100500 статей прочитал. Опять же заостряю внимание - я не ведущий специалист проекта СОРМ, я деревенский скотник.

Мне нужен ответ примерно в таком виде:
"Уважаемый имярек!
В Вашем исходном коде $sql = mysqli_query($connect, "SELECT * FROM `product` WHERE `name_product` LIKE '%$name%' ORDER BY `name_product`");
для поиска двух произвольных слов в строке одного поля надо прописать
$sql = mysqli_query($connect, "SELECT * FROM FULLTEXT `product` MATCH `name_product` AGAINST '%$name%' ORDER BY `name_product`");
все!"
Из области PHP (не охота открывать тему в PHP-разделе из-за 3-4 постов).
И так, в чем суть? Есть форма, в ней поле ввода текста input. Задрало постоянное выпадение километрового списка ранее введенных слов. В тырнете ответы - отключи "Включить запоминание введенных в текстовые поля (формы) данных". Мне это не в жилу, лазить по 5-ти браузерам, искать где что отключить, т.к. тест сайт проходит в 5-ти браузерах.
Случайно нашел параметр  autocomplete="off". Поставил в строку

<input name="customer" autocomplete="off" type="text">
проверил в "палёной лисе", в "хромом" и в "ящике" - все работает.
Страницы: 1
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)
Новые темыОбъявленияСвободное общение
22:03 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
15:46 Profit Pixels - In-House Форекс, Крипто, Трейдинг CPA Офферы | Еженедельные Выплаты | CPA до $950 
15:11 DreamCash.tl - заработок на онлайн-видео. До 95% отчислений, отличный конверт! 
14:54 3snet - гемблинг, беттинг, форекс, бинарные опционы, майнинг 
05:57 Яндекс выдача 15 августа 2022 
00:11 Апдейт Яндекс выдача 13 августа 2022 
18:09 AviTool - мощный инструмент для автоматизации работы с Avito 
23:25 Amigo! Cryptos – платформа для обмена криптовалют. 
23:15 WMStar.club – сервис покупки и продажи Электронных валют! 
18:58 Напишу посты для ВК за отзывы на Kwork 
17:19 Ural-obmen.ru — выгодный сервис обмена 
16:58 Obama.ru - безопасный обмен криптовалют и электронных денежных средств 
11:47 Размещу ссылки/статьи на ваш сайт | Рост ИКС | XRumer 19.0.11 
11:17 BestChange – обменивать электронную валюту можно быстро и выгодно 
19:00 Как обходить блокировку Ютуба 
18:53 Wildberries сменил название сайта 
15:50 Есть нормальная Тизерка? 
18:38 С юмором по жизни! 
11:29 Перл Орфограммки 
09:58 Как принимать заказы на форуме 
09:23 Сбербанк предупредил о схеме мошенничества с "пирамидными" покупками на маркетплейсах