Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Открыть новую тему     Написать ответ в эту тему

zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

как установить часовой пояс UTC + 3?
 
 
 
Добавлено:
код работает
что я хотел бы получить сейчас и это
конвертировать слова от множественного числа к единственному
пример:
если прошло 2 минуты, отобразить «минуты» minuti
если прошел 1 день, отобразить "дни" giorni
если прошло 2 часа, отобразить «часы» ore
если прошло 2 месяца, отобразите "месяцы" mesi
если прошло 2 года, отобразить "годы" anni
 

Код:
 
$var3 = $fetch->dateup;
 
$seconds_ago = (time() - strtotime($var3));
 
if ($seconds_ago >= 31536000) {
    echo "aggiornato " . intval($seconds_ago / 31536000) . " anni fa";
} elseif ($seconds_ago >= 2419200) {
    echo "aggiornato " . intval($seconds_ago / 2419200) . " mesi fa";
} elseif ($seconds_ago >= 86400) {
    echo "aggiornato " . intval($seconds_ago / 86400) . $a3;
} elseif ($seconds_ago >= 3600) {
    echo "aggiornato " . intval($seconds_ago / 3600) . " ore fa";
} elseif ($seconds_ago >= 60) {
    echo "aggiornato " . intval($seconds_ago / 60) . " minuti fa";
} else {
    echo "aggiornato meno di un minuto fa";
}
 

 
Я пробовал это, но это не работает
 

Код:
 
<?php if($a3 ==1){echo "giorno fa";}else{echo "giorni fa";}?>
 


Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 12:57 23-03-2021 | Исправлено: zagorisback, 14:40 23-03-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
zagorisback

Цитата:
часовой пояс UTC + 3?

https://www.php.net/manual/en/function.date-default-timezone-set.php
 

Цитата:
конвертировать слова от множественного числа к единственному

я написал и использую такой код для русского языка

Код:
function numeral($n, $texts, $withN = false) {
  if (count($texts) != 3 && count($texts) > 0) return $texts[0];
  $cases = [2, 0, 1, 1, 1, 2];
  return ($withN ? ($n . ' ') : '') . $texts[($n % 100 > 4 && $n % 100 < 20) ? 2 : $cases[min($n % 10, 5)]];
};

применение очевидно.. если нет, то  

Код:
numeral($var, ['минута', 'минуты', 'минут'])

возможно для других языков (не программирования) нужно иначе.
 
в простейшем случае - если больше 1, то множественное, иначе - единственный.
 

Цитата:
Я пробовал это, но это не работает

все работает. смотреть нужно чему равна переменная. и проще

Код:
echo "giorn" . ($a3 == 1 ? "o" : "i") . " fa";

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 20:06 23-03-2021 | Исправлено: Mavrikii, 20:09 23-03-2021
zagorisback



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Спасибо,
но я уже решил это с другим кодом
 

Код:
 
<?php
 
    function quanto_tempo_fa($ptime) {
        $etime = time() - strtotime($ptime);
        if ($etime < 1) return '0 secondi';
         
        $a = array(
        31536000 =>  array('anno','anni'),
        2419200 =>  array('mese','mesi'),
        86400 => array('giorno','giorni'),
        3600 => array('ora','ore'),
        60 => array('minuto','minuti'),
        1 => array('secondo','secondi')
        );
         
        foreach ($a as $secs => $str) {
            $d = $etime / $secs;
            if ($d >= 1) {
                $r = round($d);
                return "aggiornato " . $r . ' ' . ($r > 1 ? $str[1] : $str[0]) . ' fa';
            }
        }
    }
     
     
     
    $var1 = $fetch->dateup; // campo da dove prelevare i dati
     
    //test
    echo quanto_tempo_fa($var1);  
     
?>
 
 
 

Всего записей: 623 | Зарегистр. 05-05-2014 | Отправлено: 20:41 23-03-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую, подскажите плз, как проще решить.
Есть таблица, пусть будет banner, в ней 3 поля - id, banner_name, html_text.
 
Важно последнее - html_text - в таблице очень много записей, в которых это поле содержит вхождения с html тегами, например  -  

Код:
<h4 class="my-class">тут свой заголовок</h4>  

- или  

