• Альтернативная каша без вариантов?

    gscraft
    @gscraft
    Мега Синяк, если хотите сделать красиво, то пример с $x == 1 ? 1 : 2 красивым не будет никак, это, скажем так, не самое этичное применение данного оператора. Самое верное, что можно сделать, применить единственное условие:
    <?php
    if ($x == 1) $x = 2;

    Ничего чище не сделать. А пытаться сократить это или опасаться избытка подобных условий, во-первых, неверный путь и до добра такая щепетильность не доведет, во-вторых, в некоторых случаях, повод копать совсем в другую сторону, менять что-то в подходах, если таких режущих глаз вещей в коде слишком много. В данном случае в принципе сложно угадать смысл подмены кода заголовка. Может стоит задуматься, а нужно ли это и не такое же ли это копошение в деталях?
  • Альтернативная каша без вариантов?

    gscraft
    @gscraft
    Мега Синяк, данное решение бессмысленно. Достаточно function code($code = 404) { }. Если возникает необходимость изменить значение по условию, так и делайте, выше верно ответили, обычный if: if (empty($code)) $code = ...;
  • Почему этот код ничего не выводит?

    gscraft
    @gscraft
    Александр Лях, для начала, приведите в порядок код. В том, что у Вас, сложно разобраться, сложно отлаживать.

    • PHP-сценарий должен быть отдельно, в отдельном файле, он должен выводить форму через require 'path-to/form.php'
    • HTML-код, соответственно, отдельно, его включаете после проверки $_POST;
    • Управляющий JavaScript поместите в самом низу HTML, после кода, отдельно, перед закрывающим тегом /body, а еще лучше, выведите в отдельный файл: script src="path-to/form.js"
    • Код всегда должен быть хорошо форматирован, опрятен

    У Вас HTML, который вписывается в блоки через innerHTML = '...', дублируется, а при нажатии checkbox скрипт перезаписывает сам себя. Попробуйте, например, так:
    ...
       <style>
        .form-variant:not(.active) { display: none; }
      </style>
      </head>
    ...
      <div id="content">
        <form id="registration-form" class="form-variant"> ... </form>
        <form id="login-form" class="form-variant active"> ... </form>
        <!-- здесь код checkbox, кнопку отправки можно так же вынести за форму -->
      </div>
    <script>
    $( function () {
        // функция для переключения
        function toggleForm() {
            if ( $('#fluency').checked ) $('.form-variant').toggleClass('active'); // чисто для примера
        } 
        $('#fluency').on('change', toggleForm); // подпишемся на переключение
        $('#form-submit').on('click', function () { $('form-variant.active').submit(); }); // отправим активную форму
    } );
    </script>

    — 2 формы в коде, не надо перезаписывать HTML, просто скрывайте одну — показывайте другую.

    В общем случае, разделяйте код, избегайте передачи кода в строках, чем лучше структурируете, тем лучше будет понятно, где и что не срабатывает. Огромная ошибка в том, что скрипт срабатывает после вывода HTML.

    Что до ошибки, у вас точно приходит $_POST['fluency'] ? Если говорите, что массив меняется — условие должно сработать.
  • Почему этот код ничего не выводит?

    gscraft
    @gscraft
    Александр Лях, в отсутствие инструментария, самое простое, можете сделать так, чтобы посмотреть на поступившие данные:
    if (sizeof($_POST)) {
       echo '<pre>';
       var_dump($_POST);
       echo '</pre>';
       die; // сразу выйти
    }

    — вместо вывода формы, в начале скрипта, или для вывода в консоль браузера:
    echo '<script>console.log(', json_encode($_POST), ');</script>';

    Но эти "костыли" — плохой тон, и их нужно не забыть удалить из скрипта перед релизом. Ну и штурмуйте язык дальше, есть более профессиональные решения.
  • Почему этот код ничего не выводит?

    gscraft
    @gscraft
    Александр Лях, конкретно это из-за особенностей работы checkbox / radio элементов, их нужно дублировать невидимым input type="hidden" с тем же именем, но с ложным значением (состояние "не нажато", "не выбрано"):
    <input type="hidden" name="fluency" value="No" />
    <input type="checkbox" name="fluency" value="Yes" id="fluency" />


    Настоятельно рекомендую навести порядок в коде. Догадываюсь, что это не Ваш профиль, но все же. Начните с того, что, например (все названия являются вымышленными, приведены только для примера):
    view.php — здесь будет только HTML с формой, у которой form action="form.php", с корректной ссылкой на скрипт
    form.php — здесь будет
    <?php 
       require "db.php";
       // код формы, после которого:
       require "view.php";


    Ниже в ответах верно отмечают, у вас форма выводится прежде чем отрабатывает сценарий. То есть, передали данные или не передали, у Вас сначала в браузер будет отправлен HTML формы.
  • Почему этот код ничего не выводит?

    gscraft
    @gscraft
    Код в принципе странный, стоит вынести логику в отдельный от формы файл, вместо button name="do_signup" сделайте input type="hidden" name="do_signup" value="1" (а еще лучше сюда какой-то хэш для проверки CSRF) , ну а ошибка видимо в том, что у кнопки нет типа button type="submit"
  • Стоит ли новичку в Python использовать сразу PyCharm?

    gscraft
    @gscraft
    Изучение языка и среды зависит от изучающего, IDE этому не мешает и не способствует никак. А для кругозора стоит пробовать, осваивать разные окружения, что поможет и изучению, и консерватизм не будет развиваться. Навыки программиста слабо связаны с его способностью из консоли собрать проект или вручную написать файл сборки. Хотя любопытный или искренне интересующийся технологией, с которой работает, все равно будет разбираться с этим, ну или необходимость такая возникнет.

    Впрочем, сегодня мало альтернатив продукции JetBrains и Microsoft на поприще комбайнов. VS Code настолько хорош, насколько это возможно. Выиграет у PyCharm Community (если речь про обучение) и тем, что поддерживает море технологий, например, Python можно использовать в паре с React / JSX или Angular / TypeScript, да и с чем угодно еще. В этом плане текстовые редакторы как VS Code, Atom, Sublime далеко впереди IDE.
  • Есть ли достойный аудиокурс английского?

    gscraft
    @gscraft
    Учитывая, что уже и Википедия озвучивает Дракунина как автора псевдонаучных работ, его метод видится сомнительным.
  • Как обработать XML в качестве шаблона?

    gscraft
    @gscraft
    Kovalsky, уверен, верный путь это визуализация структуры данных из контроллера, тут не должно возникать ограничений на вложенность. Не видя Ваших вариантов сложно сказать, как тут можно / нельзя воспользоваться @angular/forms , но может быть есть смысл создать собственный обработчик форм, например, использовать отдельные FormControl в динамически создаваемых элементах или не использовать их вовсе, обойдясь привязкой к полям структуры как в примере выше ngModel="element.value".
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    gscraft
    @gscraft
    210mev, непрямой доступ бывает: уберите обработчик формы из публичной директории. Ответ от FanatPHP попросту неверный и вызывающий.

    FanatPHP, поправьте ответ. "пхп скрипт, такой же как все остальные" — некорректное утверждение, скрипт может иметь разные права доступа на уровне файловой системы, скрипт может находиться вне публичной директории, и даже вне FTP доступа и так далее. Ваш ответ просто грубость.
  • Как устранить ошибку "TooManyRedirects: Exceeded 30 redirects" при выполнении скрипта Python?

    gscraft
    @gscraft
    Андрей, вряд ли это решение Вашей проблемы, нужно смотреть на API Вашего Huawei E5186, что он возвращает, какие адреса доступны и так далее. Убедитесь, что /api/net/net-mode доступен и принимает именно эти параметры, убедитесь, что авторизация происходит верно.
  • Как устранить ошибку "TooManyRedirects: Exceeded 30 redirects" при выполнении скрипта Python?

    gscraft
    @gscraft
    Андрей, у Вас явно в коде ошибки указывается условие,
    history = [resp for resp in gen] if allow_redirects else []

    Смотрите API, где нужно добавить allow_redirects = False (в session.post(allow_redirects=False) или при инициализации = requests.Session(allow_redirects=False))
  • Как передать большой файл через интернет между двумя скриптами на Python?

    gscraft
    @gscraft
    Смотря какая цель передачи. Если нужно систематически передавать файлы с различными нагрузками и защитить это от внешнего вмешательства, можно рассмотреть полноценные FTP/SSH. Если нужно передать конечный объем данных, то сокет из комплекта стандартной библиотеки подойдёт
  • Как взять первых пять чисел из массива и вывести пять записей соответствующих id?

    gscraft
    @gscraft
    FanatPHP, комментарий "запросит только 1 запись", пояснение - "нет, IN выдаст 5 записей". Я не обратил внимания на ник, подумал, автор вопроса уточняет, и дал понять, что конкретное решение, а не псевдокод, возможно, если указать движок, с которым автор работает. Ни один вариант до этого в полном объеме работать не будет и менять что либо объективного нет смысла. Показан примерный вариант решения и не более. Грубостью Вы точно ничего не решите, а дополнить ответ мне не сложно. Больше времени ушло, чтобы добиться от Вас деликатности и такта.
  • Как взять первых пять чисел из массива и вывести пять записей соответствующих id?

    gscraft
    @gscraft
    FanatPHP, в ответе указано, что использование привязки значений - отдельный вопрос, и даны ссылки на пример документации исходя из предположения без Ваших уточнений в вопросе. А вести себя фамильярно и требовать тоже не стоит.
  • Как взять первых пять чисел из массива и вывести пять записей соответствующих id?

    gscraft
    @gscraft
    FanatPHP, в ответе правильный код, в комментарии дополнение, не относящееся к существу вопроса. Во-первых, Вы не указали, каким движком для работы с базой данных Вы пользуетесь (PDO, mysqli, какая-то ActiveRecord / ORM прослойка или конструктор запросов, и т.д.?). Во-вторых, в комментарии был добавлен условный псевдокод возможного использования с чем-то похожим на PDO. А суть ответа: 1) разбить строку, 2) взять первые 5 элементов и 3) добавить их в условие IN в соответствии с используемым движком.
  • Как взять первых пять чисел из массива и вывести пять записей соответствующих id?

    gscraft
    @gscraft
    FanatPHP,
    SELECT * FROM `your_table_name` WHERE `id` IN (1,2,3,4,5);

    — запросит записи с идентификаторами 1, 2, 3, 4 и 5. Убедитесь, что подстановка в запрос осуществлена верно. ? может быть экранирован как строка, как вариант можно подставить числа по отдельности (зависит от обертки над базой данных и выходит за рамки вопроса), например:
    $numbers = array_slice(explode('|', trim($q, '|')), 0, 5); // == [1, 2, 3, 4, 5]
    $params = implode(',', array_fill(0, 5, '?')); // == '?,?,?,?,?'
    $sql = " ... WHERE id IN ($params)"; // ваш запрос, с параметрами
    // далее, псевдокод
    foreach ($numbers as $index => $number) $yourEngine->bindParam($index + 1, $number);
  • Как изменить вид ссылки через htaccess?

    gscraft
    @gscraft
    Asjacker, добавьте ключ QSA и данные текущего запроса будут добавлены после перезаписи. Вот здесь:
    RewriteRule ^([a-z]+)\.gif$ file.php?user=$1 [QSA, L]

    (ключ L так же остановит применение правил)