Задать вопрос
Ответы пользователя по тегу PHP
  • Database Singleton или Dependency Injection?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я выбираю из выпадающего списка вывод данных по-популярности, по-жанрам, по-годам, и по-странам.

    Как и написали в коментах - ORDER BY `поле_сортировки`

    Но до сортировки должны выводиться всё данные.

    можете просто не указывать метод сортировки, но тогда у вас будет все кучей, никакого внятного порядка вывода не будет. И бтв - сортировка не повлияет на вывод всех/не всех данных, для этого есть другие операторы - LIMIT, WHERE и т.д.

    Если не трудно напишите пример кода)

    не трудно, но:
    во первых это запрещено правилами ресурса(можно было и почитать условия при подаче вопроса),
    во вторых конкретно ваша реализация не будет подходить под чей либо чужой код, никто кроме вас не знает ни структуры хранения данных в вашей бд, ни кода который все это обрабатывает.
    Ответ написан
    Комментировать
  • Как сделать отправку сообщений через phpmailer()?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $body = '<h1>Hello Mail!</h1>';
            $from = 'vasia@pupkin.com';
            $to = 'kolea@bubkin.net'; 
            $name = 'Kolaenich88';
            $subject = 'Sharik, ti balbes!';
           $mailer = new PHPMailer();
    //далее по докам настраиваете подключение к почтовому серверу, и
            $mail->setFrom($from, '');
            $mail->addAddress($to, $name);
            $mail->Subject = $subject;
            $mail->Body    = $body;
            $mail->send();
    Ответ написан
    Комментировать
  • Как передать данные из форм третьей странице?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вариантов масса.
    1) Сессия - если данные можно/нужно не сохранять до 3 страницы - хранить их в сессси
    2) Хранение на клиенте - вывести их в новую форму с хидден полями на страницу 2, по субмиту отправлять на 3 страницу.
    2.1) Хранение на клиенте - хранить в кукисах, на 3 страницу попадут через куки(нечто среднее между 1 и 2 вариантом).
    3) на странице 2 происходит запись в базу, после чего на страницу 3 передаете только ключ от этого набора данных, все уже в базе, 3 страница делает с данными что угодно.
    Ответ написан
    Комментировать
  • Перезапись значений БД?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Без подробностей реализации конкретно вашей - как вы записываете, что используете и как хранится - достаточно сложно что-либо сказать. В общем случае - объект выполняет UPDATE в случае если id сущности уже есть, и делает INSERT если такового нет. Но если это связанный единичный объект может еще выполняться проверка по внешнему ключу, есть ли уже запись с таким внешним ключом.
    Ответ написан
    Комментировать
  • Не получается вывести в php как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer

    $sql_img = $db->super_query("SELECT * FROM imgtop limit 2", true);
    print_r($sql_img);
    exit;
    что показывает?

    Выводит так массив
    Array ( [0] => Array ( [id] => 1 [name] => slider_1.jpg ) [1] => Array ( [id] => 2 [name] => slider_2.jpg ) )


    sandbox.onlinephpfunctions.com/code/9f43dc6039aa53...
    результат:
    <li  style="background-image: url(/img/slider_1.jpg);" class="overlay"></li> <li  style="background-image: url(/img/slider_2.jpg);" class="overlay"></li>

    кто -то пиз... трындит, и скорее всего не интерпретатор )
    Ответ написан
  • Как вернуться на предыдущую страницу без отправки данных заново (проблема возникает при нажатии кнопки назад в браузере)?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Использовать метод get в запросах для получения данных.
    2) При отправке данных формы методом post делать редирект на страницу результата.
    Ответ написан
  • Почему сервер не видит файл .tpl?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    function __construct($url, 
    $lng, 
    $templates=array(
    'before' => 'menu/before.tpl',
    'after' => 'menu/after.tpl', 
    'listitem_out' => 'menu/out.tpl', 
    'listitem_in' => 'menu/in.tpl', 
    'listitem_on' => 'menu/on.tpl'))
    {...}

    Это вы сами настругали или кто "добрый" научил?
    Ответ написан
    Комментировать
  • Почему после загрузки из БД массив не имеет данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $body_part объявлен, как глобальная переменная в первой строке кода.
    что еще печальнее, ибо абсолютно бесполезно.
    Но как закрепить в $body_part данные, чтобы их потом можно было использовать?

    это же массив, присвойте его другой переменной
    $some_temp_horroble_namestyling_array = array();
    while ($body_part = mysqli_fetch_array($body_result, MYSQLI_BOTH)) {
           $some_temp_horroble_namestyling_array[] = $body_part;
            echo "body_part[" . $body_part['Part_ID'] . "] = " . $body_part['Name'] . ", ";
        }
    var_dump($some_temp_horroble_namestyling_array);
    Ответ написан
  • Как передать GET параметр?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    На странице авторизации переход осуществляется так: require('LK.php');

    не заметил перехода, слишком быстро моргаю?

    1) Шорттеги, не учитесь сразу плохому. Используйте полный тег.
    2) Включите отладку - скорее всего что-то работает не так как вы себе представляете по неопытности, но вы не видите этого из за выключенных сообщений об ошибках/варнингах.
    ini_set('error_reporting', E_ALL);
        ini_set('display_errors', 1);
    первыми строчками в индексе.
    3) где этот ваш индекс? все остальные особо не нужны на самом деле...
    Ответ написан
    Комментировать
  • Как отправить данные из JS в PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) смотрим консоль на ошибки
    2) смотрим нетворк на предмет что отправляет и принеимает скрипт аякса
    3) не тупим, включаем отладку на сервере,
    ini_set('error_reporting', E_ALL);  ini_set('display_errors', 1);
    и тогда еще можно заметить что
    4) по итогам пп. 3 и 4 видим, что постом отправляется $_POST['x'] а не $_POST['model'], ибо сервер нихрена не знает про model, вы ему передали пару ключ-значение.

    UPD: я сейчас скажу кое что, за что меня будут пинать местные гуру фронта: Возьми гребаный JQ и не морочь себе голову. вот буквально все там нормально сделано.
    var url = 'some.url';
    var dataset =  {"x": 5};
    $.ajax({
                    url: url,
                    dataType: "json",
                    type: "POST",
                    dataset:dataset,
                    success: (function (data) {
                        if (data == 'ok') {
                            doCoolStuff();
                            alert ('Yeeei!');
                        }
                        else {
                             alert('Booo!');
                        }
                    })
                })
    Ответ написан
  • Вывод картинок с mysql как?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для начала - учите синтаксис и PSR, который не просто так придуман.
    foreach($sql_img as $q) //здесь должна быть открывающая { 
      $img .= '<li  style="background-image: url({theme}/img/'.$sql_img['name'].');" class="overlay"></li> ';
    // тут у вас цикл закончился и вернулся к новой итерации, это равноценно закрывающей }
    // а так же нахрена вам $q если вы обращаетесь к $sql_img? и нахрена тогда вообще цикл? 
    $tpl->set('{img}', $img); // тут вы получили элемент массива $sql_img['name'] в каждой строчке. соответственно будет одна картинка.
    Ответ написан
  • Как создать ЧПУ?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Что за фреймворк укажите, а то роутинг каждый по своему роутит...
    Ответ написан
  • Какой инструмент PHP наиболее подходит для обеспечения безопасности хранения паролей в БД?

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Подходов масса, и все имеют свои недостатки и преимущества. Я обычно разбиваю на вменяемые "физические" сущности: адрес, телефон, компания, почта... в таком случае объединения в коллекции принадлежностей могут быстро сменять метод отношений от один ко многим к многие ко многим простым добавлением таблицы связей. В логике тоже будет всего 2-3 мелкие правки. Хранить все в одной таблице/сущности наиболее худший вариант.
    Ответ написан
    Комментировать
  • Как получить доступ к методу, который вызывает текущий метод?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Но хотелось бы красиво всё сделать с одной точкой входа.

    у вас слегка неверное понятие единой точки входа.
    1) Статика это плохо, тем более если это стартовый класс.
    2) Не проще организовать нормальный мвц?
    3) Как заметил Олег Муравейко - если вы пытаетесь почесать яйца пяткой - скорее всего вы выбрали не ту конечность.

    точка входа - индекс, она уже вызывает класс Апп, или бутстрап или еще какой-то стартовый класс, который уже выполняет настройку окружения и запускает Роутер, в котром и происходит магия выбора Контроллера и экшна, после чего уже все полученные в контроллере данные передаются в Вид, который рендерится и отдается клиенту. У вас же прям в стартовом классе все в кашу - и старт контроллеров, и "роутинг", и экшны запускаются. Салют салатом.
    Нужен аякс - заводите аякс контроллер и там уже экшны, которые отвечают на определенные запросы от фронта.
    Нужен Юзер - заводитен юзер контролллер и там все экшны - лист, эдд, делит, едит, шоу...
    Ответ написан
    Комментировать
  • Как проверить query string на наличие параметров в php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    isset($_GET["parametr1"]) // проверит наличие переменной, независимо от того, есть ли у нее какое-то значение
    empty($_GET["parametr1"]) // проверит отсутствие переменной, либо существование, но со значением NULL, false, 0, array() или "".
    Ответ написан
    Комментировать
  • Не работает переключение между файлами?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вы уже вроде нечто подобное спрашивали?
    И явно не очень понимаете как работает клиент-серверное пхп приложение.
    Кнопки которые вы прописали (точно так же как кнопки которые предложил вам Lander) перенаправляют браузер на страничку с адресом http://вашдомен.tld/текущий_путь_на_сайте?show=1, видимо нарушая работу роутера движка сайта.
    Далее,
    if (isset($_GET["show"]) && $_GET["show"] == 1)
    Это порверка на гет параметр, понятно, но что вы делаете дальше? если это проверка на вывод дальнейшего содержимого файла тут должно быть что-то вроде {} или : и endif;
    Проще просто сделать в основном файле инклуд по этому параметру соответствующего файла.

    PS: Если не ошибаюсь изначально задача была сделать это без перезагрузки(аяксом)?
    Ответ написан
  • Массовая рассылка писем php?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) форма отправляет тему и описание методом пост в скрипт
    2) скрипт получает тему и описание, выбирает из базы емэйлы всех прользователей в массив
    3) проходим форичем по массиву, на каждый отправляем письмо с темой и описанием
    4) обнаруживаем что все письма валятся в спам после отправки подряд 200 писем
    5) обнаруживаем что письма больше не отправляются с шареда после отправки подряд 500 писем
    6) ищем и находим себя в банлистах всех мэйлпровайдеров.
    7) танцуем, вы великолепны!

    Не надо делать каку, хотите спамить - юзайте внешние сервисы а ля мэйлчимп.
    Ответ написан
    2 комментария