Помощь Помогите разобраться в многоуровневой навигации, фильтрах и поиске.

Нет, не только экспортировать. Например, сейчас понадобилось очистить 2 таблицы, часто нужно просто просмотреть и какие-то величины отредактировать или что-то найти и так далее.
Если бы только экспорт, бекап, проблем бы не было.
Со всем этим pma должен справляться, массовое редактирование - через апдейт, несколько записей через поиск. Или подробнее опишите что не смогли сделать через pma, кроме экспорта 450Mb.
 
+ модуль с выпадающими картинками, идущий вместе с темой warehouse

Смотрю папки модулей стандартной поставки warehouse 4.1.17.
Можно уточнить как называется эта папка? Достаточно просто залить её в папку модулей престы?
И будет ли этот модуль в сочетании с темой трансформер работать?
 
Можно ещё вопрос по поводу phpMyAdmin?

Сегодня первый раз случилось такое, что phpMyAdmin экспортировал пустые файлы (0 байт).
Я написал провайдеру, а тот ответил, что это неудивительно при таком большом размере БД.
Ок, после добавления, сейчас в магазине около 56 тысяч товаров, а база весит 450 МБ.
Но что-то я не уверен, что провайдер не отмахнулся просто.
На самом деле при размере БД 450 мб phpMyAdmin перестаёт нормально работать?
Таблицы phpMyAdmin очистил без проблем.

Провайдер посоветовал попробовать либо более новую версию phpMyAdmin (а я и так работаю на версии 4), либо делать дампы через SSH (что я и вынужден был сделать).
Однако ведь без phpMyAdmin неудобно работать с базами.

Есть какие-то удобные альтернативы, которые могут без проблем комфортно работать с большими базами?

работал с базами и до 2ГБ в phpMyAdmin

но когда что-то на сервере не так по ресурсам или настройкам и т.д.

подключаюсь к базе с помощью утилиты Для просмотра ссылки Войди или Зарегистрируйся
там есть всё что нужно
 
Можно ещё вопрос по поводу phpMyAdmin?

Сегодня первый раз случилось такое, что phpMyAdmin экспортировал пустые файлы (0 байт).
Я написал провайдеру, а тот ответил, что это неудивительно при таком большом размере БД.
Ок, после добавления, сейчас в магазине около 56 тысяч товаров, а база весит 450 МБ.
Но что-то я не уверен, что провайдер не отмахнулся просто.
На самом деле при размере БД 450 мб phpMyAdmin перестаёт нормально работать?
Таблицы phpMyAdmin очистил без проблем.

Провайдер посоветовал попробовать либо более новую версию phpMyAdmin (а я и так работаю на версии 4), либо делать дампы через SSH (что я и вынужден был сделать).
Однако ведь без phpMyAdmin неудобно работать с базами.

Есть какие-то удобные альтернативы, которые могут без проблем комфортно работать с большими базами?
450 Мб - это совсем небольшая БД, но если вы работаете с PMA, то надо понимать, что между вами и mysql'ем есть: браузер, потом nginx/apaсhe/другой-веб-сервер, затем PHP, всё со своими ограничениями/глюками/тормозами. Поэтому вам совершенно правильно написал @Zveruga76 - лучше ssh+mysqldump вряд-ли что-то можно придумать.
Не знаю, видите ли вы это, но задачи стоящие перед вами явно говорят, что без изучения sql вам не обойтись. Как раз для массового редактирования /просмотра каких-то величин ничего лучше нету.
 
лучше ssh+mysqldump вряд-ли что-то можно придумать
+1.
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
для бекап-ресторе БД написали простенький скрипт, юзающий mysqldump.
Удобно, забекапил БД, что-то пошло не так, восстановил в два клика мышки.
Выложу в свободный доступ на днях.
 
Скрипт бекапа всех сайтов + дамп всех БД в виде sql и в бинарном виде (на всякий случай). Предполагается, что веб-сервер - nginx, а СУБД - mariadb. Для апача нужно немного исправить. Склёпан на коленке за 10 минут, такшта сильно не пинайте :)
UPD: забыл добавить, для простоты еще бекапится вся директория /etc
Код:
#!/bin/bash

echo "========= !!! Should be run manually as root !!! =========="

BKDATE=`date '+%F'`
BKTIME=`date '+%Hh%Mm%Ss'`
BKTIME1=`date '+%T'`

