Ответы пользователя по тегу PHP
  • Как сделать PDO + IN?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Вот вырезка

    /* Execute a prepared statement using an array of values for an IN clause */
    $params = array(1, 21, 63, 171);
    /* Create a string for the parameter placeholders filled to the number of params */
    $place_holders = implode(',', array_fill(0, count($params), '?'));
    
    /*
        This prepares the statement with enough unnamed placeholders for every value
        in our $params array. The values of the $params array are then bound to the
        placeholders in the prepared statement when the statement is executed.
        This is not the same thing as using PDOStatement::bindParam() since this
        requires a reference to the variable. PDOStatement::execute() only binds
        by value instead.
    */
    $sth = $dbh->prepare("SELECT id, name FROM contacts WHERE id IN ($place_holders)");
    $sth->execute($params);


    То есть, по сути, тебе можно вручную вот такую шнягу сделать
    'WHERE id in (?,?,?,?,?,?,?)'
    
    и собачить типизированные параметры
    
    ->bindParam(1, $id, PDO::PARAM_INT);
    ->bindParam(2, $id, PDO::PARAM_INT);
    ...
    
    Но это за тебя сделает
    
    вот эта штука
    
    $place_holders = implode(',', array_fill(0, count($params), '?'));
    
    насколько я понял.

    тадам
    Ответ написан
    Комментировать
  • Не добавляет данные из формы в БД, как исправить?

    @heartdevil
    плыву как воздушный шарик
    Привет, несколько замечаний

    1) Попробуйте добавить вот такой код к вашему запросу, чтобы на случай ошибки увидеть ее
    if (!$res) {
        die('Неверный запрос: ' . mysql_error());
    }


    2) Включите ошибки

    error_reporting(E_ALL);
    ini_set("display_errors", 1);


    3) По mysq_query
    ВНИМАНИЕ: Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL.
    Ответ написан
    Комментировать
  • Подсчет количества элементов в категориях и подкатегориях (SQL)?

    @heartdevil
    плыву как воздушный шарик
    Привет.
    Так-с. А если вот так примерно? Запрос не тестил. Просто как идея. На вскидку...
    SELECT par.Id, COUNT(po.id) AS postCount
    FROM Categories AS par
    INNER JOIN Categories AS sub ON par.id = sub.parent_id
    INNER JOIN Posts AS po ON po.id = sub.id
    GROUP BY par.Id
    Ответ написан
    Комментировать
  • Как заставить классы реализовать один и тот же метод от родительского класса?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    А родителя абстрактным сделать тоже нельзя?

    К примеру:

    abstract class Parent
    {
        abstract public function getName()
        {
            return "Родитель";
        }
    }
    
    class Child1 extends Parent
    {
        public function getName()
        {
            return "Дочерний 1";
        }
    }
    
    class Child2 extends Parent
    {
        public function getName()
        {
            return "Дочерний 2";
        }
    }
    Ответ написан
  • Регулярные выражения для создания хештегов в PHP?

    @heartdevil
    плыву как воздушный шарик
    $Post_Text = preg_replace('/(?:^|\s)#([\S]+)/gim', "<a href=\"http://site.ru/posts&search=\\1\">#\\1</a>", $Post_Text);
    $Post_Text = preg_replace('/(?:^|\s)@([\S]+)/gim', "<a href=\"http://site.ru/\\1\">@\\1</a>", $Post_Text);
    Ответ написан
  • Как правильно использовать AJAX?

    @heartdevil
    плыву как воздушный шарик
    Смотрите в сторону таких библиотек как knockout.js, angular.js и другие. Вопрос, конечно, про аякс, но используя такие библиотеки вы принципиально будете создавать, грубо говоря, "почти правильный" фронтенд, если ознакомитесь со схожими с вашим случаем примерами.
    Ответ написан
    Комментировать
  • Как составить регулярное выражение для поиска пути?

    @heartdevil
    плыву как воздушный шарик
    Привет одной регуляркой не додумался как это можно сделать.
    Но вот такой алгоритм пришел в голову.

    Вот пример общего вида регулярки

    <\w+>\s<\w+>\s?text\s?<\/\w+>\s<\/\w+>

    1) Запускаете по тексту регулярку вида
    /(<(\w+)>\s?подставить текст сюда\s?<\/\w+>)/gim
    Он должен вернуть искомый текст с самыми вложенным тегом.
    2) Далее, берете найденный текст с тегами и подставляете в вот такое выражение
    /(<\w+>\s<raw>text</raw>\s<\/\w+>)/gim
    Эта регулярка вернет строку с тегами предпоследней вложенности.
    3)Повторяете вложение в цикле, пока не дойдете до тега body.

    Искать по строке, думаю, не проблема.

    Теговый путь будет в обратном направлении.
    Ответ написан
  • Как лучше создать форму "график работы" и таблицу в БД к ней?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    У вас же City и DAY - это справочники в бд? Это для уточнения спросил)

    А вообще сериализация должна пройти. В city будет подставлен id города, в day будет id дня Проверить ведь не сложно.
    Ответ написан
  • Как определить переменную?

    @heartdevil
    плыву как воздушный шарик
    Вы вот это где выводите?

    <?php echo $entry_child; ?>
    
    
    <?php if ($child_visible) { ?>
    
    <?php echo $text_yes; ?>
    <?php } else { ?>
    
    <?php echo $text_yes; ?>
    <?php } ?>
    
    
    <?php if (!$child_visible) { ?>
    
    <?php echo $text_no; ?>
    <?php } else { ?>
    
    <?php echo $text_no; ?>
    <?php } ?>


    Если это раньше вызывается, чем объявление переменной в контроллере, тогда может возникнуть такая ошибка.

    Вот этот код объявления переменной и хранение в data должен быть раньше, чем любой вызов.
    if (isset($this->request->post['child_visible'])) {
    $data['child_visible'] = $this->request->post['child_visible'];
    } elseif (!empty($module_info)) {
    $data['child_visible'] = $module_info['child_visible'];
    } else {
    $data['child_visible'] = "1";
    }
    Ответ написан
    Комментировать
  • Как грамотно и безопасно использовать сессии в связке с cookies?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Думаю, вы слишком заморачиваетесь. Обычно используют просто сессии (они тоже куки используют) и все.
    Если нужно что-то хранить на клиенте, то используют куки. Задайте себе вопрос, вам что-то нужно хранить на клиенте? Если нет, то просто используйте сессии.

    А по поводу отключенных куки и других вещей. Сейчас это уже стало исключением. Обращайте на это внимание, если задача или клиент того требует. В остальных случаях считайте, что и куки и, к примеру, js включены.
    Ответ написан
    1 комментарий
  • Как реализовать хранение в базе опций товаров как на ebay?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Вот тут человек тоже базу проектирует. Но у него посложнее задача стоит.

    Посмотрите как он хранит композицию товара и цены. Думаю у вас упрощенный вариант товара, типа товара и цены.

    Сорри. Ссылка не вставилась как надо.

    тут
    Ответ написан
  • Как вернуть данные в форму?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Пишите данные в сессию и не парьтесь). Если нужно грузить файлы по 100 мб, то придется грузить эти файлы. А проверки на вес по ходу придумаете, если это действительно надо.

    Можно еще как-то сериализовать ваши промежуточные данные и держать их в форме.
    Ответ написан
  • Как доабвить элемент в сложный массив?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Поиск в гугле дал вот это

    /*
     * Inserts a new key/value after the key in the array.
     *
     * @param $key
     *   The key to insert after.
     * @param $array
     *   An array to insert in to.
     * @param $new_key
     *   The key to insert.
     * @param $new_value
     *   An value to insert.
     *
     * @return
     *   The new array if the key exists, FALSE otherwise.
     *
     * @see array_insert_before()
     */
    function array_insert_after($key, array (link is external) &$array, $new_key, $new_value) {
      if (array_key_exists (link is external)($key, $array)) {
        $new = array (link is external)();
        foreach ($array as $k => $value) {
          $new[$k] = $value;
          if ($k === $key) {
            $new[$new_key] = $new_value;
          }
        }
        return $new;
      }
      return FALSE;
    }
    Ответ написан
    Комментировать
  • Как правильно сгенерировать ссылки для пунктов меню и вывести страницы?

    @heartdevil
    плыву как воздушный шарик
    Привет.

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

    @heartdevil
    плыву как воздушный шарик
    Здравствуйте.

    Вот вы прочитали значение

    $news = $_GET['id'];

    но не используете его при фильтрации данных запросом sql.

    Поэтому у вас список и вываливается.
    Ответ написан
    Комментировать
  • Как наложить текст на изображение?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Скорее всего проблема в параметре указания шрифта.

    imagettftext($img, 50, 0, 0, 0, $color, 'Arial', $text);


    Fontfile - это путь к используемому вами TrueType-шрифту.

    Нужно подгрузить шрифт - arial.ttf
    Ответ написан
  • MySQL при формировании ленты пользователя из разного рода контента, как?

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Если вы про формирование запроса, то просто объединяете все три таблицы и сортируете нисходящее по дате.

    Приведите схемы таблиц, тогда можно будет точнее что-то сказать.

    Ну а про вывод тут сложно сказать. Все зависит от того, что вы используете (CMS, framework или что-то еще). Хотя, в принципе, вывод ленты -- это то же самое, что и вывод, к примеру, новостей, или любой другой страницы вывода списка, грубо говоря.
    Ответ написан
  • Как правильно сортировать блоки?

    @heartdevil
    плыву как воздушный шарик
    А можете рассказать для чего вы так сортируете?

    Я что-то вообще не уловил что у вас дано и как это используется.

    Вы пишите

    В строку влезает один 4x4, два 2x4,


    В вашем алгоритме вы в массиве для элементов указываете ширину 2. Верно ли я понимаю, что это у вас блоки 2x4?

    Если так, то почему у вас в строку влезло 3 таких элемента, когда должно быть два по условию?

    4 блока может влезть только если блоки 1x1 же.

    Честно говоря, вообще не уловил о каких условных единицах области вы говорите и как там строки располагаются. Это типа квадрат 4 на 4 и там каждая строка это тоже квадрат 4 на 4?
    Ответ написан
  • Стоит ли использовать ооп?

    @heartdevil
    плыву как воздушный шарик
    Я советую вам как можно скорее переходить на ООП и все делать на ООП.

    Если раньше было так, что все писали функциями, а исключениями было ООП, то теперь все надо делать на ООП и только в исключительных ситуациях функции.

    А почему я вам советую, потому что в ООП не так просто разобраться. Там уйма тонкостей. Поэтому чем раньше вы начнете, тем больше опыта наберетесь, когда будете работать на серьезными проектами. Если вы не гений, то у вас не один год уйдет, на освоение в достаточной степени (зависит, конечно, от интенсивности работы).

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

    @heartdevil
    плыву как воздушный шарик
    Привет.

    Я не очень понял, чем вас не устраивает описанное вами?

    И что вы в итоге хотите?

    Если у вас шаг 500 рублей, и начинаете вы с 1000, то у вас будут именно интервалы с шагом 500. Все, что не попало в интервалы, попадет в следующие интервалы.
    Получается, вы установили шаг, а ждете, совсем другой интервал.
    Ответ написан