Код:
<h3 class="my-class">тут другой свой заголовок</h3>

 
Необходимо во всех этих вхождениях заменить тег h4 или  h3 на span.  
Вроде бы регуляркой как то, но не могу сам, знаний не хватает..

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 14:45 09-04-2021 | Исправлено: Weinaum, 14:46 09-04-2021
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum
Мне кажется проще всего открыть проект в Phpshtorm и поиском (ctrl+Shift+R) по "<h4 class="my-class""  руками заменить что надо.
Вопрос конечно никак с MySql не связан...

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 17:59 09-04-2021 | Исправлено: Kaber, 18:17 09-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
никак с MySql не связан...
Вы что читать не умете ?!!!

Цитата:
 в таблице очень много записей, в которых это поле содержит вхождения с html тегами, например

Подробнее...

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 20:19 09-04-2021 | Исправлено: MihailM, 20:43 09-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaber

Цитата:
открыть проект

какой?
 
MihailM
я думаю, что он не хочет оставлять и классы, а тут простой replace не поможет.
 
Weinaum
если вам проще работать с текстом - сделайте дамп, откройте SQL файл в любом текстовом редакторе, сделайте замену так, как умеете.
вы не указали, нужно ли оставлять class у тега или нет и фиксированный ли там класс или нет. просто для информации - замена с помощью регулярки поддерживается в MySQL 8+, в версии ниже регулярка используется только для поиска.
 

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 20:42 09-04-2021 | Исправлено: Mavrikii, 20:48 09-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, да я уже понял , там на span ему надо, да и запрос через  базу тоже опасно делать- хотя могу и ошибаться. Что то под вечер уже слеповат, про  span не заметил. Думал сначала просто типа h4 на h3 %))

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 20:45 09-04-2021 | Исправлено: MihailM, 20:47 09-04-2021
Kaber



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM

Цитата:
Вы что читать не умете ?!!!
 

Это ты из-за вордпресса такой агрессивный?))
По сабжу Гуру правильно подсказал про экспорт/импорт , от себя добавлю что редактировать огромные текстовые файлы удобно VSCode - он их хотя бы читает.

Всего записей: 1356 | Зарегистр. 14-03-2014 | Отправлено: 22:45 09-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, хотя наверное и мой способ тоже прокатит , если надо именно так :
Цитата:
заменить тег h4 или  h3 на span

Тупо взять и заменить h3 > span и h4 > span , если конечно внутри не будет совпадений , то думаю прокатит . Только не одним запросом а 2я.
вот пример :
 Универсальный пример

Код:
UPDATE `banner` SET `html_text` = REPLACE(html_text, 'h3', 'span' ) ;  

Ну а второй такой же только вместо h3 заменить h4.  
С учетом того , если нужно оставить и класс . Думаю так прокатит %))
Kaber

Цитата:
такой агрессивный?))  

Вы что с дубу рухнули , где тут агрессия то ?  
Я просто хотел написать , что как ни крути, а c базами придется столкнулся. Тот же дамп базы,  а база что не SQL ?!! %))
Ладно проехали ..

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 10:58 10-04-2021 | Исправлено: MihailM, 20:33 10-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM

Цитата:
REPLACE(html_text, 'h3', 'span' )  

лучше уж <h3 на <span, а затем </h3> на </span>, во избежание возможного употребления в тексте.
но нужно понять следует ли оставлять класс.

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 07:26 11-04-2021 | Исправлено: Mavrikii, 07:42 11-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
нужно понять следует ли оставлять класс.

Если нужно , тогда оставлять и класс , а ввобще то это как вариант и вообще..

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 09:29 11-04-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cорри, не отвечал на вопросы, на выходных за правило не работать вообще )  
По пунктам - класс необходимо оставить как есть, т.е. было - h3 class="my-class", стало - span class="my-class".
 
MihailM
Mavrikii

Цитата:

Код:
UPDATE `banner` SET `html_text` = REPLACE(html_text, 'h3', 'span' ) ;  

 
Ну а второй такой же только вместо h3 заменить h4.  
С учетом того , если нужно оставить и класс . Думаю так прокатит %))


Цитата:
лучше уж <h3 на <span, а затем </h3> на </span>, во избежание возможного употребления в тексте.

Прокатило бы, но не прокатит, так как в поле html_text находится не только этот текст, и может быть еще некоторое количество h3 или h4 заголовков, но с другими классами или же без классов, и с этими заголовками ничего делать не надо.
С первой частью, открывающей, вопросов нет, все заменится, а вот закрывающие теги - </h3> и </h4> - все заменятся на </span>, т.е. не только те у которых необходимый класс.  
 
Mavrikii