#Здесь можно указать куда складывать бекапы
BKDIR="./backups/full_"$BKDATE"_"$BKTIME.backup
#BKDIR="/var/backups/full_"$BKDATE"_"$BKTIME.backup
BKLOGFILE="/var/log/backup_"$BKDATE"_"$BKTIME1".log"

echo "Starting backup at date:" $BKDATE"; time:" $BKTIME1"; backup dir: "$BKDIR 2>&1 | tee -a $BKLOGFILE
echo "==================================================================================================================" 2>&1 | tee -a $BKLOGFILE
#############echo "Starting backup at "`date '+%F %T'` 2>&1 | tee /var/log/backup_`date '+%F_%T'`.log

echo -n "Creating  directory" $BKDIR 2>&1 | tee -a $BKLOGFILE
mkdir -p $BKDIR
if [ $? -ne 0 ]; then
    echo " ... FAIL! Error code:"$? 2>&1 | tee -a $BKLOGFILE
    exit 1;
else
    echo " ... Ok"  2>&1 | tee -a $BKLOGFILE
fi

#здесь задать имя файла с этим скриптом, чтобы он тоже добавлялся в архив
cp ./backup-all.sh $BKDIR/backup-all.sh
#cd $BKDIR

echo -n "Backing up /etc ... " 2>&1 | tee -a $BKLOGFILE
#############read -rsp $'Press any key to start...\n' -n 1 key

tar -cjvpf $BKDIR/etc.tbz2 /etc
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo "Backing up webroot home dirs ... " 2>&1 | tee -a $BKLOGFILE
############read -rsp $'Press any key to start...\n' -n 1 key
echo -n "Trying to stop NGINX ... " 2>&1 | tee -a $BKLOGFILE
systemctl stop nginx
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    exit 1;
fi
echo "Ok, NGINX stopped" 2>&1 | tee -a $BKLOGFILE


####################################### Здесь вместо /home-of-your-www указать ваш путь к сайту
echo -n "Compressing weboot dirs ... " 2>&1 | tee -a $BKLOGFILE
tar -cjvpf $BKDIR/www.tbz2 /home-of-your-www
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    systemctl start nginx
    if [ $? -ne 0 ]; then
        echo "\nFailed to start NGINX! Error code:"$? 2>&1 | tee -a $BKLOGFILE
        exit 2;
    fi
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo -n "Backing up mysql/mariadb database as text ... "
############read -rsp $'Press any key to start...\n' -n 1 key

############ вместо ххххххх нужно указать пароль для mysql, вместо пользователя root можно указать любого другого, у которого достаточно прав на дамп всех БД
#here you can add specific mysql user who have enough rights to make database dumps
mysqldump -uroot -pxxxxxxxxxx -A | bzip2 > $BKDIR/alldatabases.sql.bz2
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    systemctl start nginx
    if [ $? -ne 0 ]; then
        echo "\nFailed to start NGINX! Error code: "$? 2>&1 | tee -a $BKLOGFILE
        exit 2;
    fi
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo "Backing up mysql binary files ... "
#This is redundant, but could be the last resort whel restoring
###########read -rsp $'Press any key to start...\n' -n 1 key
echo -n "Trying to stop Mysql/Mariadb ... " 2>&1 | tee -a $BKLOGFILE
systemctl stop mysql
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    systemctl start nginx
    if [ $? -ne 0 ]; then
        echo "\nFailed to start NGINX! Error code:"$? 2>&1 | tee -a $BKLOGFILE
        exit 2;
    fi
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo -n "Compressing binaries ... " 2>&1 | tee -a $BKLOGFILE
tar -cjvpf $BKDIR/alldatabases-bin.tbz2 /var/lib/mysql /var/log/mysql
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    systemctl start mysql
    if [ $? -ne 0 ]; then
        echo "\nFailed to start mysql/mariadb! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    fi
    systemctl start nginx
    if [ $? -ne 0 ]; then
        echo "\nFailed to start NGINX! Error code: "$? 2>&1 | tee -a $BKLOGFILE
        exit 2;
    fi
exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo -n "Trying to start Mysql/Mariadb ... " 2>&1 | tee -a $BKLOGFILE
systemctl start mysql
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    systemctl start nginx
    if [ $? -ne 0 ]; then
        echo "\nFailed to start NGINX! Error code: "$? 2>&1 | tee -a $BKLOGFILE
        exit 2;
    fi
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE

echo -n "Trying to start NGINX ... " 2>&1 | tee -a $BKLOGFILE
systemctl start nginx
if [ $? -ne 0 ]; then
    echo "FAIL! Error code: "$? 2>&1 | tee -a $BKLOGFILE
    exit 1;
