Небольшие 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)
Новые темыОбъявленияСвободное общение
19:23 Webvork - международная товарная СРА сеть с сертифицированными офферами на Европу. 
16:18 Adtrafico - Правильная партнёрская сеть под бурж трафик 
12:26 Bropush - твой бро в монетизации сайта push-уведомлениями 
17:06 Perfect.Studio: InstAccountsManager — лучший инструмент для автоматизации заработка в Instagram 
16:04 VKAccountsManager — лучший инструмент для продвижения и заработка Вконтакте 
13:26 DreamCash.tl - заработок на онлайн-видео. До 95% отчислений, отличный конверт! 
11:46 Dao.AD: Монетизация и покупка Push/Pops/Inpage и Video трафика! 
19:37 Belurk — высокоскоростные анонимные прокси от 0,24 рублей 
14:04 Coin Click.cc - Быстрый и надежный обмен электронных валют в два клика 
11:15 Удостоверение журналиста СМИ РФ. Официальное оформление в действующей редакции. Без предоплаты! 
21:36 Дешевые просмотры YouTube с гарантией, лайки, подписчики Instagram, ВК, Facebook, ОK, Twitter - SmmPanele.Ru 
17:55 Ural-obmen.ru — выгодный сервис обмена 
15:41 BestChange – обменивать электронную валюту можно быстро и выгодно 
14:55 Obama.ru - безопасный обмен криптовалют и электронных денежных средств 
23:36 Видимо, похороны СУПРа уже прошли как-то по-тихому 
23:41 Точные прогнозы на футбол 
12:04 Как получить рефералов и посетителей на сайт бесплатно. 
12:48 Каспкрски ОС 
11:21 Ням-ням! - 8 деликатесов, которые когда-то ели только бедные люди 
14:41 Бесплатный мини-аудит юзабилити и конверсии + технический SEO-аудит в подарок 
15:24 Добро пожаловать в цифровой мир...