Ответы пользователя по тегу PHP
  • Как преобразовать массив POST в строки?

    @generate
    ...
    foreach ($_POST['id'] as $key => $value) {
    	$id = $value;
    	$name = $_POST['name'][$key];
    	$price = $_POST['cena_no_dost'][$key];
    
    	$text .= "({$id}, '{$name}', {$price}),\r\n";
    }
    Ответ написан
    Комментировать
  • Как записать аналог из PHP в JavaScript?

    @generate
    ...
    Думаю так будет работать похожим на [] в php
    newarray[newarray.length]

    let newarray = []; //Создаем новый массив
    
    //Ваш array массив обходим в цикле
    array.forEach(element => {
    newarray[newarray.length] = element.text;
    });
    
    console.log(newarray);
    Ответ написан
    Комментировать
  • PHP и Javascript, как сделать, чтобы время совпадало?

    @generate Автор вопроса
    ...
    Нашел решение оказывается можно вместо

    new Date().getHours()
    использовать
    new Date().getUTCHours()
    Ответ написан
    Комментировать
  • Как сделать пагинацию для сайта?

    @generate
    ...
    Тут удобно расписано как сделать www.php.su/articles/?cat=examples&page=062
    Доработал его для себя

    $db = new mysqli('localhost', 'root', 'root', 'basename'); //подключение к базе
    $pageformat = '/test.php?page={pagenum}'; //Формат ссылки вместо {pagenum} будет номер страницы
    $page = $_GET['page']; //Номер страницы
    $num = 10; //Количество записей
    $sql = "FROM `test`"; //sql запрос без SELECT
    
    $result = Pagination ($db, $sql, $num, $pageformat, $page);
    
    print_r($result['pagination']); //Ссылки на страницы
    
    print_r($result['result']); //Контент в массиве
    
    function Pagination ($db, $sql, $num, $pageformat, $page){
    $result = $db->query("SELECT COUNT(*) ". $sql)->fetch_row();
    $total = intval(($result[0] - 1) / $num) + 1;
    $page = intval($page);
    if(empty($page) or $page < 0) $page = 1;
    if($page > $total) $page = $total;
    $start = $page * $num - $num;
    $getinfo = $db->query("SELECT * " .$sql. " LIMIT $start, $num");
    $info = $getinfo->fetch_all(MYSQLI_ASSOC);
    preg_match('/(?<a>.*?){pagenum}(?<b>.*?)/', $pageformat, $pg);
    if ($page != 1) $pervpage = "<a href={$pg['a']}1{$pg['b']}><<</a><a href={$pg['a']}".($page - 1)." {$pg['b']}><</a>";
    if ($page != $total) $nextpage = ' <a href='.$pg['a']. ($page + 1) .$pg['b'].'>></a><a href='.$pg['a'] .$total. $pg['b'].'>>></a>';
    if($page - 2 > 0) $page2left = ' <a href='.$pg['a']. ($page - 2).$pg['b'].'>'. ($page - 2) .'</a> ';
    if($page - 1 > 0) $page1left = '<a href='.$pg['a']. ($page - 1).$pg['b'].'>'. ($page - 1) .'</a> ';
    if($page + 2 <= $total) $page2right = '  <a href='.$pg['a']. ($page + 2).$pg['b'] .'>'. ($page + 2).'</a>';
    if($page + 1 <= $total) $page1right = '  <a href='.$pg['a']. ($page + 1).$pg['b'].'>'. ($page + 1).'</a>';
    $pagination =  $pervpage.$page2left.$page1left.'<a class="active" href="#">'.$page.'</a>'.$page1right.$page2right.$nextpage;
    $result = array('pagination' => $pagination,'result' => $info);
    return $result;
    }
    Ответ написан
    Комментировать
  • Как записать в кавычках переменную с индексом?

    @generate
    ...
    $html = <<<HTML
    
    <div class="{$object['class']}"></div>
    
    HTML;
    Ответ написан
  • Как отсортировать данные из файла?

    @generate
    ...
    $file = '1::сергей::петров 2::иван::иванов 3::катя::воронина';
    
    preg_match_all('/(?<id>\d+)::(?<name>[^::]*)::(?<surname>[^\d]*)/', $file, $match);
    
    foreach ($match['id'] as $key => $value) {
      $newarr[$value] = ['name' => $match['name'][$key], 'surname' => $match['surname'][$key]];
    }
    
    print_r($newarr);
    Ответ написан
  • Как спарсить со страницы праздники?

    @generate
    ...
    Кажется нужно указывать User-Agent
    <?php
    $html = 'http://kakoysegodnyaprazdnik.ru/';
    $ch = curl_init($html);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:85.0) Gecko/20100101 Firefox/85.0');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $html = curl_exec($ch);
    curl_close($ch);
    preg_match_all('/<span itemprop="text">(?<val>[^<]*)<\/span>/', $html, $match);
    print_r($match['val']);
    ?>

    Результат
    Array
    (
        [0] => Праздник иконы Божией Матери «Утоли моя печали»
        [1] => День рождения огнетушителя
        [2] => Всероссийский день зимних видов спорта
        [3] => День полётов на луну (мыслимых и немыслимых)
        [4] => День числа Эйлера («e» Day)
        [5] => День памяти священномученика Владимира, митрополита Киевского
        [6] => День герба Республики Татарстан
        [7] => День памяти святителя Григория Богослова
        [8] => День российского бизнес-образования
        [9] => День отказа от ненужных отношений (Dump Your Significant Jerk Day) - США
        [10] => День признательности свиной шкурке (Pork Rind Appreciation Day) - США
        [11] => День «Помашите рукой соседу» (Wave All Your Fingers At Your Neighbor Day) - США
        [12] => День отправки открыток друзьям (National Send a Card to a Friend Day) - США
        [13] => День розы (Rose Day) - Индия
        [14] => День пудинга (British Yorkshire Pudding Day) - Великобритания
        [15] => День борьбы с ВИЧ и СПИД среди афроамериканцев (National Black HIV/AIDS Awareness Day) - США
        [16] => День периодической таблицы (National Periodic Table Day) - США
        [17] => День поста и духовных практик «Шат-тила Экадаши» (Shat Tila Ekadashi) - Индия
        [18] => Воскресенье Супербоула (Super Bowl Sunday) - США
        [19] => День северных территорий (Northern Territories Day) - Япония
        [20] => День святого Мэла (Saint Mel`s Day) - Ирландия
        [21] => День балета (Ballet Day) - США
        [22] => Скаутское воскресенье (Scout Sunday) - США
        [23] => День независимости (Grenada Independence Day) - Гренада
        [24] => День фетучини «Альфредо» (National Fettuccine Alfredo Day) - США
        [25] => Именины у Григория, Моисея, Бориса, Филиппа, Александра, Виталия
        [26] => Григорьев день (Григорий Весноуказатель)
    )
    Ответ написан
  • Не могу вывести информацию из базы, как решить проблему?

    @generate
    ...
    //Вместо этого
                    $row_two = ''; 
                    foreach($conn->query($sql) as $rows) {
                        $row_two = $rows;
                    }
    // Это
    $row_two = $conn->query($sql)->fetch_assoc();

    Да и вообще query только выполняет запрос, чтобы получить содержимое нужно пользоваться фукциями fetch_assoc, fetch_array или fetch_all
    Ответ написан
  • Как через регулярные выражения узнать, есть ли слово, а потом разобрать на составляющие?

    @generate
    ...
    Есть ли слово можно узнать stristr. Я новичек в regexr, но так работает.
    $str = 'юр. пансионат солнышко 77';
    
    if (stristr($str, 'юр.')) {
    	preg_match('#юр\.\s(.*?)\s(\d+)#', $str, $match);
    	$name = $match[1]; //Название
    	$nubmer = $match[2]; //Номер
    	print_r($match);
    }
    Ответ написан
    Комментировать
  • Как структурировать данные категорий при парсинге?

    @generate
    ...
    $arr =  array(
        '/category0/subcat1/subcat2',
        '/category0/subcat1/subcat4',
        '/category0/subcat5/subcat6',
        '/category2/subcat7/subcat8',
        '/category2/subcat9/subcat10',
        '/category2/subcat11/subcat12'
    );
    
    foreach ($arr as $key => $value) {
    preg_match_all('#/category(\d+)/subcat(\d+)/subcat(\d+)#', $value, $newmatch);
    $cats[] = array('category' => $newmatch[1][0], 'subcat' => $newmatch[2][0],  'subcat_' => $newmatch[3][0]);
    unset($newmatch);
    }
    
    print_r($cats);

    Результат
    Array
    (
        [0] => Array
            (
                [category] => 0
                [subcat] => 1
                [subcat_] => 2
            )
    
        [1] => Array
            (
                [category] => 0
                [subcat] => 1
                [subcat_] => 4
            )
    
        [2] => Array
            (
                [category] => 0
                [subcat] => 5
                [subcat_] => 6
            )
    
        [3] => Array
            (
                [category] => 2
                [subcat] => 7
                [subcat_] => 8
            )
    
        [4] => Array
            (
                [category] => 2
                [subcat] => 9
                [subcat_] => 10
            )
    
        [5] => Array
            (
                [category] => 2
                [subcat] => 11
                [subcat_] => 12
            )
    
    )
    Ответ написан
    Комментировать
  • Как с помощью php изменить href у ссылки зная ее класс?

    @generate
    ...
    Я не очень хорошо знаю регулярки, но примерно так
    Но тут href должен стоять после класса
    <?php
    
    $str = "<a class=\"like\" href=\"site1=site2\" onclick=\"ga('send', 'event', 'outbound', 'click', 'google.ru/music_save/');metrika_goal('music_save');\">сохранить трек</a>";
    
    echo ChangeHref($str, 'like' ,'https://www.google.com/');
    
    function ChangeHref($str, $class, $link){
    return preg_replace('#(<a[^>]*class="[^"]*'.$class.'[^"]*"[^>]*href=")([^>])*("[^>]*>)#', "$1". $link. "$3", $str);
    }
    ?>
    Ответ написан
    Комментировать
  • Как записать в базу ссылку?

    @generate
    ...
    Нужно экранизировать специальные символы
    $text = mysqli_real_escape_string($conn, $text); //Для $conn
    $text = $mysqli->real_escape_string($text); //Для $mysqli


    https://www.php.net/manual/ru/mysqli.real-escape-s...
    Ответ написан
  • Как мне сохранить текущее время и сравнять с прошлым PHP?

    @generate
    ...
    Сравнивать секунды можно, но там ограничение какое то я раньше хотел так сравнить больше 1 часа не помню, но он не сработал. Потом я нашел этот способ работает точнее и лучше
    <?php
    $date = '2020/11/06 23:44:06'; 
    
    //К $date добавленная 24 часа, если не нужно можно убрать
    $date1 = DateTime::createFromFormat('Y/m/d H:i:s', date('Y/m/d H:i:s', strtotime($date. "+24 hours" )));  
    $date2 = DateTime::createFromFormat('Y/m/d H:i:s', date('Y/m/d H:i:s'));  //Текущее время
    
    //Текущее время больше или равно $date
    if ($date1 <= $date2) { 
      echo 'Прошло 24 часа'; 
    } else {
    	echo "Еще не прошло 24 часа";
    }
    ?>
    Ответ написан
    Комментировать
  • Как сделать, чтобы поиск учитывал, если наименование введено слитно?

    @generate
    ...
    Пользуйся SOUNDEX, он найдет если даже строка слитно
    Отвечал тут

    //Строка в таблице была Hello World
    //Название базы test 
    //name название столбца
    //Helloworld поисковая фраза
    SELECT * FROM test  WHERE SOUNDEX(name)  LIKE CONCAT('%',SUBSTRING(SOUNDEX('Helloworld'),2),'%');
    Ответ написан
  • Как сделать поиск по совпадению двух и более слов в любом месте в mysql?

    @generate
    ...
    SELECT * FROM test 
               WHERE SOUNDEX(name) 
    LIKE CONCAT('%',SUBSTRING(SOUNDEX('Картошка хорошая из армении'),2),'%');

    Источник
    Ответ написан
    Комментировать
  • Как поместить php внутри echo?

    @generate
    ...
    <?
     $cnt = $counts[$arProps[3]['VALUE']] - 1;
                 if($cnt >= 1){
    echo <<<HTML
                
        <div class=" calendar__day-more--wrap">
          <a class="calendar__day-more" href="{$arProps[3]['VALUE']}">
    
    
              "Еще " {$cnt}
    
    
    
          </a>
    </div>
                
                
    HTML;
                   }
    
    ?>


    Второй способ
    echo '
                
        <div class=" calendar__day-more--wrap">
          <a class="calendar__day-more" href="' .  $arProps[3]['VALUE'].  '">
    
    
              "Еще " '.  $cnt. '
    
    
    
          </a>
    </div>
                
                
    ';


    Просто нужно внутри echo закрывать строку и вставлять перменную
    echo 'Строка'. $переменная. 'строка';
    Ответ написан
    1 комментарий
  • Валидация формы по IP. Одна заявка с одного IP. How to do?

    @generate
    ...
    После того как человек отправил форму, делаешь чтобы его IP записывался в бд например.
    $_SERVER['REMOTE_ADDR']

    Создай базу id и ip например.
    Дальше проверяй в том же бд если человек уже отправил то сделай чтобы не отправлял во второй раз.
    $ip = $_SERVER['REMOTE_ADDR'];
    
    $sql = $db->query("SELECT * FROM ip WHERE ip = '$ip'");
    
    if(mysqli_num_rows($sql) > 0)
    {
     echo "Вы оставляли заявку"
    } else {
    echo "Форма которую нужно заполнить";
    }
    Ответ написан
    Комментировать
  • Как в PHP получить значение из базы данных в виде переменной?

    @generate
    ...
    Привет у тебя кажется DLE, для того чтобы достать доп поля в виде массивов $arr[название доп поля][значение].
    Делал себе вот это:
    //Запрос к dle пост в новость с id 1
    $result = $db->query("SELECT * FROM ` dle_post` WHERE `id` = 1");
    
    //Проводим через цикл
    while ($row = mysqli_fetch_array($result , true)) {
      $arr[] = $row;
    }
    
    $infodop = $arr[0]['xfields']; //Получаем все значения доп полей
    $infodop = explode('||', $infodop); //Разделяем тем самым делаем массив
    
    foreach ($infodop as $key => $value) {
      $filist[] = explode("|", $value);  //Еще делим
    }
    
    foreach ($filist as $key => $value) {
      $xflist[$value[0]] = $value[1];  //Тут определяем массив[название поля][значение поля]
    }


    Дальше можешь получать значение из доп поля с базы так: $xflist[названия доп поля]
    Ответ написан
    8 комментариев
  • Как получить данные из БД?

    @generate
    ...
    Проверяйте сначало print_r, без while выведет только одну
    Это попробуйте
    $sql = 'SELECT id FROM orders'; 
    $result = mysqli_query($conn, $sql);
    
    while ($row = mysqli_fetch_array($result , true)) {
    	$arr[] = $row;
    }
    
    echo("Number is " . $arr[0]);
    Ответ написан
  • Php: Как узнать, какие параметры GET запроса приходят на сервер?

    @generate
    ...
    Записывай куда нибудь GET параметры, в бд в текстовый документ
    Самый простой пример запись в txt файл.
    //Ищем все входящие GET запросы
    foreach ($_GET as $key => $value) {
    	$logs .= date("m.d.y"). '|| '. $key. '|'. $value;
    }
    //Записываем результат с новой строки
    file_put_contents('logs.txt', $logs. "\r\n", FILE_APPEND);

    В foreach можешь указать любой формат записи с ip пользователя или разделители сделать по другому.

    Результат в файле

    09.03.20|| id|32|| name|fds
    09.03.20|| key|ui
    Ответ написан
    Комментировать