Цитата:
если вам проще работать с текстом - сделайте дамп, откройте SQL файл в любом текстовом редакторе, сделайте замену так, как умеете.

 
База больше 2 гб, поэтому все таки лучше найти решение через регулярку.  

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 10:18 12-04-2021 | Исправлено: Weinaum, 10:19 12-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
 а вот закрывающие теги - </h3> и </h4> - все заменятся на </span>, т.е. не только те у которых необходимый класс.  

кстати тоже об это подумал..  Если только так :

Код:
<h4 class="   на  <span class="
Вот если бы в конце было бы что то , за что зацепится можно было , пускай даже пробел или ":" , то может быть и тоже прокатило бы .

Цитата:
поэтому все таки лучше найти решение через регулярку.  

А чем мой вариант не подходит ? ,  и не надо базу "сливать" , и всё ок ..

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 10:31 12-04-2021
Weinaum



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подсказывают вот так примерно -  
https://sqlize.online/?phpses=null&sqlses=5ce1e6ee8a88a75533cc6e95843b5f48&php_version=null&sql_version=mysql57
 
чето туплю, как select на update заменить, чтобы реально в базе переписывалось?

Всего записей: 2152 | Зарегистр. 18-06-2006 | Отправлено: 17:07 12-04-2021 | Исправлено: Weinaum, 17:08 12-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum,
Цитата:
Подсказывают вот так примерно -
ок ...  
Добавлено:
Та - дам , вот найдите разницу https://sqlize.online/?phpses=null&sqlses=05f6ee3088397b9e843e40f1492713bb&php_version=null&sql_version=mysql57 .. надеюсь вы поняли о чем я %))

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 18:26 12-04-2021 | Исправлено: MihailM, 19:40 12-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Weinaum

Цитата:
База больше 2 гб

и что?)  
 

Цитата:
поэтому все таки лучше найти решение через регулярку

тут есть другая проблема. например в ситуации
<h4 class="...">текст <h4>другой текст</h4></h4>
обычная регулярка не поймет какой именно </h4> нужно заменять.
 
и вы так и не сказали какая версия MySQL у вас.
 

Цитата:
чето туплю, как select на update заменить, чтобы реально в базе переписывалось?

там все не так просто в такой записи. вам нужно формировать и оригинальную строку, чтобы ее заменять.
плюс тот код сработает только на 1 замену, а если нужно несколько?
 
ваш код с заменой будет

Код:
INSERT banner(banner_name, html_text) VALUES ('Cart page banner', '<h4 class="my-class">Cart page banner here</h4>
<h4 class="test">Any another text here</h4>');
UPDATE banner b1
JOIN
(SELECT
    id,
    @o := LOCATE('<h4 class="my-class">', html_text, 1),
    @c := LOCATE('</h4>', html_text, @o),
    CONCAT('\<span class="my-class>',
    SUBSTR(
      html_text,  
      @o + 21,
      @c - @o - 21
    ), '</span>') AS replacement,
    SUBSTR(html_text, @o, @c + 4) AS original
FROM banner) AS b2
ON b1.id = b2.id
SET b1.html_text = REPLACE(b1.html_text, b2.original, b2.replacement);
 
SELECT * FROM banner;

но вам придется его запускать несколько раз подряд, чтобы заменить все возможные h4.
поэтому и спрашиваю - какая версия MySQL у вас?

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 19:34 12-04-2021 | Исправлено: Mavrikii, 20:02 12-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii, вот решил пример состряпать https://sqlize.online/?phpses=null&sqlses=42ddd0d7b2f050a924ad6e51dc39f065&php_version=null&sql_version=mysql57 ..  
Или с классом https://sqlize.online/?phpses=null&sqlses=61ef8b1f8d2836c6f2a93f4a9b4ee278&php_version=null&sql_version=mysql57 .
 
Почему второй запрос не выполняется ?

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 19:40 12-04-2021 | Исправлено: MihailM, 19:42 12-04-2021
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihailM

Цитата:
Почему второй запрос не выполняется ?

в смысле?

Всего записей: 15112 | Зарегистр. 20-09-2014 | Отправлено: 19:45 12-04-2021
MihailM



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
в смысле?
ну вот http://prntscr.com/11as10b , первая часть заменилась а концовка нет ... Где накосячил или ..  

Всего записей: 2498 | Зарегистр. 19-10-2003 | Отправлено: 20:02 12-04-2021
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

Компьютерный форум Ru.Board » Интернет » Web-программирование » MySql/PHP: общие вопросы


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru