Задать вопрос
  • Как передать данные с формы с помощью ajax php скрипту в wordpress?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Ajax на морде сайта работает так, как собрать данные с формы, и отправить их почтой думаю сообразите, оно ничем не отличается от обычной отправки

    PHP подключение скрипта с запуском AJAX и обработчик
    <?php
    #Подключение JS
        function my_enqueue_js() {
            #Скрипт с обработчиком код скрипта ниже
            wp_enqueue_script( 'my-ajax', get_template_directory_uri() . '/assets/js/my-ajax.js', array('jquery'), '1.0.0', true );
            #Отпрака переменных в скрипт
            wp_localize_script( 'my-ajax', 'MyAjax', array(
                'ajax_url' => admin_url( 'admin-ajax.php' ),
                'security' => wp_create_nonce( 'my-security-string' )
            ));
        }
    
        add_action( 'wp_enqueue_scripts', 'my_enqueue_js' );
    
        #Обработчик
        function my_action_callback() {
            check_ajax_referer( 'my-security-string', 'security' );
            $int = intval( $_POST['int'] );
            $int += 10;
            echo $int;
            wp_die();
        }
    
        #Добавление обработчика
        #  вешается на wp_ajax_{имя_экшена}
        # имя экшена должно совпадать с тем, которое задано  в js
        add_action( 'wp_ajax_my_action', 'my_action_callback' );
        #не забываем про nopriv для неавторизованных юзерей
        add_action( 'wp_ajax_nopriv_my_action', 'my_action_callback' );


    Скрипт my-ajax.js в данном примере должен лежать по адресу
    КОРЕНЬ_ТЕМЫ/assets/js/my-ajax.js
    jQuery(document).ready(function($) {
    
      var $data = {
        action: 'my_action',
        security : MyAjax.security,
        int: 1234
      };
    
      $.post(MyAjax.ajax_url, $data, function($response) {
        alert('1234 + 10  =  ' + $response);
      });
      
    });
    Ответ написан
    2 комментария
  • Не вносятся данные в MySQL. Что делать?

    slo_nik
    @slo_nik
    Доброе утро.
    Чтобы отловить ошибку - смотрите логи в /var/log. В этой директории найдёте логи apache2 и mysql(и не только)

    p.s. Обновляю ответ, для таких же новичков как я и автор вопроса Nokira Nokawa
    Всё равно эта тема возникает на toster.ru часто.
    Для того, чтобы установить связку apache2 + php + mysql, не важно какой версии - используйте tasksel
    Для этого в терминале набираете:
    sudo apt-get install tasksel
    Если возникнет ошибка при установке, проблема с зависимостями, в терминале следующая команда:
    sudo apt-get install -f
    После завершения установки запускаем tasksel
    sudo tasksel
    В появившемся окне, перемещаясь при помощи клавиш курсора(стрелочки вверх/вниз) выбираем "lamp server", нажимаем пробел, потом клавишу tab и подтверждаем нажав OK.

    В процессе установки автоматически настраивается mysql.
    После установки и настройки возможно надо установить phpadmin
    Для этого в терминале выполняем команду:
    sudo apt-get install phpmyadmin
    Всё, lamp установлен.
    После этого можно переходить к настройкам самого apache2, php и mysql.
    Ответ написан
  • Как закрасить пересечение кругов?

    space2pacman
    @space2pacman Куратор тега CSS
    Просто царь.
    https://jsfiddle.net/space2pacman/806Lqys1/2/ закрашенный бордер
    https://jsfiddle.net/space2pacman/806Lqys1/3/ закрашенная область
    Данил Сысоев нет ничего не возможного ))
    Ответ написан
    7 комментариев
  • Почему не работает прокрутка страницы в мобильных устройствах?

    iamd503
    @iamd503 Куратор тега CSS
    Верстальщик
    Видимо проблема в плагине отвечающий за скролл.
    P.S. Сайт ужасно тормозит, куча плагинов навешано. Жесть)
    Ответ написан
    Комментировать
  • Как сделать постоянную подсказку?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Плейсхолдер будет пропадать точно, в этом его суть. Поэтому надо не его использовать а имитацию. Как сказал Руслан label например или просто span.
    Ответ написан
    Комментировать
  • Как правильно использвать базы данных на странице php?

    index0h
    @index0h
    PHP, Golang. https://github.com/index0h
    в каком месте нужно закрывать соединение с БД?

    Перед завершением процесса. Хотя оно и так закроется.

    В каждом методе?

    Нет, постоянные реконнекты будут дорого стоить.

    --- Немножко Code Review ---

    // Не давайте общие имена конкретным реализациям
    // Почитайте, проникнитесь и используйте PSR-2 и PSR-4
    class DataBase
    {
        private $mysqli;
        private $dbConfig;
    
        public function __construct()
        {
    // Класс по работе с БД не должен знать даже о существовании неких файлов, где-то там. Это не его забота.
    // Передавайте в конструктор готовое подключение к БД, если нужно.
            $this->dbConfig = require "db/database_config.php";
    // Вот никак понять не могу, за что так любят этот mysqli, ну что в нем прям такого раз такого, по сравнению с PDO?
            $this->mysqli = mysqli_connect($this->dbConfig['host'], $this->dbConfig['username'], $this->dbConfig['password'], $this->dbConfig['db_name']);
    // Почему вдруг класс по работе с БД занимается операцией вывода?
    // Если что-то не так - бросайте исключение, ни каких echo, die, exit, trigger_error
            if (mysqli_connect_errno($this->mysqli)) {
                echo "Не удалось подключиться к MySQL: " . mysqli_connect_error();
            }
        }
    // Вы не проверяете аргументы, это плохо, очень.
    // Что бы нагнуть ваш проект достаточно передать в любой из аргументов: '1; DROP TABLE employees;'
      public function getEmployees($where='1',$start, $perPage){
    // ЗАБУДЬТЕ про подстановку данных через конкатенацию, используйте плейсхолдеры
    // http://php.net/manual/ru/pdo.prepared-statements.php
            $sql="SELECT e.name,e.birthday,d.title_dep,p.title_pos,t.title_type,e.salary FROM `employees` AS e INNER JOIN departments AS d ON e.id_dep=d.id
    INNER JOIN positions AS p ON e.id_pos=p.id
    INNER JOIN payment_types AS t ON e.id_type=t.id  where $where LIMIT $start,$perPage";
    
    // Вам ни переменная $res, ни $row не нужны
            $res = $this->mysqli->query($sql);
            $row=$res->fetch_all(MYSQLI_ASSOC);
            return $row;
        }
    }
    Ответ написан
    2 комментария
  • Кто знает хороший учебник по php?

    pOmelchenko
    @pOmelchenko
    php-developer
    PHP. Объекты, шаблоны и методики программирования. (с) Мэт Зандстра

    Но не понятны вводные данные по уровню знаний для вхождения
    Ответ написан
  • PDO ошибка, как исправить?

    @holymotion
    По ошибке понятно, что в res у вас булева переменная, значит результат вызова метода query вернул false. Проверьте подключение к бд.

    php.net/manual/en/pdo.construct.php
    php.net/manual/en/pdo.query.php
    Ответ написан
    6 комментариев
  • Как лучше реализовать БД?

    maaGames
    @maaGames
    Погроммирую программы
    ФИО в три отдельные таблицы - имена и отчества часто повторяются. Фамилии просто для единого стиля.
    Дату безусловно в отдельную таблицу. 35млн / (365*100). На 100 лет по 1000 человек в день рождалось. На самом деле распределение не равномерное и выигрыш по скорости/памяти будет больше.
    Место рождения и место проживания скорее всего не две таблицы, а гораздо больше (есть смысл отдельно хранить города, улицы, дома).
    Ну и таблица с ID индивида, содержащая индексы всех его ФИО и прочего. Эту таблицу можно проиндексирвоать по всем столбцам для быстрого поиска.
    Простенькая реляционная база данных получается.
    Ответ написан
    4 комментария
  • Как сделать такие отзывы?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Берем скрипт слайдера и делаем. Готовых полно в сети:
    https://yandex.ru/search/?text=ойгукн%20слайдер%20...
    А css уже будет зависеть от выбора слайдера

    Популярные:
    owlgraphic.com/owlcarousel
    kenwheeler.github.io/slick
    fotorama.io
    Ответ написан
    Комментировать
  • Какой IDE/редактор кода выбрать для Mac?

    @deliro
    PhpStorm / WebStorm.

    Всё, что ты перечислил - не IDE, а редакторы.
    Ответ написан
  • Какой css фреймворк выбрать, если ты программист?

    @JihadTV
    Bootstrap по дефолту, вероятность того, что пригодится в будущем существенно выше, чем у других.
    Хотя лично мне визуально больше всех понравились materialize и semanticui.
    Ответ написан
    Комментировать
  • Почему не могу вывести function в function, php?

    27cm
    @27cm
    TODO: Написать статус
    Раз это метод класса, то и вызывайте его как метод класса $this->redactpost($id);
    Разберитесь с основами: php.net/oop
    Ответ написан
    Комментировать
  • Как сделать вывод новостей через TPL?

    @k2lhu
    Все правильно, используйте цикл для вывода записей к примеру for:
    {% for user in users %}
    {{ user.username|e }}
    {% endfor %}


    Просто так вам новости все сразу не выведутся, это же общание к массиву идут, еще есть смысл проверить массив, распечатайте его var_dump() либо print_r():
    var_dump($a);
    Посмотрите что в него попадает.
    А то как вы хотите распечатать выведет только одну запись :)

    Еще хотел бы добавить - используйте PDO или mysqli для работы с БД. Забудьте про mysql в срочном порядке.
    Ответ написан
    4 комментария
  • Gzip или deflate и apache+nginx как быть?

    @CapitanFreeloader Автор вопроса
    Вывод как быть, мб кому пригодится (спасибо Руслан за его вклад):
    для wp:
    1. В .htaccess в начало вставляем код
      # кеширование в браузере на стороне пользователя
      <IfModule mod_expires.c>
      #Включаем поддержку директивы Expires
       ExpiresActive On
      # Задаем время для хранения файлов (картинок) в кэше для каждого типа 
       ExpiresDefault "access 7 days"
       ExpiresByType application/javascript "access plus 1 year"
       ExpiresByType text/javascript "access plus 1 year"
       ExpiresByType text/css "access plus 1 year"
       ExpiresByType text/html "access plus 7 day"
       ExpiresByType text/x-javascript "access 1 year"
       ExpiresByType image/gif "access plus 1 year"
       ExpiresByType image/jpeg "access plus 1 year"
       ExpiresByType image/png "access plus 1 year"
       ExpiresByType image/jpg "access plus 1 year"
       ExpiresByType image/x-icon "access 1 year"
       ExpiresByType application/x-shockwave-flash "access 1 year"
      </IfModule>
      
      # Cache-Control
      <ifModule mod_headers.c>
      
      # Задаем 30 дней для данного типа файла
      <filesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|swf)$">
      Header set Cache-Control "max-age=2592000, public"
      </filesMatch>
      
      # Задаем 30 дней для данного типа файла
      <filesMatch "\.(css|js)$">
      Header set Cache-Control "max-age=2592000, public"
      </filesMatch>
      
      # Задаем 2 дня для данного типа файла
      <filesMatch "\.(xml|txt)$">
      Header set Cache-Control "max-age=172800, public, must-revalidate"
      </filesMatch>
      
      # Задаем 1 день для данного типа файла
      <filesMatch "\.(html|htm|php)$">
      Header set Cache-Control "max-age=172800, private, must-revalidate"
      </filesMatch>
      </ifModule>
      
      # использование кеша браузеров
      FileETag MTime Size
      <ifmodule mod_expires.c>
      <filesmatch ".(jpg|jpeg|gif|png|ico|css|js)$">
      ExpiresActive on
      ExpiresDefault "access plus 1 year"
      </filesmatch>
      </ifmodule>
      
      #Запрет отдачи HTTP-заголовков Vary браузерам семейства MSIE
      <IfModule mod_setenvif.c>
      BrowserMatch "MSIE" force-no-vary
      BrowserMatch "Mozilla/4.[0-9]{2}" force-no-vary
      </IfModule>

    2. Далее устанавливаем плагин wp rocket (мб пригодится про версия бесплатно)


    Для изображений использую wp smush (про версию можно найти на сайте в wp rocket вбив в поиске)

    Мои настройки wp rocket: включаем varnish, ставим галочки для всех файлов (пункт оптимизация файлов и даже js+css).
    Ответ написан
    Комментировать
  • Бывает ли сервер с GUI?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    А мне надо просто на компьютер с ubuntu поставить локально и работать..

    Как вы вообще поставили линукс, а точнее хоть что-то там используете и работаете?
    Линукс это одна большая консоль.

    Хотите автоматизации ставьте что-то вроде ISP как уже писали.
    VestaCP или другие бесплатные варианты.

    GUI в виндовском понимании там все равно не будет.
    Ответ написан
    7 комментариев
  • Как убрать ошибку в 2 циклах?

    qonand
    @qonand
    Software Engineer
    foreach ($while1 as $arrayStep1) {
        echo $arrayStep1['amount'] , '<br>';
    }
    Ответ написан
    Комментировать
  • Как тестировать верстку?

    @soledar10
    html css3 js jquery
    1. Pixel perfect
    2. Валидность кода
    3. PageSpeed Insights
    4. GTmetrix
    5. Pingdom Website Speed Test
    6. Проверка адаптивности
    7. Проверка для Retina (srcset, svg, иконочные шрифты)
    Ответ написан
    3 комментария