• Как исправить "Input string was not in a correct format."?

    @mvv-rus
    Настоящий админ AD и ненастоящий программист
    Полагаю, вы хотели подставить между знаками процента значение из поля ввода (txtSearch.Text), которое передается в string.Format? В таком случае надо между фигурным скобками подставить порядковый номер параметра (он начинается с 0): string.Format("%{0}%", txtSearch.Text)

    PS Из соображений безопасности (чтобы избежать SQL-инъекции) крайне не рекомендуется напрямую копировать в строку запроса сырые, непроверенные, данные из ввода пользователя - а вы сделали именно так. В учебной задаче это допустимо, но лучше сразу привыкать делать по уму: например, использовать в строке запроса параметры и передавать ввод через них.
    Ответ написан
    Комментировать
  • После регистрации пользователь в базу таблицы users не попадает..В чем проблема?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как правильно написал Антон, пора знакомиться с таким понятием, как отладка.
    Но дополним его ответ более практическими рекомендациями.

    Во-первых, при создании соединения с БД, надо сказать ПДО, чтобы он сообщал об ошибках.
    $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    Во-вторых, временно, на период разработки, включить отображение ошибок РНР. Чтобы тупо увидеть, если произошла какая-то ошибка.
    ini_set('display_errors', 1);

    И в-третьих, начать собственно отладку.
    Для начала убедившись, что РНР код в принципе запускается, и проблема в нем, а не в форме.
    Для этого в самом начале action.php пишем большими буквами
    die("пхп хотя бы запустился");
    И если после нажатия на кнопку мы этот текст не увидели, то начинаем тупить в свою форму - а с чего она вообще должна что-то посылать в файл action.php (и попутно задаваться вопросом - а какое отношение наш вопрос имеет к php и sql?)?
    Если форма отправляется аяксом, то смотрим ответ пхп в инструментах разработчика, вкладка Сеть.

    Если обработку формы мы начали, то заезжаем внутрь условия
    die("начали обработку формы");

    И так далее, отслеживаем работу своего кода, выполняется ли он вообще, и содержат ли переменные нужные значения.

    А в целом, конечно, код очень жестокий.
    Вот прямо хочется спросить -
    зачем здесь функция test_input?
    зачем здесь try {}catch (){echo 'Error : '.$e-getMessage();}?
    зачем class Auth extends Database?
    почему showMessage - это часть класса Database? Ну вот серьёзно, каким местом вывод сообщения в браузер в виде HTML хоть как-то относится к работе с базой данных?

    Чтобы сделать этот код минимально осмысленным, надо
    выкинуть класс Database
    в класс Auth добавить
    public function __construct($pdo){
                $this->conn = $pdo;
        }

    и выкинуть из него require_once 'config.php';

    В config.php оставить только соединение с PDO
    в action написать
    require 'config.php';
    $user = new Auth($pdo);

    и выкинуть условие при регистрации, оставив только
    $user->register($name,$email,$hpass);
    $_SESSION['user'] = $email;

    И тогда этот код станет минимально осмысленным
    Ответ написан
    Комментировать
  • Как исправить не правильное форматирование css который вставляет php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    У вас в голове полная каша. Вы не можете понять где у вас сервер, где HTML, а где браузер.

    некоторые файлы он вставляет с форматированием , а другие нет.


    РНР не вставляет никакие файлы. Из РНР вы получаете ссылку. Её читает браузер. Который дальше и читает файл, и "вставляет" код, и форматирует его.
    При чем то, что браузер показывает в инструментах разработчика, может не иметь вообще ничего общего с тем, что на самом деле лежит в файле. Если хотите посмотреть реальное "форматирование", то надо смотреть сам файл, а не то что браузер рисует в инспекторе
    Ответ написан
    4 комментария
  • Что учесть в начале создания веб-портала и перейти с начальной версии на продвинутую без потерь? Как выбрать разработчика, структуру и платформу?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Давай начнем с вопроса - чем твой портал будет отличаться от тех сайтов на WP который ты делал раньше сразу после запуска? Через Х лет в максимальной комплектации?

    А теперь кратко по твоим вопросам

    1) Делай ссылки в виде ЧПУ и их можно будет безболезненно реализовать на любом фреймворке. Но именно на фреймворке, если на какой-то cms со своей структурой страниц, то там могут быть проблемы и прийдеться устраивать танцы с бубнами и реврайтами.

    2) Как не смешно, но для начала подойдет Wordpress если своими силами или самопис на Laravel если есть бюджет на фрилансера. Статьи и админка под них на нем делается очень быстро и бюджетно. Ну и потом можно добавить любой функционал. За основу даже можно взять мой движок (секунда рекламы) https://github.com/yepbro/cookbook делаю для своего проекта.

    3) Отзывы, адекватность в общение, неготовность работы без тз, ежедневные отчеты о статусе работ, каждый день обновляемый демо-сервер.
    Ответ написан
    Комментировать
  • Зависит ли скорость записи в БД от количества в ней записей?

    yesbro
    @yesbro
    Думаю, помогаю думать
    1. Меняется/Зависит ли как-то скорость записи в таблицу БД от количества записей в таблице?


    При добавление записи в таблицу обновляются индексы (если они там есть), так что чем больше таблица тем медленнее будет запись (если в таблицы есть индексы кроме primery key). Это можно заметить если начать добавлять большое кол-во строк (построчно) в таблицу с индексами. Сперва добавление будет идти быстро, потом все медленнее и медленнее. Один из способов борьбы с этим - пакетное добавление.
    Ответ написан
    Комментировать
  • Изменять пропорции аватара на стороне фронта или несколько размеров на стороне бэка?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Для такого маленького изображения я бы передавал только самый большой вариант.

    Экономия с точки зрения пользователя тут будет лишь в том случае, если везде используется 40*40, и, например, только в редакторе профиля показывается 100*100. Тогда люди в 99% случаев не будут качать лишние пиксели. Но их объём настолько мал, что заморачиваться нет смысла.
    Если же разные размеры используются повсеместно, то, делая три отдельных изображения, вы увеличите объём трафика на 21%, т.е. сделаете хуже и себе, и пользователю.
    Ответ написан
    2 комментария
  • Как записать массив PHP в базу данных MySQL?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Если массив не очень большой - сделайте всё одним запросом:
    <?php
    $data = [
        ['a' => 1, 'b' => 2, 'c' => 3],
        ['a' => 1, 'b' => 2, 'c' => 3],
        ['a' => 1, 'b' => 2, 'c' => 3],
        ['a' => 1, 'b' => 2, 'c' => 3],
        ['a' => 1, 'b' => 2, 'c' => 3]
    ];
    
    $query="INSERT INTO t (a, b, c) VALUES " . implode(
        ', ', 
        array_fill(
            0,
            count($data), 
            '(' . implode (', ', array_fill(0, count($data[0]), '?')) . ')'
        )
    );
    
    echo $query;
    
    $values = array_reduce(
        $data,
        function($ac, $el) {
            return array_merge($ac, array_values($el));
        },
        []
    );
    
    var_export($values);
    
    $q=$pdo->prepare($query);
    $q->execute($values);


    Здесь вы можете протестировать код
    Ответ написан
    1 комментарий
  • Как присвоить одному сайту разный IP?

    saboteur_kiev
    @saboteur_kiev Куратор тега Компьютерные сети
    software engineer
    объединить сети.
    Ответ написан
    Комментировать
  • Как присвоить одному сайту разный IP?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    При такой постановке вопроса, очевидно, воткнуть в сервак ещё одну сетевуху, а в неё шнурок второй сети.
    Ответ написан
    Комментировать
  • Есть ли фриланс на С++ с нуля?

    На фрилансе с любого уровня можно работать, лишь бы ты закрывал потребности заказчиков за приемлимую цену и время.

    Умение анализировать рынок и управлять на фрилансе часто важнее, чем умение кодить.
    Были бы навыки - можно вообще без умения кодить
    Ответ написан
  • Почему при выборке первых трех строк, MySQL просматривает все записи таблицы?

    @Akina
    Сетевой и системный админ, SQL-программист.
    почему этот запрос просматривает так много записей?


    Таков принцип работы у этой СУБД. MySQL сначала выбирает все соответствующие условиям отбора записи, и только потом применяет к ним ограничение количества. Правда, обычно в запросе ещё присутствует и сортировка.

    Подобный подход, кстати, ответственен за то, что при одинаковом количестве отбираемых записей чем больше начальное смещение, тем больше фактическое время выполнения запроса, и на объёмных выборках даже используются специальные методы ускорения работы.

    Мне возвращается первые 3 строки.

    Хочу огорчить. Не три первые, а три случайным образом полученные. Но, поскольку в запросе отсутствуют выражения отбора и сортировки, то записи обычно выдаются в том порядке, в каком они располагаются в кластерном (первичном) индексе. Впрочем, кэширование данных и вымывание их из кэша данными конкурентных процессов могут это изменить.

    Вот, полюбопытствуйте: FIDDLE. Кстати, забавно, что без хинта оптимизатор выбирает вовсе даже не первичный индекс... Более того, в данном конкретном случае этому есть совершенно точное и строгое объяснение - попробуйте его найти.
    Ответ написан
    Комментировать
  • Как сильно будет замедлена скорость открытия сайта, если в .htaccess много правил блокировки по ip?

    @AlexVWill
    Это не задача Апач, любую задачу надо решать тем инструментом, который для этого предназначен. Для блокировки используется iptables, и надстройка ним fail2ban. Они эту работу сделают намного эффективнее.
    Ответ написан
    Комментировать
  • Может ли промежуточная таблица для связи 'многие-ко-многим' использоваться как отдельная сущность?

    hint000
    @hint000
    у админа три руки
    Во-первых, нет такого запрета.
    Во-вторых, в приведённом примере это действительно имеет смысл, поскольку у каждого поставщика цены могут меняться независимо от цен других поставщиков.
    Если не делать связь таблицы "Товар-Поставщик" с таблицей "Динамика цен", то это только усложнит структуру, а пользы не добавит. Поэтому да, есть смысл делать такую связь.

    Альтернативный вариант - это сразу сделать большую таблицу "Товар-Поставщик-Дата-Цена" и использовать её двояко: (1) для связи "Товар-Поставщик" используется ключ "Товар-Поставщик", (2) для динамики цен используется ключ "Товар-Поставщик-Дата". Ну, это, видимо, не соответствует нормальной форме, так что спорный вариант. Но считаю, что он имеет право на жизнь, в зависимости от количества данных, в зависимости от популярных запросов и т.д. Иногда полезно, а иногда не полезно.
    Ответ написан
    Комментировать
  • Как изменить запрос для того, чтобы поля (столбцы) создавались динамически?

    @alexalexes
    1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";1;"Дата рождения";1;"13.09.1986"
    1;"Электрики";"Начальник объекта";"4 группа";"Иваныч";"АА1";2;"Пропуск";2;"123-456789"

    Вот это перерабатывайте в подходящее представление в том процедурном языке, откуда выполняли запрос.
    То, что вы пытаетесь сделать - это не задача для SQL.
    Ответ написан
    2 комментария
  • Можно ли в mysql хранить 200 колонок, для 10+млн записей?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Смотрим здесь. Получаем для обычного INT 4 байта на одно число, для BIGINT 8 байт.
    200 * 4 * 10'000'000 = 8'000'000'000 или 8Gb.
    200 * 8 * 10'000'000 = 16'000'000'000 или 16Gb.
    По нынешним меркам сущие пустяки.
    Хранить, конечно же, нужно в нормальной форме, иначе суммирование придётся делать в приложении.
    Ответ написан
    3 комментария
  • Как лучше хранить много изображений для веб-приложения?

    @Drno
    в БД обычно хранится "ссылка" \ хеш на файл, а сам файл может хранится либо просто на диске в системе, либо на подключенном S3 к примеру, это уже как по деньгам \ удобству итд...
    Ответ написан
    7 комментариев
  • Как выбрать строку по определенному числу?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дружище, data quality у тебя ужасное. Такие данные не должны попадать в реляционную БД.
    Лучше их как-то подчистить и нормализовать. И потом и запрос по подчищенным данным пойдет
    быстрее и индекс можно построить.
    Ответ написан
    Комментировать
  • Как удалить программу без обращения к пользователю?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Отследить трекерами реестра и файловой системы - что создается, обычно это папка в program files, ключи реестра в HKEY_LOCAL_MACHINE и ярлыки - и удалить это все скриптом, не забыв перед этим прибить возможно запущенный процесс этой программы.

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

    xez
    @xez
    TL Junior Roo
    1. Адреса должны быть относительными всегда
    2. Место хранения следует задавать переменной
    Ответ написан
    8 комментариев
  • На сколько популярно и корректно хранить данные в столбце в виде JSON строки?

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

    Это строки в JSON формате или отдельные таблицы?

    Можно и так и так, но
    2. Если бы я хотел такую структуру получить в ответе, то geo я бы хранил просто в отдельных двух колонках в адресе. Сам адрес - в отдельной таблице. Компанию - тоже в отдельной таблице.
    А для выдачи результата - джоинил.
    А если это всё относится только к сущности пользователя (тоесть нету такого, что несколько пользователей относятся к одной организации, которую нужно дедуплицировать) - можно всё в одной таблице и хранить, но в разных колонках (и просто при выдаче результата приводить это к объектной модели)
    Либо же иметь одну json-колонку, в которой иметь произвольное количество дополнительных/опциональных полей.
    Ответ написан
    Комментировать