fi
echo "Ok" 2>&1 | tee -a $BKLOGFILE
##this for ease access from (s)ftp / scp
##change to whatever you want or remove if not necessary
chown -R backup_operator_username:backup_operator_group $BKDIR
echo "======= !!!! ALL DONE !!!! =======" 2>&1 | tee -a $BKLOGFILE

0
 
Последнее редактирование:
Ещё 2 конкретных вопроса по родному престовскому поиску:

1. Как сделать, чтобы поиск выдавал результаты по всей фразе, а не для каждого слова из фразы?
Сейчас, например, если человек ищет книгу "Водка и Сталин", то поиск выдаёт все товары, содержащие в названии слова водка или Сталин
и это большое количество ненужных покупателю товаров, в котором теряется нужная книга.

2. Как сделать, чтобы поиск не делал различий между е и ё?
Сейчас, например, если в поиске задать Пугачёва, поиск ничего не найдёт, так как в названиях данных товаров прописана буква е, а не ё.
 
1. В настройках поиска есть опции "Искать подстроку" и "Поиск точного совпадения с окончанием" - мне кажется, этого достаточно для настройки поиска как вам нужно.
2. Странно, но MySql как раз не различает е и ё если у него кодировка utf8 и дефолтный collation:) Мне кажется, нужно смотреть какая в вашей БД кодировка и collation. Если поставить utf8_general_ci то е и ё не будут различаться, и не будет различаться регистр букв.
 
1. В настройках поиска есть опции "Искать подстроку" и "Поиск точного совпадения с окончанием" - мне кажется, этого достаточно для настройки поиска как вам нужно.
2. Странно, но MySql как раз не различает е и ё если у него кодировка utf8 и дефолтный collation:) Мне кажется, нужно смотреть какая в вашей БД кодировка и collation. Если поставить utf8_general_ci то е и ё не будут различаться, и не будет различаться регистр букв.

не

тут дело просто в том, как преста формирует запрос на выборку из БД

1) т.е. по дефолту преста разбирает введённую фразу на слова и ищет слова только по OR (для решения достаточно поправить код запроса с OR на AND)

2) то же самое: преста перегоняет любые нелатинские символы сначала в латиницу (в латинице и хранит поисковые индексные слова) и потом уже по латинице ищет (для решения нужно найти, где именно "ё" превращается в "yo" и заменить "yo" на "e")
 
1) т.е. по дефолту преста разбирает введённую фразу на слова и ищет слова только по OR (для решения достаточно поправить код запроса с OR на AND)

2) то же самое: преста перегоняет любые нелатинские символы сначала в латиницу (в латинице и хранит поисковые индексные слова) и потом уже по латинице ищет (для решения нужно найти, где именно "ё" превращается в "yo" и заменить "yo" на "e")

Кажется в этом файле эти строки решают что и как искать:

foreach ($words as $key => $word) {
if (!empty($word) && strlen($word) >= (int)Configuration::get('PS_SEARCH_MINWORDLEN')) {
$word = str_replace(array('%', '_'), array('\\%', '\\_'), $word);
$start_search = Configuration::get('PS_SEARCH_START') ? '%': '';
$end_search = Configuration::get('PS_SEARCH_END') ? '': '%';

$intersect_array[] = 'SELECT DISTINCT si.id_product
FROM '._DB_PREFIX_.'search_word sw
LEFT JOIN '._DB_PREFIX_.'search_index si ON sw.id_word = si.id_word
WHERE sw.id_lang = '.(int)$id_lang.'
AND sw.id_shop = '.$context->shop->id.'
AND sw.word LIKE
'.($word[0] == '-'
? ' \''.$start_search.pSQL(Tools::substr($word, 1, PS_SEARCH_MAX_WORD_LENGTH)).$end_search.'\''
: ' \''.$start_search.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).$end_search.'\''
);

if ($word[0] != '-') {
$score_array[] = 'sw.word LIKE \''.$start_search.pSQL(Tools::substr($word, 0, PS_SEARCH_MAX_WORD_LENGTH)).$end_search.'\'';
}
} else {
unset($words[$key]);
}
}

?

Не пойму как изменить, чтобы добиться поиска по целой фразе.
Здесь нет никаких OR.

Или может есть модули, в которых все эти и другие проблемы уже решены и которые не слишком сложны в настройках?
 
Последнее редактирование:
Назад
Сверху