• Как сделать редирект на ссылку в новом окне в php?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    window.open(<?php echo $r['Id']; ?>, '_blank')

    Но лучше стремиться к тому, чтобы js и php жили порознь:
    <input type="hidden" id="url" value="<?php echo $r['Id']; ?>"/>
    window.open($('#url').value, '_blank')
    Ответ написан
    4 комментария
  • В какой момент срабатывает watch во vue 3 при множественном source?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    const trigger = ref(false) //for watch
    
    function somePiniaAction() {
       var1.value = "1"
       var2.value = "2"
       var3.value = "3"
       trigger.value = !trigger.value
    }
    Ответ написан
    4 комментария
  • Где можно показать свой код?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если это код товара, его длины не хватит в том случае, если у вас будет больше 10000 товаров.
    Это никак не связано с количеством покупателей.
    id покупателя - совершенно другое значение.
    Поэтому записывать в базу нужно id покупателя и id товара.
    А если в сессию, то можно только id товара, потому что у каждого покупателя своя сессия.
    Ответ написан
  • Как передать акцесс токен на вдругую вкладку?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Можно ограничить срок годности токена или вовсе сделать его одноразовым.
    Чтобы не передавать его в GET, создать форму и отправлять Post.
    Либо в заголовках.
    Ответ написан
    Комментировать
  • Как сделать так чтобы, при отправки ajax события в data: { art: }, выходила два input и между ними -?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Исходя из поставленной задачи:
    data: { art: $('#artnumber1').val() + ' - ' + $('#artnumber2').val() }
    Тогда на сервер придёт $_Post['art'] содержащий "artnumber1-artnumber2"

    Но, более правильно будет:
    data: { 
        art1: $('#artnumber1').val(), 
        art2: $('#artnumber2').val()
    }
    Тогда на сервер придут $_Post['art1'] и $_Post['art2'], содержащие "artnumber1" и "artnumber2" по отдельности. Соединить их в одну строку с " - " можно уже потом ближе к выводу данных.
    Чем дольше данные живут раздельно, тем лучше.
    Ответ написан
    Комментировать
  • Почему не запускается MySQLD в wamp 3.3.0?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Вероятнее всего MySQL уже запущен каким-то другим сервисом.
    Если не хотите удалять, попробуйте сменить порт.
    Ответ написан
    2 комментария
  • Как определить интервал в расписание на php?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    $minutes = ['03', '09', '13', '18', '23', '28'];
    var_dump(getRange($minutes));
    
    function getRange($minutes): array
    {
        if(count($minutes) < 5) return $minutes;
    
        $minutes = array_map(fn($m) => intval($m), $minutes);
        rsort($minutes);
        $ranges = [];
        foreach ($minutes as $k => $minute){
            if($k){
                $ranges[] = $prev - $minute;
            }
            $prev = $minute;
        }
        $min = min($ranges);
        $max = max($ranges);
        return $min === $max
            ? [$max]
            : [$min, $max];
    }
    Ответ написан
    1 комментарий
  • Как при работе с Echo проверить имеется ли подключение к сокету или нет?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Если вы хотите избавиться от избыточных срабатываний при переключении между компонентами, то их общую логику целесообразно разместить в общем для них родителе.
    CompositionApi позволит без особых усилий наладить между ними связь посредством ref(), provide() и inject().
    Ответ написан
    Комментировать
  • Как происходит работа с Git в крупных проектах?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Есть такая штука - культура разработки. Для каждой команды она своя.
    Когда команда сыграна, она может себе позволить отказаться от GitFlow в пользу Trunk-based и даже пушить в мастер.
    Поэтому, если команда ищет человека с определёнными профессиональными навыками, маловероятно, что знание внутрикомандной культуры разработки будет важным критерием.
    Однако, чем чаще коммитятся и пушатся изменения, тем лучше.
    Ответ написан
    Комментировать
  • Может ли быть вложенным Foreign Key?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Может, но это бессмысленно.
    Ваш преподаватель, я думаю, учит вас бесполезному.
    Попробуйте так:
    649603d70c033571227365.png
    Это избавит вас от потенциальных проблем с целостностью данных и позволит поручить контроль над задачей нескольким руководителям.
    Ответ написан
    Комментировать
  • Ошибка функции IMPORTRANGE новая?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Сервера(ы) гугла полагают, что в исходном листе много данных или вычислений, которые они не успели обсчитать и закэшировать.
    В целом, GOOGLE SHEETS это таблицы для демонстрации результата с небольшим добавлением логики.
    Если из них делать приложение для вычислений, то результат может не соответствовать ожиданиям.
    Ответ написан
    3 комментария
  • Как сделать счетчик chekbox, в поле methods?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    я буду считывать лишь длину списка

    В большинстве случаев, массив со значениями придётся вернуть на сервер.
    Поэтому не надо ничего из него удалять или добавлять.
    Передавать через emit ничего не нужно. Если правильно сделать, всё передаётся само.
    Родитель
    <template>
      <Test1Child></Test1Child>
    </template>
    
    <script setup>
    import Test1Child from "components/Test/Test1Child.vue";
    import {provide, ref} from "vue";
    
    const persons = ref([
      {id: 1, name: 'Василенко Пётр Владимирович', checked: true},
      {id: 2, name: 'Ерёменко Владислав Игоревич', checked: false},
      {id: 3, name: 'Антонова Елена Сергеевна', checked: true},
    ])
    provide('persons', persons)
    </script>

    Потомок
    <template>
      <div class="divRadio">
        <template v-for="person in persons" :key="person.id">
          <Test1Person :person="person"></Test1Person>
        </template>
      </div>
    <div>Отмечено:{{ countCheckedPersons }}</div>
    </template>
    
    <script setup>
    import {computed, inject} from "vue";
    import Test1Person from "components/Test/Test1Person.vue";
    
    const persons = inject('persons')
    const countCheckedPersons = computed(() => {
      return persons.value.filter(el => el.checked === true).length
    })
    </script>

    Компонент элемента
    <template>
      <div class="divus" style="margin-top: 0px;">
        <input type="checkbox"
               :id="'name' + personMutable.id"
               :value="personMutable.id"
               class="checkus"
               :checked="personMutable.checked"
               @change="personMutable.checked = !personMutable.checked"
        />
        <label :for="'name' + personMutable.id" class="labelus">{{ personMutable.name }}</label>
      </div>
    </template>
    
    <script setup>
    
    import {ref} from "vue";
    
    const props = defineProps({
      person: Object
    })
    const personMutable = ref(props.person)
    </script>

    64959a335994e094974052.png
    Ответ написан
    Комментировать
  • Скрипт для вычитания или прибавления числа в определенную ячейку из динамических ячеек, Google Sheets?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Это зависит от того каким образом будут появляться записи о прибытии/убытии.
    Если руками, то SUMIF. Когда наберется несколько тысяч операций это всё начнёт жутко тормозить.
    Если через гуглформы, то можно инициировать запуск скрипта, который будет смотреть на остаток после последней операции.
    В любом случае нужна таблица со списком всех товаров с присвоенными числовыми номерами, чтобы выборка производилась по номеру, а не наименованию.
    Ответ написан
    Комментировать
  • Как вызвать перерисовку компонента при изменении во VueX?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Как сделать так, чтобы 2 компонент отслеживал изменения, но при этом я мог с ними работать и менять данные.

    Для данного случая достаточно, чтобы оба компонента имели общего родителя и использовать синтаксис <script setup>

    Из родителя вы можете передать TaskList либо через prop либо через provide/inject и делать с ним всё что нужно, не потеряв реактивность.

    //родитель
    const TaskList = ref([])
    provide('TaskList',  TaskList)
    
    //потомок
    const TaskList = inject('TaskList')

    ЗЫ

    The official state management library for Vue has changed to Pinia.

    https://vuex.vuejs.org/
    Ответ написан
  • Как сделать интеграция группы вк с сайтом на WP?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    1. В вк создать приложение, управляющее группой.
    2. Настроить приложение так, чтобы при появлении новой записи, отправлялся запрос на ваш сервер.
    3. Написать в принимающем скрипте код, который добавит в бд новый пост.
    Ответ написан
  • Как остановить выполнение вышестоящей функции?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Остановить: return;

    Если чекеров много и вы хотите знать какой из них остановил выполнение, то это можно сделать при помощи
    конструкции match.
    function calculate($num){
        return match (false) {
            isPositive($num) => 'Значение отрицательное',
            !isFignya($num) => 'Значение фигня',
            !isOtherFignya($num) => 'Значение другая фигня',
            default => '$num - положительное число'
        };
    }

    ЗЫ
    В будущем, вероятно появятся чекеры, которые вызывают другие чекеры, тогда вам потребуется протаскивать ответы функций через всю иерархию. Это вызовет головную боль и раздражение. Тогда вы станете оборачивать родительскую функцию в блок
    try{
        //пробуем выполнить
        calculate($num);
    }catch(MyCustomException $e){
        //если не получилось, смотрим причину в $e и решаем что делать.
    }
    , а останавливать чекеры при помощи throw new MyCustomException()
    Ответ написан
    Комментировать
  • Как правильно использовать PDO если несколько php скриптов?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    1. В обычном штатном случае скрипт один, если вы сознательно не запускали каких-либо асинхронных процессов.
    Даже если в ходе выполнения подключаются другие файлы (include или require), то скрипт всё равно один.
    Когда скрипт выполнен, открытые соединения прекращаются автоматически.

    2. Я делаю примерно так:
    class DB
    class DB
    {
        public ?PDO $pdo;
        private ?array    $opt;
        public ?string $pHolders;
        public ?array  $parArr;
    
        public function __construct(
            string $connectName = '',
            string $charset = 'utf8mb4',
            bool $flat = false
        )
        {
            if($flat) return;
    
            $con = ConnectDB::byName($connectName);
    
            $dsn = "mysql:host=$con->host;dbname=$con->name;charset=$charset";
            $this->opt = [
                PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES   => FALSE
            ];
            $this->pdo = new PDO($dsn, $con->user, $con->pass, $this->opt);
        }
    
        public function qwe($sql, $args = NULL): bool|PDOStatement
        {
            if (!$args) {
                return self::query($sql);
            }
            return self::execute($sql, $args);
        }
    
        private function execute(string $sql, array $args): PDOStatement
        {
            $stmt = $this->pdo->prepare($sql);
            $stmt->execute($args);
            return $stmt;
        }
    
        private function query($sql): PDOStatement
        {
            return $this->pdo->query($sql);
        }
    }


    Объявляю функцию в файле и подключаю его с помощью autoload в composer.json
    spoiler
    function qwe(string $sql, array $args = null): bool|PDOStatement
    {
        global $DB;
    //Синглтон
        if(!isset($DB)){
            $DB = new DB();  
        }
        return $DB->qwe($sql,$args);
    }


    Вызываю:
    $qwe = qwe("Select * from users where id = :id", ['id' => $id]);
    Ответ написан
    Комментировать
  • Не добавляется строка в Бд через postman что делать?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    Гуглите:
    1. PDO
    2. Логирование ошибок MYSQL
    mayton2019 правильно говорит, что вставка в бд выполняется командой INSERT INTO
    Ответ написан
    Комментировать
  • Почему возникает PHP Notice при запросе get_the_terms?

    Lastor
    @Lastor
    В чем сила, брат? В ньютонах.
    if (empty($_POST)) {
    $post = (object) json_decode(file_get_contents('php://input'), true)['params'] ?? (object) [];
    }
    Если запрос сделан с помощью axios, то приходит в php://input
    ЗЫ: Я не в курсе как ВП валидирует запросы. Из того что я предложил придёт то, что было отправлено.
    Ответ написан