Ответы пользователя по тегу PHP
  • Не редактируется БД через PHP. Что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $id = $_GET['id'];
    $_id = mysqli_real_escape_string($link, $id);
    Ок, то что мы не умеем в подготовленные выражения вместо бредового "экранирования" пол беды, и даже не страшно что операцию так то можно в 1 строку прописать, но далее
    $name = $_POST['name'];
    $age = $_POST['age'];
    $salary = $_POST['salary'];
    Ну типа, ид мы проверили, на этом наши полномочия все...

    Файл Update.php не выдает никаких ошибок после введения формы, но при этом данные не вносятся.

    Во первых - перестаньте называть файлы в разном регистре, если это не классы!!!
    Во вторых - смотрим доку по mysqli, в частности рекомендуемая процедура подключения:
    <?php
    /* Вы должны включить отчёт об ошибках для mysqli, прежде чем пытаться установить соединение */
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    $mysqli = mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
    /* Установите желаемую кодировку после установления соединения */
    mysqli_set_charset($mysqli, 'utf8mb4');
    printf("Успешно... %s\n", mysqli_get_host_info($mysqli));
    После этого уже можно что-то смотреть, например что вернул print_r ($check);...
    Ответ написан
    2 комментария
  • Почему выдает ошибку: Сайт выполнил переадресацию слишком много раз, когда ввожу header(Location: /)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) зачем require 'config.php'; в обоих файлах?
    2) судя по всему, код первого файла должен выполняться только при субмите формы, соответственно весь код должен быть обернут в проверку метода запроса, смотрите $_SERVER['REQUEST_METHOD'].
    Ответ написан
    6 комментариев
  • Как вывести значения из базы даных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Значения из бд выводятся если вывести их print_rом но в нужных местах они не отображаются. echo data['price'] к примеру не отображается, title тоже
    Это трындеж. Если выводятся через print_r, то и через ечо должны выводится.

    Судя по коду, дело в лени (ну и настройках шорт тега).
    пишите нормальный открывающий пхп тэг, или пользуйтесь шорт ечо: <?=

    PS: и да, с выборкой разберитесь, или форич резалта, или вайл и фетч_ассок...
    Ответ написан
  • Как правильно выставлять кодировку в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Искал решение, почти везде писалось одно и тоже - нужно выставить кодировку при создании базы, нужно вставить команды в конфиг mysql и тому подобное. Всё это у меня стоит, но помогло ток одно решение, а именно - выставлять кодировку при подключение к бд.
    Кодировку абсолютно правильно сказано - надо выставлять везде, так как во первых при переносе или изменении конфигурации софта все съедет на дефолтные настройки, которые везде разные. По этому и есть конфиги и настроечные переменные. Единственно кодировку соединения лучше поставить utf8mb4, так как это более современный и обратно совместимый формат.

    UTF-8, выставляю с помощью - header('Content-Type: text/html; charset=UTF-8');
    Это можно спокойно вынести в конфиг php.ini, или добавить более универсальный код, не требующий руками каждый раз заголовки править: ini_set('default_charset', 'utf-8');
    Ответ написан
    Комментировать
  • В чем проблема с нахождением елемента формы в post?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых
    require_once 'controllers/authController.php';
    require 'templates/header.php';
    здесь отсутствует закрывающий тег пхп, после которого идет хтмл. Подозреваю что там и открывающего нет (в коде вы его не привели).
    Во вторых button type="sumbit" не является инпутом, и передаваться как значение пост не будет.
    В третьих в форме указан signup.php, а выше вы приводите "файл auth". Определитесь, или там переименуйте или тут.

    Ну и первое что нужно сделать - включить вывод ошибок, или смотреть логи, а не тыкать пальцем в небо.
    ini_set('error_reporting',E_ALL);
    ini_set('display_errors', 1);
    session_start();
    ...
    Ответ написан
    3 комментария
  • Появляется новая страница с кодом php что делать?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    var forms = document.querySelectorAll(".form")
    Чет я не увидел в коде ни одного элемента с классом form... Если предполагалось выбрать формы, то все таки стоит вешать слушатель на субмит, а не на клик...

    А страница появляется по тому что превентДефаулт на форму не вешается и просто форма уходит обычным постом.
    Ответ написан
    2 комментария
  • Как повторять ajax post-запрос до определенного значения ответа или как выполнять php-функцию и возвращать промежуточные результат юзеру?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    скорее всего вам нужно что-то типа фетч прогресс, а в пхп сделать цикл c выводом данных, и заменить die на echo.
    Ответ написан
    1 комментарий
  • Как на странице дать доступ ко всем элементам из базы данных mysql?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как написать код один раз, чтоб он выводил все id на неё, в цене я просто как-то указывал, что вот тут такой-то id и он подставляет цену.
    Если вам нужны именно ВСЕ записи на одной странице - просто не указывайте условие по ид, тогда вам выдаст все что есть. Получаете список и в цикле while прогоняете ваш mysqli_fetch_assoc($product);. Другой вопрос что страница с условно 5000 наименованиями, мягко говоря не очень читабельна. Но это уже отдельный вопрос.
    Ответ написан
  • Почему я не могу получить новые значения $_GET в AJAX+PHP, кто-то может помочь?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но это не происходит,
    Все что "не происходит", "не работает", "работает не так" - термины уборщицы из туалета. Любое программное действие вызывает какой-то описываемый результат - ошибку (которую нужно привести дословно) или конкретное действие (которое тоже поддается описанию, например нужно А, но происходит Б).

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

    По мне при вводе в текстовое поле должен быть GET запрос, и формируется $sql переменный и получаются данные.
    Скорее всего все так и происходит, только данные заговнячены, запрос гоняется 2 раза просто так, а с полученными данными все равно ничего не делается...

    PS:
    запросы всегда нужно делать через подготовленные выражения,
    пхп код ВЕСЬ выносится ДО хтмл. В нужных местах в хтмл вы просто выводите заранее полученные значения.
    Ответ написан
  • Сделать option в input?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    подозреваю что вам нужно что-то типа
    <input type="submit" name="rating" value="Замечательное">
    <input type="submit" name="rating" value="Положительное">
    ...
    но проверять соответственно нужно будет текст, а не цифры.

    PS: код просто кошмар...
    Ответ написан
  • Как на php отрисовать динамическую картинку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    рассматривал реализацию через GD библиотеку, но как то сложновато и громоздко получается,
    Ничего особо сложного, просто много кода. Это нормально. Берутся готовые блоки, выстраиваются в структуру, рисуются на холсте и выводятся. Не нравится гд - возьми имажик.
    Ответ написан
    2 комментария
  • Роли и права на добавления нового материала?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В нормальных системах это делается через ACL/RBAC, но в вп не уверен что вообще есть понятие внятных ролей на группы...
    Ответ написан
  • Как посчитать разницу между датами без года в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но вот правильно срезать до формата день-месяц и посчитать тоже само не получается.
    Естественно, даты они такие... Особенно интересно все будет выглядеть в вашем варианте где-то в районе декабря, когда дата дня рождения окажется вообще меньше текущей на год, а по факту еще остается пару дней.

    Между полными датами с помощью date_diff получается все посчитать
    Что логично, единственное что не понятно - зачем считать обрезанные даты?
    Ответ написан
  • Как сгруппировать массив из базы по повторяющимся значениям?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    group by question_ и groupconcat
    Ответ написан
  • Как правильно загрузить фото на сервер?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    смотреть логи или включить вывод ошибок. На то что файл не копируется в папку может быть десяток причин, чаще всего это права на папку, путь или размер файла.
    Проверьте $file['error'], должно быть 0, остальное ошибка
    Проверьте права на папку
    Проверьте есть ли такой путь, is_dir(__DIR__.'/img') и можно ли туда писать is_writable()
    Но первым делом смотрите лог, там обычно все написано.
    Ответ написан
    Комментировать
  • Как получить все вложенные объекты JSON с помощью PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    array_walk_recursive($count, function($val,$key) {
     echo $key.' : '.$val;
    });


    PS: у вас жсон битый, в конце кавычки не хватает.
    Ответ написан
    5 комментариев
  • Почему не работает данный запрос?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    function articlesAdd(array $fields) : bool {
            $sql = "INSERT INTO articles ('titel', 'content') VALUES (:titel, :content)";
            var_dump([$fields,$sql]);exit();
            dbQuery($sql, $fields);
            return true;
        }


    Подставляете поля в место плейсхолдеров, идете в консоль мускуля/пхпмайадмин, выполняете, смотрите что получилось.
    Ответ написан
  • Откуда берутся дублирующие запросы в логах Lokki с stderr GET /index.php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Предполагаю что это стандартное поведение, физически у вас открывается index.php, как единая точка входа, а вторая запись - роут, то есть реально запрашиваемый путь.
    Ответ написан
    Комментировать
  • Почему PHP не даёт ошибки?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    учимся базовой отладке (ну и элементарной логике):
    var_dump($_FILES); exit(); //проверяем есть ли вообще файл, и что там с ним происходит
    if ($_FILES && $_FILES['filename']['error'] == UPLOAD_ERR_OK) { //где else к этому ифу???
    // по уму надо отдельно проверять $_FILES['filename']['error'], так как скорее всего лажа где-то в нем
    // вангую что размер upload_max_filesize или max_post_size слишком мал
        if (isset($_POST['authorname'] ) && isset($_POST['songname'])) { //здесь больше подходит !empty, 
    //и надо бы как-то проверить подходят ли поля под стандарты, длина, символы левые...
    // дальше в принципе нет смысла пояснять, так как первый if скорее всего тупо не работает
            $file_type = $_FILES['filename']['type'];
            $maxsize = 10485760;
            if ($_FILES['filename']['size'] >= $maxsize) {
                $log = "Max file size is 10mb";
            } else {
                $hash = "";
                $string = $_FILES['filename']['name']; // song_name.mp3
                $songname = str_replace('.mp3', '', $string); //song_name
                $song_name = str_replace('_', ' ', $songname); // song name
                $name = str_replace(' ', '%20', $string); // song%20name
                move_uploaded_file($_FILES['filename']['tmp_name'], "song/$songname.mp3");
                $size = round($_FILES['filename']['size'] / 1024 / 1024, 2);
                $song = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']."song/";
                $cur = str_replace('upload.php', '', $song) . $name;
                $query = $db->prepare("INSERT INTO songs (name, authorID, authorName, size, download, hash)
                VALUES (:name, '9', :author, :size, :download, :hash)");
                $query->execute([':name' => $song_name, ':download' => $cur, ':author' => "", ':size' => $size, ':hash' => $hash]);
                $log = "Success! ID: <b>". $db->lastInsertId() ."</b>";
            }
        } else {
            $log = "Provide a song name and an author name.";
        }    
    }
    Ответ написан
    9 комментариев
  • При нажатии на кнопку нужно сделать переход на другую страницу на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    да занефиг:
    <?php 
    echo '<a href="/gobuhati" class="button beer-button-blue">Пивка?</a>';
    ?>
    Ответ написан
    Комментировать