«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Клуб изучающих PHP 89 Аноним 2017/05/11 16:37:41  №988868 1
Добро пожаловать в наш уютный тред. Тут мы изучаем язык PHP (а также JS/CSS/HTML/SQL), решаем задачки и даже делаем простые сайты! Зачем? Кто-то хочет научиться программировать, кто-то - делать сайты, кто-то - просто размять мозги и заняться чем-то полезным.

Пожалуйста, пишите один большой пост вместо нескольких маленьких и не флудите не по теме. ОПу ведь все это читать придется.

Это тред для начинающих. Не написал за свою жизнь ни одной программы и имеешь тройку по математике? Ты наш человек.

Устанавливать пока что ничего не требуется, разве что редактор кода вроде Sublime Text 3, Notepad++, Visual Studio Code, Netbeans PHP или PhpStorm (с ним будет удобнее).

Предыдущий тред был тут: >>966608 (OP) ( http://arhivach.org/thread/254710/ )

Еще предыдущие треды ищутся в гугле по словам "клуб php" или в архиваче. Еще есть такой архив тредов: http://phpclub.rf.gd/

Мейлач лежит? Есть запасной тред: доброчан-орг/s/res/23225.xhtml#i46467

Что самое главное для программиста? Умение аккуратно оформлять код (читай второй пост, прежде чем писать код).

Правила: ведем себя воспитанно, помогаем новичкам, постим ссылки на решения задачек, ОП их проверяет и дает советы и замечания. ОП заходит редко, где-то раз в 2-3 дня, у него мало времени, не жди его, решай задачки дальше. ОП отвечает на все вопросы по его задачкам и учебнику, а вот насчет каких-то других вещей - только если останется время. Но в треде немало анонимных экспертов разного уровня, так что вряд ли вопрос останется без ответа.

У нас есть уроки по основам PHP, они собраны и выложены по адресу http://archive-ipq-co.narod.ru/ Это учебник для изучающих с нуля, то есть если ты вообще ничего не знаешь, то надо начать с него. Он простой и понятный (по крайней мере в начале). Там есть задачи, их надо решать обязательно (чтобы стать программистом, надо писать код — иначе никак). Пости ссылки на решения в тред, мы их проверим, напишем замечания и дадим советы по улучшению.

Если не знаешь как решать, запости код, напиши в каком месте остановился и попроси подсказку.

Ты прошел весь учебник? Молодец, но это были лишь основы языка PHP, этого недостаточно. Вот что в идеале надо изучить еще: ООП, как работает веб-сервер, HTML/CSS, SQL, PDO, работа с таблицами в БД, работа с формами, MVC, git, composer, JS, фреймворки, автоматизированное тестирование.

Надо переходить к более серьезным задачкам, которые научат тебя всему этому.

- для начала прочти урок https://github.com/codedokode/pasta/blob/master/soft/web-server.md
- установи Апач + PHP (советы выше и ниже) и читай туториал http://php.net/manual/ru/tutorial.php
- Учи HTML/CSS и SQL, PDO, хотя бы основы
- Далее простая, но полезная задача сделать список студентов, в ней много полезных советов: https://github.com/codedokode/pasta/blob/master/student-list.md
- Более сложная задача сделать файлообменник на микрофреймворке Slim: https://gist.github.com/codedokode/9424217
- Еще более сложная и долгая задача на Yii/Symfony: https://gist.github.com/codedokode/8733007
- После нее можно изучать автоматизированное тестирование https://gist.github.com/codedokode/a455bde7d0748c0a351a
- Если ты все решил, переходи к Symfony 2/Doctrine 2
- Почитать про паттерны http://designpatternsphp.readthedocs.org/ru/latest/README.html (если ты не изучил ни одного фреймворка, то это будет рановато), тут с примерами кода http://designpatternsphp.readthedocs.org/ru/latest/README.html . Имей в виду что без примеров использования их учить бесполезно - не поймешь, хочешь увидеть примеры использования паттернов - ковыряй исходники Симфони, например Symfony Forms. Не заучивай паттерны - смотри код и думай, зачем тут они использованы.

Чтобы делать эти задания, тебе надо установить Апач + PHP (можно заодно сразу и MySQL) на компьютер. Вот полезные инструкции:

https://github.com/codedokode/pasta/blob/master/soft/php-install.md
https://github.com/codedokode/pasta/blob/master/soft/apache-install.md

Может тебе понадобится пользоваться командной строкой, вот гайд https://github.com/codedokode/pasta/blob/master/soft/cli.md

Решения задач лучше показать мне, особенно на ООП,так как сам ты вряд ли увидишь все ошибки. Пости свой код на гитхаб и вкидывай ссылку в тред по мере решения. Я прокомментирую и укажу на ошибки.

Также, у нас есть задачи которые позволят тебе изучить или подтянуть до нормального уровня знания JS/HTML/CSS/SQL. Решай их параллельно с задачами выше.

- HTML/CSS: https://github.com/codedokode/pasta/blob/master/html/html.md
- JS: https://gist.github.com/codedokode/ce30e7a036f18f416ae0
- SPA (сложно): https://github.com/codedokode/pasta/blob/master/js/spa.md
- Проверялка решений на JS: http://dkab.github.io/jasmine-tests/
- MySQL: https://github.com/codedokode/pasta/blob/master/db/databases.md

Что почитать

- Мануал по PHP — http://www.php.net/manual/ru/langref.php
- Сайт phptherightway (перевод на русский: http://getjump.me/ru-php-the-right-way/ )
- По PHP: Профессиональное программирование на PHP Джордж Шлосснейгл
- По PHP: Мэтт Зандстра — PHP: Объекты, шаблоны, методики программирования
- JS: learn.javascript.ru
- Про Git: https://git-scm.com/book/ru/v1

Оформляй код аккуратно!!! — например пропусти через phpformatter.com . Также, если ты пользуешься IDE вроде PhpStorm, Netbeans, Eclipse, то в них эта опция встроена, подробнее: https://gist.github.com/codedokode/8759492

У ОПа нет аккаунтов и групп вконтакте, в фейсбуке, в твиттере, все "пхп-треды" там поддельные.

Платиновые вопросы

- Почему PHP? Потому что фейсбук и википедия на нем написаны, и вакансий море, и учить легко.
- Сайт опять упал!!!!! — Не паникуй, а открой http://rghost.ru/6bfCY9lfl и получи личную немного устаревшую оффлайновую копию сайта (можно читать хоть на андроиде без интернета)
- Что надо знать чтобы найти работу - разработчику: PHP, SQL, HTML/CSS, JS, ООП, Git, композер, MVC, фреймворк. Верстальщику - HTML/CSS, JS, jQuery
- Можно подробнее про поиск работы, собеседования - нет, ОП писать не будет, но может кто из анонов захочет рассказать. Поищите тред перезвонивших, а также раздел /wrk/.
- Сколько времени надо изучать все это? - все зависит от тебя, но не меньше 6-8 месяцев
- Посоветуйте редактор кода - Sublime Text 3, Notepad++, PhpStorm
- Нужен ли ООП, фреймворки, MVC, git, composer? — Да, однозначно. Посмотри любую вакансию.
- Что самое главное для программиста? Умение аккуратно оформлять код.
- ОП, сделай за меня мою работу или домашнее задание? — Это конечно, хорошая идея, но нет.
- Подскажи сайты для поиска работы, я не умею гуглить? — hh.ru, geekjob.ru, moikrug.ru (склеен с brainstorage.me), fl.ru, upwork.com (бывший одеск). Имей в виду, что кроме фриланса есть еще постоянная удаленная работа (remote job) когда тебе не надо тратить время на поиск заказов и переговоры с неадекватными заказчиками.

Аноним 2017/05/11 16:39:04  №988870 2
grammar-nazi.png (56, 500x644)
644x500
Код нужно писать не как попало, а аккуратно и по правилам. Почему? Потому, что на неакуратно написанный код не хочется даже смотреть.

Если тебе лень выравнивать код руками, закачай его на http://beta.phpformatter.com/ и нажми «format». Робот исправит выравнивание и отступы в мгновение ока (да, прогресс не стоит на месте). Если ты используешь мощную IDE вроде PhpStorm, там тоже есть функция форматирования кода.

Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492

Вообще, в PHP долгое время не было единого стандарта оформления кода, все писали как попало и было много бардака, но сейчас дело лучше — есть стандарты PSR-1 и 2. Вот как надо оформлять код:

- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()
- Название функции начинается с глагола, в стиле «сделайЧтоТо»
- не знаешь английский? Не беда, в 21 веке есть решение этой проблемы. Не пиши транслитом, открой лучше Гугл Транслейт или slovari.yandex.ru и найди название для переменной там
- в именах классов используется CamelCase, первая буква большая, «_» может использоваться
- мы предпочитаем подстановку переменных вместо конкатенации строк: "I am $age years old" — хорошо, 'I am ' . $age . ' years old' — плохо из-за обилия точек и кавычек
- мы используем для отступов 4 пробела (можно настроить редактор, чтобы при нажатии Tab он вставлял 4 пробела)

Вот ссылка на стандарты, где все это описано подробнее и даны примеры оформления:

PSR-1: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-1-basic-coding-standard.md
PSR-2: https://github.com/samdark/fig-standards-ru/blob/master/accepted/ru/PSR-2-coding-style-guide.md

------------------

Итак, ты зашел в тред и решил помочь какому-то анону, дав ему совет или подсказку. Спасибо! Но прочти сначала эти напоминания, чтобы твоя помощь действительно была полезной.

Давай удочку, а не рыбу

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

Будь доброжелателен

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

Не придирайся к знанию английского или русского языка.

Объясняй

Не очень хорошо: «сделай как в этом коде»
Хорошо: «если ты вставляешь текст от пользователя в SQL запрос, то получается SQl-инъекция, которая позволяет взломать твой сервер (ссылки). Чтобы этого избежать, надо вставлять данные с помощью плейсхолдеров (ссылки)»
Хорошо: «Помни, что код пишется для людей. Если писать такие большие функции, то в них становится трудно разобраться...»

Не проповедуй

Мы учим использованию самых распространненных подходов, стандартов, библиотеки фреймворков. Если ты не любишь ООП, пробелы в коде, jQuery, сам PHP, то рассказать об этом стоит в каком-нибудь другом треде.

Не придирайся к знанию английского языка, анон пишет как умеет.

Ах да. Если тебе кажется, что что-то в учебнике или задачах можно сделать лучше — пиши, обратная связь всегда очень полезна.
Ответы: >>989959
Аноним 2017/05/11 18:00:11  №988893 3
Привет, доброанон, шапку прочитал. Будет ли толк на пути становления веб-макакойпрограммистом в самом начале изучать C и идти по Гарвардским курсам CS50?
Ответы: >>988905
Аноним 2017/05/11 18:03:13  №988894 4
Работаю пхп жс скл за 40к, ООП не использую, знаю тоже мало, только процедурка только хардкор, посоветуйте курсы для повышения квалификации а не для изучения с нуля
Ответы: >>988905
Аноним 2017/05/11 18:21:00  №988905 5
>>988893
>изучать C
эта дорога точно не ведет в веб. ЦС50 тоже, это достаточно общий курс по компутер-саенс, если новичок, то будет довольно интересно, может быть и передумаешь вкатываться в веб.

>>988894
Очевидный курс от ОПа, начни с задач по ООП из учебника http://archive-ipq-co.narod.ru/


Ответы: >>988908
Аноним 2017/05/11 18:26:14  №988908 6
>>988905
>CS50
Там в силлабисе есть html, css, sql.
Аноним 2017/05/11 18:39:59  №988913 7
Поясните за Антипаттерн "Толстый контроллер", разве Presenter в MVP и ViewModel в MVVM не являются примером растолстевших контроллеров, переименованных пиар отделом в попытке скрыть позор?
Ответы: >>988935
Аноним 2017/05/11 19:34:18  №988935 8
>>988913
Ну по идее, толстым у тебя контроллер получается если ты слишком много всяких операций проводишь в контроллере. В таком случае подумай над тем, что бы распихать все эти операции по отдельным ф-ям/методам. В идеале у тебя контроллер должен только принимать данные от пользователя(http запросы, куки, сессии, формочки ну ты понел) и передавать их в модель с минимальной обработкой, ну там еще валидация всякая, ну и принимать от модели и отдавать вьюшке, как-то так.
Аноним 2017/05/11 19:50:15  №988941 9
Ответы: >>989464 >>989543 >>998927
Аноним 2017/05/11 20:15:47  №988950 10
Что посоветуете для начинающей макаки для вката в вебдев? Кроме того что есть в оп посте. Все же, что-то кроме пхп нужно ведь.
Спасибо, котики
Ответы: >>988997
Аноним 2017/05/11 20:27:23  №988958 11
Пхп-то ВСЕ. Сейчас в моде спа-странички и нода.
Ответы: >>988959 >>988961 >>998927
Аноним 2017/05/11 20:33:58  №988959 12
>>988958
Он уже 15 лет как ВСЕ.
Аноним 2017/05/11 20:35:19  №988961 13
>>988958
А ты спа на пхп не сделаешь?
И спа не везде "в моде", для сео это все еще вредно.
Аноним 2017/05/11 20:57:36  №988980 14
Ньюфаг вкатывается со списком студентов. Это мой первый опыт в вебе, поэтому прошу отнестись с пониманием. Буду рад услышать про свои ошибки.
https://github.com/some-random-username/student-list
Аноним 2017/05/11 21:26:48  №988997 15
>>988950
https://pastebin.com/XBFzDwsY с шапки общетреда взял.
Что кроме книг по js, php, html нужно? Абсолютный нуфаг без базы
Ответы: >>989092
Аноним 2017/05/12 03:01:14  №989092 16
>>988997
Делай по книге на юкозе из шапки.
>>988868 (OP)
Только вкатываюсь, по образованию - гуманитарий. Как же это охуенно сделать свой рандомнамбер генератор (первое задание с кубиком).
Ответы: >>989652
Аноним 2017/05/12 06:37:24  №989112 17
>>988980
Мельком поглядел. У тебя в классе с запросами в базу, много методов с почти похожими селектами. Можно сделать один метод, а запрос сделать сделать составным. К примеру, если в качестве условия ты ничего не передал, то строка "WHERE id = ?" не будет подставляться в запрос. Класс будет больше, и сложнее. Но, если грамотно сделать, то у тебя получится один класс, который делает одну функцию - делает селект в базу.
Ответы: >>989113 >>989284
Аноним 2017/05/12 06:38:49  №989113 18
>>989112
Сорян. Не класс, а метод будет сложнее и выполнять одну функцию.
Аноним 2017/05/12 09:26:29  №989133 19
>>988980
Получение параметров запроса в модели?
Ответы: >>989143 >>989284
Аноним 2017/05/12 10:16:59  №989143 20
>>989133
Еще небольшой совет дам, хотя это вкусовщина.
Чтобы избежать высокого уровня вложенности, вроде как в методе match роутера, можно использовать условия от обратного. То есть не "if (azaza) { чтото делаем }", а "if (!azaza) { return; } чтото делаем" как пример.
Аноним 2017/05/12 11:52:28  №989169 21
Привет, ньюфаг в треде, есть вопрос. PHP изучаю пока в приложении к WP, хочу иметь возможность делать в нем что-то кастомное и т.д. Собственно сейчас пилю сайт\тему, в которой, например, есть кастомный слайдер в шапке с определенным текстом, изображениями — задача сделать их редактируемымыми из админки. Как делать страницу в админке знаю. Собственно вопрос — как это лучше реализовать, ну или в какую хотя бы сторону копать? tx
Ответы: >>989200 >>989311
Аноним 2017/05/12 12:05:28  №989177 22
>>988980
1. Хорошо что ты задумываешься о контейнере зависимостей, однако вряд ли ты до конца понимаешь как им пользоваться. Например, ты делаешь отдельный класс для соединения с БД, хотя по логике очевидно что это тоже зависимость. Сам контейнер - имхо далеко не лучшая идея возвращать зависимость как элемент массива, лучше сам объект и возвращай. Алсо, советую почитать про интерфейс PSR - 11 и посмотреть как устроен контейнер Pimple.
2. По части контроллеров пока заметил только одно грубое нарушение - ты не экранируешь данные. Нельзя просто принимать данные в виде $_GET["something"], это серьезная уязвимость. Почитай про XSS, ОП-а где-то было об этом.
3. В индексном файле советую автозагрузку и прочее распихать по отдельным файлам, так будет удобней редактировать.
4. В моделях ты тоже наговнокодил. Ты не правильно назвал класс для работы с таблицей студентов, из название выходит что это у тебя модель сущности студента, а по факту это шлюз к таблице, переименуй на StudentsTableGateaway. Исходя из того что я про контейнер написал - надеюсь тебе понятно почему твой класс Model не нужен. То как ты выбираешь студентов из базы - это вообще путь в никуда. Читай больше про работу с PDO и выбирай одним запросом всех студентов в специально созданный класс-модель с соответсвующими полями. И это, я так и не понял зачем ты прямо так делаешь пагинацию.
5. Дальше не читал, еще добавлю что стоит все таки комментировать свой код если ты собираешься его кому-то показывать, я вот на работе сижу и особо времени разбирать твой код нет. Прокоментируй и вечером еще посмотрю.
Ответы: >>989180 >>989284
Аноним 2017/05/12 12:20:10  №989180 23
>>989177

Данные в контроллере экранировать не требуется. И если экранировать, то для чего? для вывода? Для использования в SQL запросе? Экранировать данные надо там, где они используются.
Ответы: >>989195
Аноним 2017/05/12 12:38:59  №989195 24
>>989180
>Данные в контроллере экранировать не требуется.
ИМХО лучше таки в контроллере, что бы в моделях меньше мороки было.
Ответы: >>989202
Аноним 2017/05/12 12:56:42  №989200 25
>>989169
Так это тебе в ВП тред, в мертвом вебаче вроде был такой тред.
Аноним 2017/05/12 12:57:46  №989202 26
>>989195

Ты по моему плохо понимаешь, что такое экранирование. Ты наверно начитался плохих учебников, где учат, что данные от пользователя "опасные" и их надо "очистить" (пропустить через несколько случайно выбранных функций), чтобы они стали "безопасными" (ага, святой водой полить).

Но это неправильно. Данные сами по себе не "опасные" и их нельзя "очистить". Уязвимости возникают при неправильном использовании данных - например вставке их напрямую в SQL-запрос вместо использования плейсхолдеров. Или при выводе данных в HTML-коде без применения htmlspecialchars. Или при попытке подключить файл, имя которого задается пользователем.

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

Ответы: >>989205
Аноним 2017/05/12 13:09:50  №989205 27
>>989202
>Ты по моему плохо понимаешь, что такое экранирование. Ты наверно начитался плохих учебников, где учат, что данные от пользователя "опасные" и их надо "очистить" (пропустить через несколько случайно выбранных функций), чтобы они стали "безопасными" (ага, святой водой полить).
Может быть, в данном случае я просто имел ввиду очистить от html-тегов, лол.
Ответы: >>989206 >>989210
Аноним 2017/05/12 13:11:51  №989206 28
>>989205
>И это ведь не защитит от того, что завтра кто-то допишет вызов функции, передав ей неэкранированные данные.
Тут как бы логика в том, что если у тебя одна точка приема данных от пользователя, т.е. контроллер, то лучше бы там хотя бы от тегов почистить, а то мало ли макак которая модуль пишет забудет это сделать.
Ответы: >>989212
Аноним 2017/05/12 13:25:10  №989210 29
>>989205

Тут нет логики. Почему очищать именно от HTML-тегов (то есть по сути угловых скобок)? А что насчет других символов, вроде точек, запятых, вертикальных палочек, вьетнамской письменности и десятков других символов Юникода?
Ответы: >>989220
Аноним 2017/05/12 13:26:50  №989212 30
>>989206

Ты невнимательно прочел мой пост. Я написал, что данные не могут быть "опасными" сами по себе и их "почистить" нельзя. Можно только создать видимость безопасности таким образом.


Аноним 2017/05/12 13:43:12  №989220 31
>>989210
>Тут нет логики. Почему очищать именно от HTML-тегов
Самый общий случай же. В БД сомнительно что бы кто-то сейчас вставлял данные без подготовленных запросов
Аноним 2017/05/12 15:27:47  №989284 32
>>989112
Понял, спасибо. Сейчас попробую переделать. >>989133
>Получение параметров запроса в модели?
Да, совсем не заметил. То есть обязательно надо передавать параметры запроса из контроллера в модель?
>>989177
>Сам контейнер - имхо далеко не лучшая идея возвращать зависимость как элемент массива, лучше сам объект и возвращай.
Так я же вроде объекты и возвращаю.
>return new \src\models\StudentsModel($container['db']);
Или я тебя не так понял?
>посмотреть как устроен контейнер Pimple.
Я как раз с него и пытался делать.
>По части контроллеров пока заметил только одно грубое нарушение - ты не экранируешь данные. Нельзя просто принимать данные в виде $_GET["something"], это серьезная уязвимость. Почитай про XSS
Но ведь потом я эти данные вывожу через htmlspecialchars в шаблоне.
>Ты не правильно назвал класс для работы с таблицей студентов
Да, с моделью все совсем плохо вышло. Увидел ошибки, спасибо.
Только я сначала хотел через сущности сделать, но не понял, как вывести, например, список всех студентов. Там же под каждую запись в таблице отдельный класс нужен.
Ответы: >>989286 >>989295 >>989302
Аноним 2017/05/12 15:28:46  №989286 33
>>989284
>отдельный класс нужен.
Точнее объект отдельный нужен.
Аноним 2017/05/12 15:42:42  №989295 34
>>989284
Отдельный класс не под каждую запись в табилце, а под каждую таблицу ты хотел сказать. Ну так со шлюхом так же. А вот инстансы класса под каждую запись, это да в AR. Например список записей таблицы должен быть представлен в виде коллекции объектов AR.
А вообще AR тема не сложная.
Ответы: >>989297 >>989301 >>989381
Аноним 2017/05/12 15:43:08  №989297 35
Ответы: >>989301
Аноним 2017/05/12 15:53:16  №989301 36
все ясно.jpg (105, 800x450)
450x800
Аноним 2017/05/12 15:53:26  №989302 37
>>989284
>Так я же вроде объекты и возвращаю.
Я посмотрел, ты там юзаешь ArrayAcces, тогда все норм должно быть.
> Там же под каждую запись в таблице отдельный объект нужен
Так и должно быть.
Аноним 2017/05/12 16:00:48  №989311 38
>>989169
Кастомные типы гугли
Аноним 2017/05/12 16:03:29  №989314 39
Поставили такую задачку. Есть база данных человеков (сорт оф кадровое агентство, человеки - соискатели) с адресами их проживания. Для этого дела есть самописная админка, с которой работают сотрудники агентства. Ситуация - поступает заявка от работодателя, в которой есть его адрес. И нужно, чтобы сразу были видны ближайшие соискатели в некотором радиусе. Как лучше это реализовать? Вкатываться а япи кких-нибудь яндекс карт?
Ответы: >>989340 >>999915
Аноним 2017/05/12 16:35:36  №989340 40
ug kod1.jpg (25, 300x431)
431x300
Ответы: >>989377
Аноним 2017/05/12 17:12:32  №989357 41
Господа, зацените решение задачки с кубиками. Нормально сделал? Что не так мб? Делал не по примеру немного.
https://ideone.com/eedOFR
Ответы: >>989358 >>989453 >>989459
Аноним 2017/05/12 17:13:31  №989358 42
>>989357
При ничье выбивает это:
Игрок бросает кость. Выпало: 6.
Игрок бросает кость. Выпало: 3.
Компьютер бросает кость. Выпало: 5.
Компьютер бросает кость. Выпало: 4.
Сумма очков игрока: 9.
Сумма очков компьютера: 9.
Очки игрока и компьютера равны. Счет - 9.
Аноним 2017/05/12 18:03:15  №989377 43
Аноним 2017/05/12 18:06:29  №989381 44
>>989295
>А вообще AR тема не сложная.
В теории не сложная, а на практике реализовать ее новичку довольно непросто. Для меня сразу пару непонятных моментов появилось по теме active record, которые я смогу понять только на реальных примерах.
Я вот сел сейчас переделывать и понял, что лучше сначала попробовать изучить пару фреймворков и сделать на них 2-3 сайта, а уже потом свои ошибки будут очевидны.
Ответы: >>989382
Аноним 2017/05/12 18:08:20  №989382 45
Аноним 2017/05/12 18:38:36  №989397 46
Что блядь за задание с "Напиши программу, выводящую таблицу умножения чисел от 1 до N на самих себя, используя цикл. Программа должна вывести примерно такой результат:

1×1 = 1
2×2 = 4
...
9×9 = 81
Ты можешь взять пример кода с картинки ниже за основу."
Хули оно такое сложное?
Ответы: >>989401 >>989407
Аноним 2017/05/12 18:43:52  №989401 47
>>989397
Ну охуеть сложное.
Ответы: >>989405
Аноним 2017/05/12 18:47:07  №989405 48
>>989401
Да, охуеть сложное для нуба, когда после ссаного elseif идут сразу циклы, которые даже по мнению php.net - самое сложное в пхп.
Ответы: >>989406 >>989415
Аноним 2017/05/12 18:47:52  №989406 49
Аноним 2017/05/12 18:47:58  №989407 50
Ответы: >>989411
Аноним 2017/05/12 18:50:23  №989411 51
>>989407
Нахуй мне твое решение если мне нужно понять как это делается?
Ответы: >>989419
Аноним 2017/05/12 18:51:28  №989415 52
>>989405
Циклы - это самые основы основ.
Аноним 2017/05/12 18:54:51  №989419 53
>>989411
Он тебе алгоритм расписал, по которому это можно понять. Хуль выебываешься?
Ответы: >>989420 >>989429
Аноним 2017/05/12 18:56:06  №989420 54
>>989419
ideone.com/LDqB9c
"произведение", я ебу что это? Прохожу по гайду из шапки
>Требуемые знания: умение включать компьютер и пользоваться браузером. Ноутбук/айпад/планшет/смартфон тоже подходят, если в них есть интернет.
Ответы: >>989423
Аноним 2017/05/12 18:59:45  №989423 55
Ответы: >>989427
Аноним 2017/05/12 19:03:45  №989427 56
>>989423
https://ideone.com/LDqB9c
И как я должен был это понять идя по гайду? Это нихуя не объяснялось.
"пример" про опа-молодца нихуя не помогал.
Ответы: >>989431
Аноним 2017/05/12 19:05:53  №989429 57
>>989419
И да, если идти по его "алгоритму" то получается хуита.
<?php
for(;$i<10;){
$sum=$i$i;
echo "$i
$i=$sum\n";
}
?>
Ответы: >>989433
Аноним 2017/05/12 19:06:28  №989431 58
>>989427
>И как я должен был это понять
Мозгом если он у тебя, конечно, есть
Ответы: >>989439
Аноним 2017/05/12 19:07:44  №989433 59
>>989429
Сука, сбилось все.
<?php
for(;$i<10;){
$sum=$i x $i;
echo "$i x $i = $sum\n";
}
?>
Ответы: >>989438
Аноним 2017/05/12 19:09:08  №989438 60
Ответы: >>989439
Аноним 2017/05/12 19:10:52  №989439 61
>>989431
Алгоритм, с которым мне "помогли" (по факту помог только намёк про $sum) - https://ideone.com/TOCegr
Алгоритм, который должен быть - https://ideone.com/LDqB9c
>>989438
Умножение. Звездочку двощ считает за курсив.
Ответы: >>989444
Аноним 2017/05/12 19:12:55  №989444 62
>>989439
Не оправдывайся.
Ответы: >>989447
Аноним 2017/05/12 19:15:50  №989447 63
>>989444
Где ты оправдания видишь то? Я лишь посетовал на то, что подсказка была не особо ЛЕГИТИМНА, и несла в себе ошибку решил за тебя, впрочем, ничего нового. Единственная помощь, полученная от подсказки - использовать переменную в к-ве производной.
И решение мне не нужно было, мне нужен был лишь толчек в нужном направлении. Решения оставьте для школьников, пусть они радуются что их проблему кто-то там решил, потом дойдет что важность знания - научиться решать эту проблему, а не готовое решение.
Ответы: >>989449 >>989458
Аноним 2017/05/12 19:16:31  №989449 64
>>989447
> толчек
Толчок, конечно же.
Ответы: >>989458
Аноним 2017/05/12 19:16:48  №989450 65
14531857266710.jpg (49, 465x464)
464x465
>>988866
Я бы дропнул программирование и застрелился, если бы мои потуги так раскритиковали. Но я и половины не понял из того что там написано
Ответы: >>989461 >>989463 >>989468
Аноним 2017/05/12 19:18:58  №989453 66
>>989357
Нормально сделал? Что не так мб? Делал не по примеру немного.
Аноним 2017/05/12 19:26:22  №989458 67
Аноним 2017/05/12 19:28:55  №989459 68
>>989357
где инкапсуляция, полиморфизм, почему модель не отделена от вида?
Ответы: >>989469
Аноним 2017/05/12 19:31:47  №989461 69
>>989450
Никто ничего не критиковал, просто показали как можно сделать лучше, значит увидели потенциал, иначе не тратили бы время на анализ и на стену текста
Аноним 2017/05/12 19:34:29  №989463 70
>>989450
Ты про что? Какие потуги?
Ответы: >>989468
Аноним 2017/05/12 19:35:30  №989464 71
14942678797991.jpg (53, 650x425)
425x650
>>988941
Пасибо, только сел их решать как раз :3
Ответы: >>989477
Аноним 2017/05/12 19:38:13  №989468 72
1299345001749.png (150, 512x512)
512x512
Ответы: >>989470 >>989472
Аноним 2017/05/12 19:38:26  №989469 73
Ответы: >>989481
Аноним 2017/05/12 19:39:09  №989470 74
Аноним 2017/05/12 19:39:33  №989472 75
>>989468
Почему ты такой криворукий долбоеб?
Ответы: >>989478
Аноним 2017/05/12 19:44:10  №989474 76
Чет ору с треда
Аноним 2017/05/12 19:44:57  №989477 77
>>989464
А чем тебе помогут мои решения?
Ответы: >>989504
Аноним 2017/05/12 19:45:07  №989478 78
>>989472
я к вам из JS треда
Аноним 2017/05/12 19:47:06  №989481 79
Ответы: >>989487 >>989488 >>989500
Аноним 2017/05/12 19:55:02  №989487 80
братишка.jpg (25, 604x471)
471x604
Аноним 2017/05/12 19:55:25  №989488 81
>>989481
Ну я то делал базовую хуйню
Ответы: >>989499
Аноним 2017/05/12 20:12:19  №989499 82
смех 2.webm (894, 0x0)
0x0
>>989488
он тоже начинал базовую хуйню делать, а потом понеслось
Аноним 2017/05/12 20:13:07  №989500 83
>>989481
Автор прямо Петросян прирожденный.
Ответы: >>989501
Аноним 2017/05/12 20:14:52  №989501 84
>>989500
будет смешно, если он не шутил
Ответы: >>989531
Аноним 2017/05/12 20:16:59  №989504 85
>>989477
Я на этом палиндроме и айфоне застрял. Все равно не мог их сам решить
Аноним 2017/05/12 20:44:10  №989531 86
>>989501
Но ведь он не шутил пхпшники не умеют шутить
Аноним 2017/05/12 20:55:58  №989543 87
>>988941
Так, а зачем на переменная $halfLength в палиндроме, если мы ее не используем ?
Ответы: >>989545
Аноним 2017/05/12 20:57:41  №989545 88
>>989543
В глаза проебался и не заметил. Лучше ее использовать.
Ответы: >>989548
Аноним 2017/05/12 20:59:38  №989548 89
>>989545
>Лучше ее использовать.
Давай сразу на примере кода плиз
Ответы: >>989564
Аноним 2017/05/12 21:12:51  №989562 90
Аноним 2017/05/12 21:14:08  №989564 91
Ответы: >>989577
Аноним 2017/05/12 21:25:51  №989577 92
>>989564
Я когда сам его решать пытался, сделал все тоже самое практически, только буквы по другому брал. Думал, что нужно взять с первого символа по середину $halfLength и с последнего до середины и сравнить их. Но в итоге хуйня выходила.
Я надеюсь это была одна из самых сложных задач в пхп ?
Аноним 2017/05/12 21:33:44  №989586 93
>>989562
Ну подскажите, горит пиздец.
Аноним 2017/05/12 21:36:19  №989589 94
>>989562
>Где ошибка? В чем проблема?
В ДНК.
Ответы: >>989590
Аноним 2017/05/12 21:37:17  №989590 95
>>989589
Ну так блядь пофикси её, выйдя из окна.
Ответы: >>989609
Аноним 2017/05/12 21:55:11  №989608 96
Ответы: >>989609 >>999915
Аноним 2017/05/12 21:57:05  №989609 97
Аноним 2017/05/12 22:03:37  №989623 98
l00e4b669.jpg (16, 320x240)
240x320
>>989562
боюсь, вам больше не стоит заниматься пограмированием.
чето ты реально нагородил, делай расчет суммы в цикле и считай года в нем же
Ответы: >>989626 >>989627
Аноним 2017/05/12 22:03:42  №989624 99
Аноним 2017/05/12 22:04:10  №989626 100
Ответы: >>989631
Аноним 2017/05/12 22:05:53  №989627 101
Ответы: >>989630 >>989631 >>989690
Аноним 2017/05/12 22:07:13  №989630 102
>>989627
>Просто не понимаю даже в какую сторону идти.
Это совсем просто, тебе нужно идти в сторону хуя, очевидно же
Аноним 2017/05/12 22:08:02  №989631 103
>>989627
Даже вчитываться не могу. У тебя есть сумма и есть год - все это считай за один ход цикла. Больше миллиона - стоп. Потом к 16 прибавь года получившиеся и усе.
>>989626
За щооо !?
Ответы: >>989632 >>989638
Аноним 2017/05/12 22:08:48  №989632 104
>>989631
>За щооо !?
Было бы за что - убил бы.
Аноним 2017/05/12 22:13:49  №989638 105
Ответы: >>989646 >>989690
Аноним 2017/05/12 22:34:06  №989646 106
>>989638
https://ideone.com/nevOI1
<?php
$age=16;
$start=10000;
$perc=1.1;
$money=$startX$perc;
for($start=10000;$money<1000000;$money=$startX$perc){
echo "$money\n";
}

В цикле фор, соответственно с гайдами и прочей хуйней.
Start - со скольки стартует. Действие 1, выполняется разово. Начинается с 10000. Условие - пока startXperc не дойдут до миллиона. Действие2 - пока условие не выполнено - должен умножать стартовые 10к на 1.1. Но оно не хочет лупить. Что за хуйня?
Ответы: >>989690
Аноним 2017/05/12 22:42:48  №989651 107
>>988868 (OP)
кто-нибудь работу нашел? Я тут учил кодинг где-то с 2014, ща работаю фронтендером в ДС.
Аноним 2017/05/12 22:46:59  №989652 108
>>989092
Скоро ты будешь рыдать.
Говорю тебе как 33летний редактор в издательстве, который вот уже два года бьётся во всём этом.
Но у меня мечта (одна из), к которой приближаюсь с каждым днём, - свой проект. Сейчас в нём треть частично реализована программистом за деньги, частично мной самим.
Такое окрыляет, придаёт силы.
Ответы: >>989653
Аноним 2017/05/12 22:49:46  №989653 109
>>989652
Это пройдет за несколько лет работы и множество реализованных проектов, как своих, так и чужих. Вот не спеша для души поковырять код - это дело. А въебывать это, конечноо, изматывает даже в этом деле.
Ответы: >>989660
Аноним 2017/05/12 22:58:03  №989660 110
>>989653
Да, полностью согласен.
Но имею в виду, что нужно очень хотеть научиться, без этого никак.
Я вот только пару месяцев как не вижу фигу, когда смотрю в чужой код, начинаю довольно быстро соображать, что к чему.
Практика, постепенное освоение, пропускание через себя всех задач - это всё нужно.
Ответы: >>989663 >>989675
Аноним 2017/05/12 22:59:31  №989663 111
>>989660
Ты сам с 0 вкатывался ?
Ответы: >>989675 >>989681
Аноним 2017/05/12 23:20:31  №989675 112
>>989660
>>989663
Теперь это престарелых вкатывальщиков тред? Можно к вам присоединиться?
Ответы: >>989677 >>989681
Аноним 2017/05/12 23:22:54  №989676 113
эх, сам пол-года назад вкатился. а ведь мне 29, братишки. тока я в верстку вкатился вот. но по зп это успех
Аноним 2017/05/12 23:23:12  №989677 114
>>989675
сколько лет ? если меньше 25 - то нет
Ответы: >>989678
Аноним 2017/05/12 23:28:04  №989678 115
>>989677
Совсем скоро будет 25. Считается?
Ответы: >>989680
Аноним 2017/05/12 23:30:30  №989680 116
>>989678
Ладно давай. Уже вкатился или только в планах ? За хеллоу волд пояснить сможешь ?
Ответы: >>989697
Аноним 2017/05/12 23:30:41  №989681 117
>>989663
В 2012-м изучил HTML+CSS на достаточном уровне, потом освоил Wordpress. Сделал с тех пор кучу сайтов, часть из которых продал, а часть по-прежнему приносит какую-то копейку на партнёрских программах.
Так что именно в программирование не совсем с нуля вкатился, получается, общие представления имел.

>>989675
Пару братишек помню и старше меня, только потом отсеялись куда-то.

Ну а так можно ещё и в нашей уютной конфе сидеть: https://t.me/PHP_club (только я вряд ли на выходных смогу).
Ответы: >>989686 >>989698
Аноним 2017/05/12 23:41:01  №989686 118
>>989681
А нуфагам в конфе помогают?
Ответы: >>989727
Аноним 2017/05/12 23:42:54  №989690 119
Ответы: >>989702 >>989710
Аноним 2017/05/12 23:49:12  №989697 120
>>989680
В планах потом вкатиться на работу, а так пока в процессе изучения.
Ответы: >>989703
Аноним 2017/05/12 23:49:30  №989698 121
А мне вот 26. 5 лет опыта. Работаю одновременно над 4 проектами в данный момент. Очень многое на ноде параллельно с пхп, знакомые еще в питон пытаются утащить. Фронтенд - ангуляр/реакт/вуе, но это не то, чем нравится заниматься. Верстку только под антидепрессантами могу, уж слишком уныло. Так же в андроид хуярю, изичная тема, для расслабона самое оно. В целом ничего сложного на самом деле с бекендом, главное понимание, внимательность, аккуратность и терпение. Своих 3 заброшенных проекта, 1 сейчас в разработке затянувшейся.
В данный момент допиливаю один из проектов на бету, чтобы хоть немного с чистой совестью потом поебланить (сроки уже на неделю всрал, заказчик ворчит).
По деньгам выше среднего в моем городе, с фрилансом и подработками раза в 3 повыше наверно, но ничего заоблачного, черную икру не жру. Работу менять лень сейчас, сила привычки. Вордпрессы всякие даже не видел никогда, брезгую. Выговорился.
>>989681
А че у вас в конфе интересного происходит?
Ответы: >>989727
Аноним 2017/05/12 23:56:53  №989702 122
Ответы: >>989733
Аноним 2017/05/12 23:57:14  №989703 123
>>989697
А с образованием как ?
Ответы: >>989705
Аноним 2017/05/13 00:00:55  №989705 124
>>989703
А вот с образованием хреново. С первого курса пидорнули, поэтому среднее профессиональное.
Ответы: >>989776
Аноним 2017/05/13 00:05:52  №989710 125
>>989690
>Экранировать переменную.
Объясните верстальщику, нахуй это?
Ответы: >>989733 >>989737
Аноним 2017/05/13 00:11:30  №989719 126
Там чето в /б панику по поводу вируса разводят. Как думаете серьезно ?
Ответы: >>989723
Аноним 2017/05/13 00:13:49  №989723 127
>>989719
Сам только что про это написать хотел.
Аноним 2017/05/13 00:18:51  №989727 128
>>989686
Конечно. Там есть опытные люди, ну и так своими силами что-то думаем обычно.

>>989698
Ну отлично же, если есть работа и возможность развиваться.
В конфе есть Карасик, который с 1С перешёл сейчас для разнообразия на РНР, иногда бывает. В целом там у нас больше по существу разговоры, чем за жизнь, но никто не против и просто поболтать.
Аноним 2017/05/13 00:27:32  №989733 129
>>989702
Ну так реши уже задачу ебана в рот, и покажи нам что ты понял.

>>989710
>Объясн
1 раз в жизни сталкивался с тем где это было нужно, но уже нахуй забыл. Проще погуглить.

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

То есть ты можешь хуярить вместо:
echo "Имя пользователя: " . $user->userName;

Такую поебень прямо в строке:
echo "Имя пользователя: {$user->userName}";
Ответы: >>989799
Аноним 2017/05/13 00:33:15  №989737 130
Аноним 2017/05/13 00:36:52  №989740 131
sIUUC3s0XqQ.jpg (16, 447x456)
456x447
Еще один престарелый-вкатывальщик-вниманиеблядь пришел отметится. Через 2 месяца 27 годиков, автор дно-поделок https://github.com/grigoryMovchan и труднообучаемый.

Словил макконахи и опустились руки. Чем больше узнаю, тем больше себя чувствую на дне, но даже там слышу, как снизу стучат. Иногда думаю, что я создан только сидеть под деревом и созерцать, а не заниматься интеллектуальным трудом.

Хуй знает, может перерыв надо сделать и вообще к пеке не прикасаться месяц другой, хотя бы дома, ведь я на работе 8 часов за пекой, после неё все за пекой, заебался столько инфы через себя пропускать. Но с другой стороны, пока я отдыхаю - двадцатилетний делает то, что я за год не успеваю.

Чет я приуныл.
Ответы: >>989745 >>989747 >>989750
Аноним 2017/05/13 00:39:36  №989743 132
Аноним 2017/05/13 00:42:44  №989745 133
>>989740
Почему не хочешь сходить на собеседование?
Ответы: >>989749
Аноним 2017/05/13 00:44:49  №989747 134
>>989740
Я вам прямо завидую. Вы вроде нуфаги, но вам норм, гитхабчиками светите. Я не нуфаг, но у меня на гитхабе такая параша, которую просто жалко выкидывать (архив кода мой по сути), что я его сам с дрожью открываю.
Ну а про дно - границы познания это.
Ответы: >>989752
Аноним 2017/05/13 00:49:31  №989749 135
2017-04-2801-24-12.png (541, 960x1038)
1038x960
>>989745
Работаю на фулл-тайм работе за еду 5/2. Подумаю об этом, когда изучу пик, допилю AphorismCMS и еще какую-нибудь поделку, сделаю задачи из оппоста. Есть риск сдаться раньше. Считаю, что пока не выхожу на уровень джуна, к тому же живу мухосранске (Краснодар), пытаюсь копить деньги на перекат. Фриланс не потяну.
Ответы: >>989751
Аноним 2017/05/13 00:49:56  №989750 136
>>989740
А меня пугает, что я такой нуфаг, что даже твои проекты мне кажутся сложными и крутыми
Аноним 2017/05/13 00:53:25  №989751 137
>>989749
О, я начинал читать эту книгу, но не осилил в итоге. Некоторые моменты показались слишком непонятными и оторванными от реальности (но я месяца два всего изучаю пхп, поэтому все дело во мне).
>Считаю, что пока не выхожу на уровень джуна
Но ты же отлично понимаешь, что уровень джуна у тебя уже давно есть. Зачем принижаешь себя?
Ответы: >>989764
Аноним 2017/05/13 00:53:32  №989752 138
2017-05-1300-56-06.png (74, 833x1040)
1040x833
>>989747
Вроде, тут только я один такой социоблядь, больше не видел чтобы кто-то светил. Да и у меня тоже это архив кода. Без гитхаба все превращается в свалку, которую только удалить хочется.
Ответы: >>989761
Аноним 2017/05/13 01:00:55  №989761 139
>>989752
> Григорий Мовчан
Ответы: >>989765
Аноним 2017/05/13 01:04:21  №989764 140
vlcsnap-error6731.png (309, 550x550)
550x550
>>989751
>О, я начинал читать эту книгу, но не осилил в итоге.
Так я её с января изучаю, по моему, и только 2/3 прошел. Очень медленно, прерываясь на свои поделки. Я до неё еще пытался вкатится в ООП и MVC. Каждый раз, когда возвращался к своим поделкам, то юзал что-то оттуда. Мне она дается тяжело, главу про шаблон Интерпретатор 10 раз перечитывал.

Возможно, мой уровень достаточен для двадцатилетнего джуна на третьем курсе, но не двадцатисемилетнего лба с заборостроительным дипломом.
Ответы: >>989766
Аноним 2017/05/13 01:05:26  №989765 141
14521669485140.jpg (46, 648x700)
700x648
>>989761
не деанонте, плез
Аноним 2017/05/13 01:05:48  №989766 142
>>989764
Да, с интерпетатором жопа, я так в итоге и не понял.
А у тебя вышка?
Аноним 2017/05/13 01:18:15  №989776 143
>>989705
>среднее профессиональное
Какое ?
Ответы: >>989782
Аноним 2017/05/13 01:22:22  №989781 144
>>989780
блять
я же удалил первый пик
Аноним 2017/05/13 01:23:31  №989782 145
>>989776
Вообще левое. К айти никакого отношения не имеет. Это очень плохо?
Ответы: >>989786
Аноним 2017/05/13 01:25:42  №989786 146
>>989782
У меня его вообще нет. 1.5 года юр. техникума только. Так КАКОЕ епт ?
Ответы: >>989789
Аноним 2017/05/13 01:27:17  №989789 147
>>989786
АВТОМЕХАНИК
В
Т
О
М
Е
Х
А
Н
И
К
Ответы: >>989794
Аноним 2017/05/13 01:28:13  №989794 148
>>989789
Работать пытался ?
Ответы: >>989795
Аноним 2017/05/13 01:29:24  №989795 149
>>989794
Не, не пытался. Вообще не интересует это.
Аноним 2017/05/13 01:52:05  №989799 150
>>989733
https://ideone.com/HMUOFw
Я решил. Мой затуп был в $money=$money*$percent. Как прикрутить floor к $money? Не хочет округлять вниз.
Ответы: >>989815
Аноним 2017/05/13 02:13:56  №989806 151
>>989801
>Что-то не сходится. Она похожа на говно.
Это мейк-ап такой.
Хипстер называется, сейчас модно. Тип привет из 50-60х.

>>989800
> просто супермилая тян
Тело у нее конечно ОК. Но милота что-то неоче.
Аноним 2017/05/13 03:04:54  №989815 152
Аноним 2017/05/13 03:13:16  №989816 153
Хватит флудить. Доброаноны, зарепортите этих даунов как оффтопик плиз.
Ответы: >>989828
Аноним 2017/05/13 03:27:52  №989817 154
Ответы: >>989924
Аноним 2017/05/13 08:12:22  №989828 155
>>989816
>169 новых постов
>за ночь
Ебанулись.
Аноним 2017/05/13 13:59:14  №989924 156
>>989817
Условие цикла неверное, хотя тебе это пока не принципиально.
Условие внутри цикла не верное, из-за него все и ломается. Почему то 3000 вместо 5000, 3% вместо 103%, да и вообще не то.
Ответы: >>989954
Аноним 2017/05/13 15:47:12  №989954 157
Ответы: >>989957 >>999915
Аноним 2017/05/13 15:54:02  №989957 158
>>989954
Условие лучше.
Еще раз объявляеть $leftToPay не нужно.
Условие < 5000 должно быть внутри цикла, а не за ним. Само условие тоже поправить. Добавить внутрь логики.
Если ты пошел путем $month*$monthlyPayment, то лучше это сразу в конец цикла пихать (перед бриком) с соответсвующей надбавкой, чем считать каждый раз.

Вывод окончательного результата можно сделать уже после цикла.

Компилятор тебе черным по белому написал, что ты использовал break вне цикла или свича, что должно было заставить тебя обратить внимании на его положение в коде. Учись слушать ошибки.
Аноним 2017/05/13 15:58:46  №989959 159
>>988870
>Горячие клавиши для форматирования кода в разных IDE: https://gist.github.com/codedokode/8759492
>PhpStorm — жми Ctrl+Alt+L
Он переводит открывающую конструкцию скобку { после класса и функции на новую строку, а после условий не перевод. ЛИБО ПЕРЕВОДИТЬ, ЛИБО НЕТ. Нахуя совмещать?
Ответы: >>989968
Аноним 2017/05/13 15:59:49  №989961 160
14946692543830.jpg (16, 720x83)
83x720
14946692543841s.jpg (3, 200x200)
200x200
Заебала блядь руснявая хуйня. НУ ЧЕ ОПЯТЬ? КОДИРОВОЧКА?
Засунул Собакину в $_SESSIONS['last_name'], достал Собакину на другой странице $last_name = $_SESSIONS['last_name'].
И ПОЛУЧИЛ ВОПРОСИКИ)))
Я просто за сегодня порвался с таких нелепых проблем.
Кругом выставил header("Content-Type: text/html; charset=utf-8"); Даже маме своей позонил и сказал: "ХЕАДЕР ЧАРСЕТ УТФ-8".
Скачал нотепад, проверил BOM, НИГДЕ НЕТ ЕГО, НИ НА ОДНОЙ БЛЯДСКОЙ СТРАНИЦЕ. Пхп-сторм не даёт удалить BOM, потому что его НЕТ.
СТАРТ

<?php
session_start();

В самой первой строке, самого первого файла, фронт-котроллер, что бы ты не делал - всё начинается с него.

Потушите мою Собакину.
Ответы: >>989964 >>989968
Аноним 2017/05/13 16:08:35  №989964 161
>>989961
А тег "meta" добавил?
Ответы: >>989966
Аноним 2017/05/13 16:12:56  №989966 162
Снимок.JPG (18, 635x135)
135x635
Ответы: >>990046
Аноним 2017/05/13 16:15:57  №989968 163
>>989961

Ты успокойся и проверь, в какой кодировке сохранен файл с исходным кодом программы - должно быть utf-8 без BOM.

И при чем тут русский язык? utf-8 он не для русского языка придуман, а вообще для всех языков. Это ненормально в наше время ограничивать себя латинницей, когда есть прекрасные письменности с тысячами иероглифов.

>>989959

Так в PSR-1, 2 и требуется. Почитай https://svyatoslav.biz/misc/psr_translation/


Ответы: >>989969
Аноним 2017/05/13 16:19:15  №989969 164
2017-05-13.png (12, 297x289)
289x297
>>989968
>Ты успокойся и проверь, в какой кодировке сохранен файл с исходным кодом программы - должно быть utf-8 без BOM.
>
>И при чем тут русский язык? utf-8 он не для русского языка придуман, а вообще для всех языков. Это ненормально в наше время ограничивать себя латинницей, когда есть прекрасные письменности с тысячами иероглифов.

У меня приступ, потому что я 3 час а убил на поиск решения и не нашёл его.

Пруф из нотепада.
Ответы: >>989972
Аноним 2017/05/13 16:27:31  №989972 165
>>989969

Выложи код куда-нибудь, так сказать, в чем проблема, трудно.
Ответы: >>989978
Аноним 2017/05/13 16:31:24  №989978 166
>>989972
Да проблема в том, что он не готов, осталось чуть-чуть, как будет готово - всё на гих вывалю или вообще на бесплатный хостинг залью, что бы нагядно. Это всё студенты ебучие. Осталось поиск сделать(кодировку выебать) и сортировку, на пару часов дел(mySql даётся не очень).
Аноним 2017/05/13 18:43:54  №990038 167
Тред по верстке не нашел (где его искать и как он называется?), поэтому пишу тут.

Есть один css фреймворк PURE, в нем интересуют только кнопки https://purecss.io/buttons/

Почему на оф странице кнопки в высоту 34 px, а когда подключаешь на свою страницу, то кнопки 38 px?

И с помощью какой магии между кнопками на оф сайте получается отступ?
Ответы: >>999915
Аноним 2017/05/13 19:03:10  №990046 168
>>989966
АХАХАХААХХАХ
><!DOCTYPE html>
><meta charset="utf-8">
Аноним 2017/05/13 20:12:01  №990087 169
2017-05-1319-57-19.png (172, 1920x1080)
1080x1920
Продолжаю пилить админку. В процессе оказалось, что дополнительно требуется писать кучу функций. Например, нельзя просто взять и добавить новую цитату в БД, надо указать автора, для этого получить список всех авторов, чтобы сделать выпадающее меню, если автора нет, нужна страница, где его можно добавить, при добавлении убедится, что нет повтора. А еще неплохо, чтобы вместо списка форма на ходу предлагала варианты... А еще...
Ответы: >>990088 >>990176
Аноним 2017/05/13 20:14:01  №990088 170
>>990087
На оформление я пока хуй забил
Ответы: >>990176
Аноним 2017/05/13 23:01:29  №990156 171
Как заставить себя сесть изучать похапе?
Ответы: >>990158 >>990163 >>990176
Аноним 2017/05/13 23:07:14  №990158 172
Ответы: >>990161
Аноним 2017/05/13 23:28:27  №990161 173
Аноним 2017/05/13 23:32:06  №990163 174
Аноним 2017/05/14 00:24:15  №990176 175
>>990087

Способы работы с формами давно уже изучены. Не изобретай велосипеды, а читай мои уроки (или чьи-нибудь другие на ту же тему): https://github.com/codedokode/pasta/blob/master/forms.md

Ну и у тебя опять видна проблема с непониманием MVC и неумением разделять ответственность. Ты все пишешь одной функцией authorAdd(), но гораздо удобнее сделать отдельную функцию валидации и отдельную функцию сохранения в БД. Ты берешься за сложное приложение, но при этом ты пишешь код в том же стиле, как пишут простые скрипты на 20 строчек. Это нужно исправлять.

Понятно, что можно и с плохим кодом сделать что-то работающее, но я не понимаю, какая в этом выгода. Ты ведь наверно хочешь научиться чему-то, но делая кое-как, ты в итоге ничему не научишься. Лучше остановиться и разобраться.

> чтобы вместо списка форма на ходу предлагала варианты
берешь плагин вроде Chosen или Select2 и прикручиваешь к нему получение вариантов дополнения через аякс либо через заложенный в коде список (если у тебя мало вариантов, то лучше просто список в HTML коде заложить).

>>990088

По поводу оформелния - попробуй просто убрать центрирование текста на всей странице, сразу станет лучше.

>>990156

Если тебе не хочется, можно наверно и не изучать.
Ответы: >>990194
Аноним 2017/05/14 00:50:31  №990194 176
14357466677240.jpg (28, 540x721)
721x540
>>990176
Я ценю твои советы, много полезного почерпнул и подтянул уровень. Но вот бомбит меня от того, что ты меня каким то дауном неоубучаемым выставляешь.

Действительно, так же пишут простые скрипты на 20 строчек? В том же стиле, серьезно? В прошлый раз я вообще прожег стул от ПОЛНОЕ НЕПОНИМАНИЕ MVC. Я, конечно, тоже считаю, что прогресс измеряется не количеством просиженных часов за доками, но вот я вижу как писал раньше https://github.com/grigoryMovchan/appsForStore и как пишу сейчас и считаю, что это небо и земля. До твоего уровня как до Луны пешком, но развитие, не без помощи в этом треде, определенно прослеживается.

Я и так понимаю, что хуйней какой-то донной занимаюсь. Зачем специально то еще дизморалить. Кому от этого польза?
Ответы: >>990198
Аноним 2017/05/14 00:53:49  №990198 177
image.png (1370, 1920x1080)
1080x1920
>>990194
Зря я отправил, удалил бы, будь возможность. Стыдно теперь.
Аноним 2017/05/14 00:56:22  №990200 178
В функции 20 строк, где кода - 10, куда её еще разделять то и зачем
Аноним 2017/05/14 01:00:16  №990201 179
xfd361c03.jpg (29, 500x373)
373x500
>>990200
Пиздец, ты шизофреник.
Ответы: >>990202
Аноним 2017/05/14 01:06:12  №990202 180
>>990201
я просто заебался, мне надо на природу, в лес, к речке
Ответы: >>990245
Аноним 2017/05/14 01:12:15  №990206 181
Аноны, что значит знать фреймворк? Это обязательно нужно все исходники прочитать и понять или просто нужно уметь с ним работать?
Ответы: >>999915
Аноним 2017/05/14 01:18:53  №990213 182
>>990200
Я тут мимо пробегал, но хотел спросить по этому коду
1) возможен рейс-кондишон, всем похуй?
2) что там с обработкой исключений в пыхе, можно хуй класть?
Ответы: >>990214 >>990215
Аноним 2017/05/14 01:21:41  №990214 183
>>990213
Без транзакций возможно.
Ответы: >>990218
Аноним 2017/05/14 01:22:51  №990215 184
>>990213

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

Вообще, по моему опыту в 95% случаев исключения ловить не надо. Надо только в редких случаях - например, когда мы хотим сделать повторный HTTP-запрос при ошибке или что-то такое.
Ответы: >>990218
Аноним 2017/05/14 01:28:25  №990218 185
>>990214
При чем тут транзакции, когда тут два отдельных запроса?
>>990215
Что при этом увидит пользователь? Думаю что-то совсем некрасивое, но если на верхнем уровне это как-то отлавливается, то наверное норм.
Ответы: >>990220 >>990222
Аноним 2017/05/14 01:35:42  №990219 186
>>990200

Тебе надо не спешить делать новые фичи, а остановиться и разобраться с существующим кодом. Какой смысл в том, что я тебе указываю на ошибку, а ты продолжаешь писать код с этими ошибками? Больше исправлять ведь придется.

Ты мой урок по MVC читал? Вот видимо невнимательно читал.

Вот есть допустим задача - добавить нового автора. Вот у меня переменная с его именем.

Есть ли у тебя функция в модели, которая решает эту задачу? Фактически нет, твой код непригоден для решения этой задачи.

И это говорит о том что никакого MVC у тебя нету. Ты не прочел внимательно мой урок про MVC, не сделал разделение кода, а просто сделал классы "Модель", "контроллер", "вид" и думаешь что теперь у тебя MVC код. А по факту в твоей "модели" обычная стена кода, где все вперемешку. И которую нельзя ни тестировать нормально, ни повторно использовать.

Прочитай урок, серьезно, прочитай. Там ведь даже пример кода есть. Чтобы твой код соответствовал MVC, нужно, чтобы у тебя была функция, которая позволяет добавить автора. Чтобы можно написать, например:

$something->addAuthor('Лев Толстой');

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

Также, ты используешь неудачный подход для возврата результатов (в функции addAuthor). Вот смотри, есть какая-то функция, которая что-то возвращает. Ну например, сумму 2 чисел:

$result = sum(2, 2); // вернет 4

А у тебя сделано по сути так:

sum(2, 2);
$result = getSumResult();

То есть ты вместо того, чтобы вернуть результат функции через return, используешь какие-то обходные пути и изобретаешь велосипеды.

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

Вот еще один мой урок, он прямого отношения к твоему коду не имеет, но может быть извлечешь что-то полезное: https://github.com/codedokode/pasta/blob/master/good-code.md

Я советую остановиться и исправить существующий код.
Ответы: >>990233 >>990233 >>990247
Аноним 2017/05/14 01:38:26  №990220 187
>>990218
Ну так в этом и суть. Рейс кондишн конкретно в пхп в данном случае - невозможен. На уровне базы и разных процессов пхп возможен. В конкретно данном случае очень вероятно, что невозхможен вообще, ибо все происходящее атомарно просто и достаточно было не проебаться при создании бд. Ну или я тебя в чем-то не понял. В большинстве случаев такие ситуации решаются транзакциями.
Про исключения не согласен с предыдущим, я их не сторонюсь использовать, ловить и обрабатывать. Но в целом это не маст хев, если работаешь с фреймворком, который сам это все умеет и выводит в виде ошибки пользователю.
Ответы: >>990223 >>990225
Аноним 2017/05/14 01:40:32  №990222 188
>>990218

По идее должен быть обработчик непойманных испключений, который залоггирует его и покажет страницу 503. Но в PHP талантливые архитекторы вместо этого сделали показ белой страницы с кодом 200, а если включен display_errors - еще и с выводом текста ошибки, которую радостно проиндексирует Гугл.

Потому обычно приходится писать свой обработчик непойманных исключений.

Аноним 2017/05/14 01:41:42  №990223 189
>>990220

Чтобы исключить race condition при вставке существующего автора, можно поставить в БД UNIQUE KEY по полю "имя", тогда попытка вставки существующего автора вызовет исключение.
Ответы: >>990224
Аноним 2017/05/14 01:42:23  №990224 190
>>990223
>достаточно было не проебаться при создании бд
Я об этом и говорю.
Аноним 2017/05/14 01:44:31  №990225 191
>>990220

Транзакция тут никак не помогла бы ибо она группирует запросы на изменение данных, а на SELECT-запросы почти никак не влияет (кроме случаев блокировок SELECT ... FOR UPDATE/LOCK). Вот если бы он вносил несколько изменений то да, желательно использовать транзакцию, чтобы в БД не было частично вставленных данных.
Ответы: >>990228
Аноним 2017/05/14 01:46:15  №990226 192
>>990200

Также, у тебя плохо сделана проверка на уникальность. Если в БД есть автор "Джон" то вставить "Джо" он не даст.
Ответы: >>990238
Аноним 2017/05/14 01:49:58  №990228 193
>>990225
Тогда я тебя не правильно понял и понесло меня.
Аноним 2017/05/14 01:55:13  №990230 194
blob (3, 207x106)
106x207
>>990200
Просто return $count >= 1; например.
Имя проверяй не like, а =.
Ответы: >>990235
Аноним 2017/05/14 02:08:38  №990232 195
Нужна ли мне математика и на каком уровне для вката в верстку/webdev?
Ответы: >>990234
Аноним 2017/05/14 02:10:43  №990233 196
14536411442520.png (46, 256x256)
256x256
>>990219
>Какой смысл в том, что я тебе указываю на ошибку, а ты продолжаешь писать код с этими ошибками?
Ты это зря так думаешь. Я по пунктам все отрабатываю https://github.com/grigoryMovchan/AphorismCMS/blob/master/code_review.txt и многое уже успел переделать.

>>990219
>Вот есть допустим задача - добавить нового автора. Вот у меня переменная с его именем.
>Есть ли у тебя функция в модели, которая решает эту задачу?
>$something->addAuthor('Лев Толстой');
Вот с этим просто не согласен. Нет у меня такой задачи. Я целенаправленно её решил так. Этот "велосипед" конкретная рекомендация из Зандстра и похожим образом сделано в ларавель, только там Request передается не один раз в конструктор, а персонально каждой функции, где он может потребоваться. Захотел попробовать - попробовал. Может потом поумнею и признаю, что был не прав, но пока так.
Ответы: >>990250
Аноним 2017/05/14 02:11:19  №990234 197
>>990232
Да не оч. Матан нужен только если ты какие - то убер алгоритмы пишешь
Аноним 2017/05/14 02:11:41  №990235 198
14922771007610.jpg (36, 409x405)
405x409
Ответы: >>990246
Аноним 2017/05/14 02:14:26  №990237 199
>>990200
Пока ты не поработаешь с классами в 900 строк и 30 - 40 методов не поймешь. И переубедить никто не сможет. И писать комменты на англе дурной тон ( к стати если тебе нужны коменты в приделах одного метода - значит ты где - то что то сделал не так )
Ответы: >>990245 >>990247
Аноним 2017/05/14 02:14:35  №990238 200
>>990226
Нет, скорее если в бд есть автор Джон, то Джонсон - это тоже самое, т.к содержит "Джон". В регулярке нужно добавить ограничители ^ начало строки & конец строки.
Ответы: >>990239
Аноним 2017/05/14 02:16:28  №990239 201
>>990238
А то что там открытые ворота для SQL иньекции тебя не смущает?
Ответы: >>990240 >>990264
Аноним 2017/05/14 02:16:58  №990240 202
>>990239
Не ну чё ты начинаешь, обсуждаем же регулярку.
Ответы: >>990242
Аноним 2017/05/14 02:18:22  №990242 203
>>990240
Регулярка там вобще не нужна, имя делаеться уникальным индексом. Оп и проверка не нужна
Ответы: >>990244
Аноним 2017/05/14 02:19:27  №990243 204
>>988868 (OP)
Опчик, а ты сам кем работаешь и какой стаж?
Ответы: >>999915
Аноним 2017/05/14 02:19:35  №990244 205
Ответы: >>990251 >>990254 >>990264
Аноним 2017/05/14 02:19:47  №990245 206
633s41EKLc.jpg (79, 450x600)
600x450
>>990202
Не рань мне душу, негодяй.
>>990237
> И писать комменты на англе дурной тон
Не понел. Я как раз стараюсь на ангельском все писать, вдруг свалить повезет.
Ответы: >>990248
Аноним 2017/05/14 02:20:08  №990246 207
>>990235
Можно еще посмотреть на exists.
Аноним 2017/05/14 02:20:15  №990247 208
Ответы: >>990249
Аноним 2017/05/14 02:20:39  №990248 209
>>990245
Очапятка на русском :)
Аноним 2017/05/14 02:21:51  №990249 210
>>990247
мимо
я первый раз сюда зашел а тут такое твориться то
содомиты
Аноним 2017/05/14 02:22:35  №990250 211
>>990233

> Этот "велосипед" конкретная рекомендация из Зандстра
Какая глава?

Думаю, что Зандстра не будет советовать возлагать на один класс несколько разных задач.

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

> и похожим образом сделано в ларавель, только там Request передается не один раз в конструктор,
Ларавель - своеобразный фреймворк, но мне кажется, даже там такого нет. Можешь дать ссылку?

> Вот с этим просто не согласен.
Тогда у тебя не MVC. А ты просто сделал класс с названием "Контроллер" и "Модель". В MVC используется разделение на компоненты, а не пишут все в одном месте. Тогда тебе надо убрать слова вроде "контроллер" или "модель", чтобы не сбивать читателя с толку.

> Нет у меня такой задачи
А задачи реализовать архитектуру MVC тоже нет? Или допустим ты захочешь из командной строки импортировать авторов - как ты будешь делать. Или протестировать, что функция работает - как ты напишешь тест?

Ответы: >>990262
Аноним 2017/05/14 02:24:34  №990251 212
>>990244
А еще нахера ретурнить true или false если можно ретурнить массив с ключами? и строить ответ?
Или можно вообще выбрасывать исключение, ловить их в контроллере и на них него 500 кодом отвечать с текстом ошибки?
Аноним 2017/05/14 02:25:58  №990254 213
>>990244
Писать несколько return в методе тоже не очень то хороший тон :)
Ответы: >>990255 >>990260
Аноним 2017/05/14 02:27:19  №990255 214
>>990254
А что хороший? Метр лапши насрать?
Ответы: >>990259
Аноним 2017/05/14 02:28:28  №990256 215
Серунькаю с каргокультистов itt перетирающих уже тухловатое говнецо.
>PHP-тред
Впрочем, ничего необычного.
Аноним 2017/05/14 02:29:32  №990259 216
>>990255
Если ты эту лапшу через месяц прочитаешь так же как и сегодня то да ( и другие люди тоже )
Ответы: >>990261
Аноним 2017/05/14 02:29:54  №990260 217
>>990254

Ничего плохого в этом нет. Была статья лет 50 назад (не помню, может от Дийкстры), но потом нашлись и противоположные мнения.

Тут есть аргументы на англ, кому интересно, можете изучить: http://wiki.c2.com/?SingleFunctionExitPoint (мне лень).

Я считаю, что ничего плохого в нескольких ретурнах нет, наоборот, попытка сделать единственную точку выхода может ухудшить код (например, придется ставить огромные ифы и повышать глубину вложенности).

Ответы: >>990263
Аноним 2017/05/14 02:31:03  №990261 218
>>990259
Так и про return можно сказать. Может сразу тогда скажем - не пишите запутанный код?
Ответы: >>990263
Аноним 2017/05/14 02:32:38  №990262 219
>>990250
>Ларавель - своеобразный фреймворк, но мне кажется, даже там такого нет. Можешь дать ссылку?
Допускаю, что там Request не тот Request, что у меня https://laravel.ru/docs/v5/quickstart-intermediate

>Какая глава?
Сейчас искать не буду. Там смысл был в том, чтобы суперглобальные переменные обрабатывались в отдельном классе, потому что может понадобится сделать с ними что-то спецефическое, и напрямую не передавались в модель.

Ок, я могу получить id из Request в контроллере и передать его в метод модели. А как тогда быть со вторым пиком? Неправильно написан Request и для данных из формы должен быть свой массив, который я должен получать из Request в контроллере и передавать в метод модели?
Ответы: >>1000394
Аноним 2017/05/14 02:33:42  №990263 220
>>990260
Ну если так рассуждать то у каждого метода будут свои за и против. И об этом спорить можно вечно просто кому как удобней. Но допустим сколько я не общался с программерами > 5 лет опыта все стараются этого избегать
>>990261
Ну если ты определишь чёткую грань между запутанным и не запутанным кодом то можем и сказать
Ответы: >>990275
Аноним 2017/05/14 02:34:26  №990264 221
2017-04-2321-11-11.png (632, 594x598)
598x594
>>990239
Там юзаются подготавливаемые запросы, ты неправ.

>>990244
Это не мой пост
Ответы: >>990267 >>990269
Аноним 2017/05/14 02:36:53  №990267 222
>>990264
Чет я не вижу там подготовленных запросов ну ок тебе видней
Ответы: >>990268
Аноним 2017/05/14 02:39:32  №990268 223
>>990267
Увидел :) просто не юзал так никогда
Ответы: >>990270
Аноним 2017/05/14 02:41:56  №990269 224
>>990264
Но ты реально мог бы сделать имя автора уникальным индексом - тогда бы просто лишился проверки и метода. Пытался бы вставить автора а там уже еxception разруливал если он упал по индексу
Ответы: >>990272 >>990273
Аноним 2017/05/14 02:43:50  №990270 225
14380261327050.jpg (26, 318x496)
496x318
>>990268
Там отдельный уровень абстракции для MySQL. Да, ОП его обоссал и я с ним согласен, но это пока мой уровень. Я его вообще спиздил из урока по авторизации, он был в виде одной функции, на mysqli и без подготавливаемых запросов.

https://github.com/grigoryMovchan/AphorismCMS/blob/master/app/Models/MysqlModel.php
Аноним 2017/05/14 02:43:56  №990271 226
Ответы: >>990274
Аноним 2017/05/14 02:45:01  №990272 227
>>990269

"разруливать" exception довольно неудобно, так как там кроме кода проверять нечего. Ну и вдобавок тогда нельзя будет без попытки вставить запись сделать валидацию.
Аноним 2017/05/14 02:46:14  №990273 228
14374821461150.gif (41, 400x300)
300x400
>>990269
Не понял, как бы я лишился проверки имени на уникальность заюзав индексы?
Аноним 2017/05/14 02:47:06  №990274 229
Аноним 2017/05/14 02:52:33  №990275 230
>>990263
На самом деле у него тут простой, пусть и кривоватый, пример того, чем множество return в методе лучше к примеру if {} else if { } else.
Чисто мой вкус мне это нравится визуально, приятно посмотреть, но это чисто визуальщина.
А вот чем такой код чище можно представить исходя из его примера и пресловутого массива errors, потому что для ошибок вообще отлично подходит и находит наиболее частое применение.
Допустим у нас две возможных ошибки в методе, одна следует за другой.
Вариант с ретурнами
if (чтото не так) { $this->errors[] = 'Something wrong'; return;}
if (еще что-то не так) {$this->errors[] = 'Fucking error'; return;}
//тут начинается реальный полезный код

И то же самое без этого подхода.
if (все ок) {
if (и тут все ок) {
//полезный код
} else {
$this->errors[] = 'Fucking error';
}
} else { $this->errors[] = 'Something wrong'; }

Просто из-за вложенности нужный нам код оказывается гдето в дали, что может хуево сказаться на непросредственной практичности - место на экране по сторонам не резиновое.
Ответы: >>990276
Аноним 2017/05/14 02:56:43  №990276 231
c23LAXlkAOM.jpg (50, 600x400)
400x600
>>990275
В упор не вижу, где ифы тебе помогают расширять благословенные 80 символов.
Аноним 2017/05/14 03:31:25  №990285 232
Хочу ворваваться во фриланс к 2018. Хотя бы 200уе верстая сайты. В этом поучить (портфолио желательно сделать небольшое)
Посоветуйте годноты по HTML/CSS, JS, jQuery
Гайдец мануал. как начать что учить.

А там мб и в создание сайтов можно перекатиться в будещем

Аноним 2017/05/14 08:41:41  №990295 233
Сотирую список студентов, подкиньте идею как по нажатию на одну и ту же кнопку делать сортировку сначало по возрастанию, по второму нажатию - по убыванию. Пока ничего кроме нагромождения сессий и кучи переменных отслеживающих нажатия в голову ничего не пришло.
<td class="firstStr">
<?php
echo "<a href=\"http://students/list/{$page}/name\">Имя</a>";
?>
</td>
Ссылка для сортировки по имени выглядит вот так. Контроллер получает текующую страницу $page и тип сортировки "name", по нажатию сортируется, но как сортирнуть в обратную сторону по нажатию на эту же кнопку? Без жс.
Аноним 2017/05/14 09:26:05  №990299 234
Ответы: >>990300
Аноним 2017/05/14 09:28:54  №990300 235
>>990299
> AJAX
Нам такое не задавали, Оп не упоминал.
Аноним 2017/05/14 10:38:58  №990306 236
>>990295
>Без жс
Попробуй формировать ссылку сразу с параметром направления сортировки ?order=ascending, а в контроллере переключать этот параметр.
Ответы: >>990307
Аноним 2017/05/14 10:44:12  №990307 237
>>990306
Запросы потом лень разбирать поэтому это будет выглядить так site/list/1/name/asc or desc. И так для каждого столбца...так и сделаю.
Аноним 2017/05/14 11:49:42  №990324 238
Подскажите, в каком разделе находится верстка-тред?
Ответы: >>1000394
Аноним 2017/05/14 12:13:11  №990332 239
Зачем нужен пхп?
Ответы: >>990337
Аноним 2017/05/14 12:28:14  №990337 240
>>990332
что бы унижать джава холопов
Ответы: >>990350
Аноним 2017/05/14 12:42:31  №990350 241
>>990337
Ну пхп это отдельный язык? Или "надстройка" над хтмл? Зачем он нужен, что на нем делают? Чтоиттлитего изучать если я ноль, или начать с хтл?
Ответы: >>990391 >>1000394
Аноним 2017/05/14 12:51:39  №990354 242
Анончики, подскажите, книга Matt Zandstra "PHP Objects, Patterns, and Practice" норм в качестве первой книги по PHP?
Ответы: >>990361 >>990362 >>1000395
Аноним 2017/05/14 13:06:07  №990361 243
>>990354
Кевин Янк - PHP и MySQL. От новичка к профессионалу - 2013
Сперва эту попробуй
Аноним 2017/05/14 13:07:38  №990362 244
1337662778570.png (87, 950x1230)
1230x950
>>990354
Охуеешь от сложности
Ответы: >>990372
Аноним 2017/05/14 13:49:14  №990370 245
Блядь, что не так с сортировкой? Отобрали 10 записей и отсортировали - вернули результат. По факу получается - отсортировали всю таблицу и отобрали 10 записей.
Т.е на не важно какие записи были выбраны для 1 страницы, при попытке отсортировать выдаёт первые 10 строк из БД по типу сортировке. Лимит срабатывает, но только в виде ограничения выданных строк(10).
Ответы: >>990371 >>990401
Аноним 2017/05/14 13:49:40  №990371 246
Снимок.JPG (20, 584x200)
200x584
Ответы: >>1000395
Аноним 2017/05/14 13:50:42  №990372 247
>>990362
Там после 60 до 100 страницы ничЁ не понятно, сложнА.
Но потом вроде бы лучше становится, сейчас читаю про сами конкретные шаблоны - всё более-менее пока.
Ответы: >>990421 >>990437
Аноним 2017/05/14 14:20:22  №990391 248
Аноним 2017/05/14 14:47:36  №990401 249
6qh6ZS-A4rg.jpg (93, 606x850)
850x606
>>990370
Тебе слово OFFSET о чем-нибудь говорит?
Аноним 2017/05/14 15:39:21  №990421 250
>>990372
в смысле, читаешь? Как художественную литературу? Как определяешь, что что-то понял?
Ответы: >>1000395
Аноним 2017/05/14 16:23:55  №990437 251
>>990372
Когда знаешь, допустим, про массивы, уже с ними повозился нормально, то если будешь читать, то ведь не будет нужды запускать этот код, всё ведь и так тебе понятно?
Вот так и тут.
После "Вектора" (до антикризисных мер, правда) там всё понятно в общем и целом. У Зандстры вот эти instanceof, ещё куча чего-то специфического очень долго объясняется перед шаблонами, я вот эту муть имел в виду.
Аноним 2017/05/14 17:45:09  №990471 252
14911913462993.png (284, 600x400)
400x600
Анончик, прощу на помощь. Мне нужен пример простого сайта где на стартовой странице несколько наименований товара и при клике по ним открывается подробное описание и все. Подскажите где код взять.
Ответы: >>990527
Аноним 2017/05/14 18:40:57  №990502 253
Подскажите, как часто используется JQuery? Стоит ли его учить после JS если я еще не начинал делать файлообменник?
Ответы: >>990625 >>1000398
Аноним 2017/05/14 18:45:44  №990508 254
Из-за того что не было эмейла в настройке локального репозитория за месяц ни один комит не отметился в табличке профиля на гитхаб
Аноним 2017/05/14 19:06:10  №990527 255
Аноним 2017/05/14 20:12:52  №990594 256
2017-05-1420-06-36.png (102, 1920x1080)
1080x1920
2017-05-1420-15-25.png (91, 1920x1080)
1080x1920
Крудошлепствую дальше
Ответы: >>990647
someApprentice 2017/05/14 20:42:12  №990621 257
https://github.com/someApprentice/chat/

Идея такая, что даже если js отключен, то прилжение всё равно будет работать. Наверно, это не совсем js, но всё-таки мы всё равно обрщаемся к php через ajax.

Как остановить setInterval, который был вызван в предыдущем событии? Вообще я правильно ли делаю динамическую подгрузку? С этой функцией очень много проблем, например, она меняет контекст this на вызываемой функции и его нельзя поменять с помощью call.

$('.contact').on('click', function() {
...
setInterval(controller.refreshMessages, 500, ...); //Выводит сообщения и из предыдущего диалога.
});

Что нужно отправлять в ответ на успешный POST запрос? https://github.com/someApprentice/chat/blob/master/public/js/chat.js#L193 Наверно помимо этого, я должен там ещё обновить сообщения.

Я правильно деалю то что вызываю события вне контроллера? https://github.com/someApprentice/chat/blob/master/public/js/chat.js#L136-L198

Ничего то что я называю методы отображения одним словом, например, $view->index()? Я имею ввиду, мы же всё равно пишем $view, писать $view->viewIndex() похоже на тавтологию.

Как организовать конференции? Это же не совсем пользователи, к которым можно отправить сообщения, хоть и можно их так представить. Я имею ввиду, как проще было бы получать все контакты пользователя и его конференции один запросом, чтобы было удобно было сортировать или искать в базе данных? Или лучше отдельно получать контакты и отдельно получать конфернеции, при условии, что оптимизация нагрзуки на бд не имеет значения?

Я правильно вывожу новые элементы? Есть ли способ лучше? https://github.com/someApprentice/chat/blob/master/public/js/chat.js#L115-L127

Как сделать уведомление о том что пользватель набирает сообщение? Нужно обнавлять какую-нибудь запись в БД об этом? Наверно, для нужно сделать отдельную таблицу conversations. Вместе с этим, отпадает вопрос как лучше организовать конференции.

Как лучше сохранять не отправленные сообщения? Сохранять их в куках или в бд, или же это тоже можно как-то реализовать с помощтю js?

Ответы: >>990692 >>1000396 >>1000397
Аноним 2017/05/14 20:46:36  №990625 258
>>990502
Нафейхуа в файлообменнике жквери? Ну если только для реализации перетаксивания мышкой файла в окно браузера.
Ответы: >>990821
Аноним 2017/05/14 21:24:21  №990647 259
>>990594
Какой приятный интерфейс. Это бутстрап?
Ответы: >>990651
Аноним 2017/05/14 21:41:47  №990651 260
Аноним 2017/05/14 22:09:29  №990663 261
Я еще та безграмотная сучка, но
>афаризмы
исправь, ебана
Ответы: >>990679
Аноним 2017/05/14 22:10:47  №990664 262
Но общая идея сайта вообще заебца.
Аноним 2017/05/14 22:39:36  №990679 263
Аноним 2017/05/14 22:54:32  №990692 264
>>990621
Такая себе идея делать чат через обычные пхп-скрипты и автообновление аяксом. Я бы лучше вебсокеты взял, они надежнее и проще в реализации таких вещей. Ну и для вывода сообщений можно было бы использовать какой-нибудь шаблонизатор, погугли, их достаточно много.
Ответы: >>990696 >>990718
Аноним 2017/05/14 22:57:53  №990693 265
Чет бесит официальная документация. Неудобно пользоваться. Непонятно, нажимать мне на ссылку, уводяющую хуй знает куда (вдруг там чето важное), или нажать на ссылку в правой колонке, чтобы перейти к следующей статье (уебанская навигация, не сразу заметил). И вот это:
>В данном руководстве мы предполагаем, что ваш сервер имеет поддержку PHP и что все файлы, заканчивающиеся на .php, обрабатываются PHP.
Откуда у ньюфага сервер?
Ответы: >>990727 >>1000398
Аноним 2017/05/14 22:59:05  №990696 266
>>990692
Делаю сейчас как раз в заказе чаты на vue. Использую сокет.ио, пхп для апи (почти все сделал закрытым). Функционал похож на вк, местами чуть больше, местами чуть меньше. Я ебнусь короче. В чатах столько мелочей ебучих, ппц просто. Хотя уже немного осталось.
Сокеты маст хев конечно, но вот стабильности там кот наплакал, хорошо что я взял свою готовую архитектуру с других проектов, а то это только на еблю с неочевидными особенносятми сокетов пару недель ушла бы.
Аноним 2017/05/14 23:23:43  №990718 267
Ответы: >>990730 >>990775
Аноним 2017/05/14 23:30:38  №990725 268
Посоветуйте книг по хтмл и цсс?
Ответы: >>990859
Аноним 2017/05/14 23:30:50  №990727 269
Аноним 2017/05/14 23:32:45  №990730 270
>>990718
Жаль его. В 16 он "умнее" 99% остальных сверстников, просто потому что дрочит на какую-то левую хуету, на которую в его возрасте всем тупо насрать. А в 25 он уже спившийся неудачник, просто потому что маня-мир это одно, а реальность - другое.
Ответы: >>990736 >>1000398
Аноним 2017/05/14 23:41:57  №990736 271
>>990730
Прикольно кстати то, что я годам к 20 перестал себя считать умнее среднего гражданина прямо, а если оно и так - мне наплевать. Чего и вам желаю, будущие программисты. Я свой ум только по работе использую, чего он мне еще дает - хз. Скорее мешает, много рефлексирую.
Ответы: >>990739
Аноним 2017/05/14 23:43:58  №990739 272
>>990736
Ну это у многих так происходит. Сначала ты в 16 идеалист-максималист, и вокруг как будто тупое быдло, а к 20-25, понимаешь, что всё не однозначно в этом мире, и скорее сложно, и поэтому всем скорее похуй, ну и тебе уже тоже.
Ответы: >>990754
Аноним 2017/05/15 00:04:56  №990754 273
>>990739
К 25 понимаешь что жалко нас всех и все одинакового страдают, просто кто-то лучше это скрывает
Ответы: >>990833
Аноним 2017/05/15 00:39:07  №990774 274
http://ideone.com/e3pE2F

Почему у меня массив пустой? Я же регулярное выражение верно написал. Дальше оно должно было проверить и верные номера засунуть в массив.
Ответы: >>990797 >>990799 >>991279
Аноним 2017/05/15 00:43:19  №990775 275
Аноним 2017/05/15 01:57:38  №990797 276
>>990774
Ну начнем с того, что вы пиздоглазое мудоебище.
Ответы: >>990817
Аноним 2017/05/15 02:08:07  №990799 277
>>990774
У тебя ошибочка внизу написана
Ответы: >>990817
Аноним 2017/05/15 02:43:37  №990814 278
аноны помогите, не вижу что не так, видос не запускается
Ответы: >>990835 >>991276
Аноним 2017/05/15 03:06:02  №990817 279
Ответы: >>990826
Аноним 2017/05/15 03:44:40  №990821 280
>>990625
Я про порядок решения задач. Я сделал часть задач на JS, остались на JQuery. Вот и думаю, решать их или переходить к файлообменнику.
Аноним 2017/05/15 04:56:51  №990826 281
>>990817
Какой хитрый ход! Заменить массив на строку! Тебе нужно тщательней изучить как работает итерация массива. Задачки на массивы пропустил? Вот https://secure.php.net/manual/ru/control-structures.foreach.php хотя бы посмотри как работает первый пример.

Регулярное выражение очень далеко от верного.

Дальше, ты не засовываешь верные номера в массив, а выводишь совпадения найденные в строке. То есть, если написать preg_match("Hello World", '/^Hello (World)|(Cat)$/', $matches), то $matches будет равен array('Hello World', 'World').

https://secure.php.net/manual/ru/function.preg-match.php
>matches
>В случае, если указан дополнительный параметр matches, он будет заполнен результатами поиска. Элемент $matches[0] будет содержать часть строки, соответствующую вхождению всего шаблона, $matches[1] - часть строки, соответствующую первой подмаске, и так далее.

Очень плохо.

Тебе первым делом нужно итерировать массив $number, и, затем, на каждую итерацию выполнить проверку на твоё регулярное выражение.

Аноним 2017/05/15 05:00:33  №990827 282
Ответы: >>990829 >>990830
Аноним 2017/05/15 05:00:49  №990828 283
>>990826
Ты такой мерзкий и гнусный - это что-то.
Аноним 2017/05/15 05:02:01  №990829 284
Ответы: >>990830
Аноним 2017/05/15 05:07:00  №990830 285
Аноним 2017/05/15 05:35:40  №990833 286
Аноним 2017/05/15 05:38:44  №990835 287
Ответы: >>991276
Аноним 2017/05/15 05:59:57  №990840 288
66645.jpg (17, 464x171)
171x464
Сап аноны. Я пока недавно пишу на ООП и до сих пор не понял одно - зачем везде использовать объекты? Именно объекты а не статические свойства и методы, ведь в большинстве задач используется не больше одного экземпляра класса, зачем тогда нужны все эти копии? Какой смысл?
Ответы: >>990861 >>991276 >>991907
Аноним 2017/05/15 06:10:58  №990842 289
Ответы: >>990846 >>990847
Аноним 2017/05/15 06:48:08  №990846 290
Аноним 2017/05/15 06:54:03  №990847 291
>>990842
Это че типичный питонщик?
Ответы: >>990851
Аноним 2017/05/15 06:58:35  №990848 292
Анон, я тебя задачку принес.
http://ideone.com/iLb6fp

Если решишь — ты у мамы Лебедев.
Ответы: >>990862
Аноним 2017/05/15 07:03:07  №990851 293
Аноним 2017/05/15 08:11:30  №990859 294
Аноним 2017/05/15 08:16:01  №990861 295
>>990840
Считай, что обьект это контейнер, в котором хранятся свойства и методы определенной тематики и назначения.
Аноним 2017/05/15 08:36:23  №990862 296
Ответы: >>991189 >>992524
Аноним 2017/05/15 10:47:20  №990911 297
Вот тут https://habrahabr.ru/post/13726/ статья "Безопасный метод авторизации на PHP". Я его попробовал на своём сайте, всё работает. Но при некотором усложнении страницы, начинаются глюки. Такое ощущение, что POST срабатывает при обновлении страницы, причём регистрирует последнего пользователя, которого регистрировали, даже если все поля пустые.

В общем, не хочу даже разбираться, что это за НЁХ, а хочу просто переписать этот код следующим образом:
Вместо <form method="POST"> и <input name="submit" type="submit" value="Зарегистрировать"> поставить просто кнопку, при нажатии которой срабатывает джава-скрипт и собирает данные из инпутов, а затем отправляет их аяксом в отдельный php-скрипт, в котором практически тот же самый код, что и в статье. Ну и потом он возвращает ответ успешно/не успешно. Так вот - как это выглядит с точки зрения фен-шуя? Я не слишком усложняю?

(У меня в одном php-файле, отвечающем за отрисовку страницы, есть два дива: на одном одна вкладка, а на втором другая. И две кнопки, которые меняют display:block; для них, чтобы юзер мог открывать их, как вкладки. На второй вкладке и стоит форма для регистрации первого пользователя, плюс список существующих, с кнопками удаления и смены пароля.)
Ответы: >>991269 >>991276
Аноним 2017/05/15 10:48:15  №990913 298
Аноны, подскажите пожалуйста. Я не совсем понимаю в чем отличие else от elseif
Ответы: >>990962 >>991269
Аноним 2017/05/15 11:00:08  №990929 299
Ответы: >>990944
Аноним 2017/05/15 11:15:29  №990941 300
Ответы: >>991287
Аноним 2017/05/15 11:21:15  №990944 301
>>990929
Правильное у меня выражение.

^\s?([+]\s[7]|8)\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W[0-9]\W*[0-9]$

https://regex101.com/r/qF7vT8/3

Сначала идёт пробел, а может и нет. Потом +7 или 8, потом 10 цифр, между которыми может идти любой символ, кроме цифры, подчёркивания и буквы.
Ответы: >>990947 >>990968 >>991264
Аноним 2017/05/15 11:22:23  №990947 302
Аноним 2017/05/15 11:52:08  №990962 303
>>990913
elseif это такой же if
можно туда условие запихнуть
Аноним 2017/05/15 12:03:08  №990968 304
>>990944
1. \s - это не только пробел, но и табуляция, и переход на новую строку.
2. В первой скобке - зачем + и 7 в квадратные скобки взял? + просто экранируй, 7 - и в Африке 7.
3. [0-9] можно заменить на \d при желании.
4. А если бы 100 было цифр в номере, ты бы сто раз копипастил? Сделай нормально, а то нечитабельно же совершенно.
Ответы: >>991264
Аноним 2017/05/15 12:03:36  №990969 305
Почему replacements нумеруется в обратном порядке?
Ответы: >>990970 >>991264
Аноним 2017/05/15 12:05:09  №990970 306
Ответы: >>991122 >>991122
Аноним 2017/05/15 15:07:59  №991079 307
Доделал сейчас игру анона с компом в кубики. И что я могу сказать? Просидел 20 минут исправляя все. То есть сам я верно с самого начала все написал. Но где то забыл $ добавить, где-то ; и так далее. И это сейчас еще малый объем работы. Что же будет дальше? Надо срочно улучшать внимательность
Ответы: >>991104 >>991116
Аноним 2017/05/15 16:09:09  №991104 308
>>991079
Потому что нужно немного написать и сразу проверять / тестировать
Аноним 2017/05/15 16:23:53  №991116 309
>>991079
Опыт придёт с практикой.
В IDE когда будешь работать, то многие ошибки там будут подчёркиваться или иначе выделяться.
Аноним 2017/05/15 16:28:36  №991122 310
>>990970
>>990970

а запускать пробовал? вангую автор просто обосрался
Аноним 2017/05/15 17:23:13  №991170 311
Репост из предыдущего треда:

>>988855
Спасибо за понятный и доходчивый ответ по индексам. А можно ещё задачу, где нужно подумать над проставлением индексов? Ты вроде раньше кому-то предлагал БД для борды проектировать, но я, к сожалению, не смог этот пост найти c полным текстом задачи.

Ответы: >>991237
Аноним 2017/05/15 17:46:29  №991189 312
>>990862
Решение так себе. Попроще сделать не мог?
Ответы: >>991329
Аноним 2017/05/15 18:16:11  №991213 313
>>990295
Недавно это делал, но на шарпе. В классический mvc это делается через методы, которые принимают на вход get-запрос. А в самом вью вместо статики передается вызов этого метода.
Аноним 2017/05/15 18:17:55  №991215 314
Зачем в моделях определять её свойства? Допустим в TDG я делаю отдельный класс для работы с базой, но саму модель я не трогаю, но свойства определены и никак не задействованы, а класс модели использую как хелпер в контексте этой модели, что я делаю не так?
Ответы: >>991228
Аноним 2017/05/15 18:24:55  №991224 315
>>990295

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

- фраза для поиска
- название колонки
- выбранная колонка и направление сортировки

Ну а уже функция должна сравнивать текущую сортировку с названием колонки и выбирать нужное направление сортировки.
Ответы: >>991482
Аноним 2017/05/15 18:29:44  №991228 316
>>991215

Если свойства никак не задействованы, зачем их делать? не нужно копировать то, что ты где-то увидел, нужно думать, зачем в коде та или иная строчка.

Твоя проблема в непонимании слова "модель". Там, где стоят свойства, модель предствавляет собой объект, который хранит информацию о какой-то сущности и у которого есть все описанные свойства. А TDG такой "моделью" не является, это объект для выполнения запросов к БД и ему конечно эти свойства не нужны. Но когда ты например запрашиваешь список студентов, тут как раз хорошо использовать модель для представления студента и возвращать список таких объектов-моделей.

Не путай "модель" (сущность) студента с компонентом "модель" из MVC. Это не одно и то же.

> Допустим в TDG я делаю отдельный класс для работы с базой,
Как-то странно написано. "в TGD"? Ты наверно имел в виду, "я сделал класс, который реализует паттерн TDG".

> а класс модели использую как хелпер в контексте этой модели,
Вот это не понял.

Ответы: >>991236
Аноним 2017/05/15 18:43:32  №991236 317
Screenshot2.jpg (68, 716x770)
770x716
Screenshot3.jpg (74, 702x529)
529x702
>>991228
>А TDG такой "моделью" не является
Так я не называл её моделью, а в моём понимании модель это отдельный класс для свойств сущности. Вот я создал класс модели и задал свойства (1 пик), также в нем есть какие то методы которые относятся к ней. Второй класс для работы с бд (2 пик) , там я реализую функционал работы с бд и только его. Вопрос в том, как можно использовать свойства в модели (1 пик), и нужны ли они вообще?
Ответы: >>991239 >>991242
Аноним 2017/05/15 18:44:07  №991237 318
>>991170

Насчет борды, задача такая: есть борда, нужно сделать таблицы для хранения постов/тредов на ней и нужно сделать SQL запрос(ы) для постраничного вывода тредов, причем для каждого треда выводится ОП-пост и 3 последних поста. Треды отсортированы по дате последнего сообщения. Позже при желании можно прикрутить бамплимит (после X постов тред перестает подниматься) и сажу (посты которые не поднимают тред).

Также, если хочется задачу посложнее и пореалистичнее, в одном из старых тредов была задача про БД для сервиса вроде itunes: http://arhivach.org/thread/117571/#568993

Аноним 2017/05/15 18:46:23  №991239 319
>>991236

А как у тебя первый класс Abiturient используется? Зачем он вообще нужен?

Обычно его используют для представления информации об абитуриенте. Например его можно передать в функцию сохранения абитуриента в БД, а функция поиска абитуриентов может возвращать результат в виде таких объектов.

У тебя же по сути в качестве модели класс TDG использует массив, а не объект.
Ответы: >>991270
Аноним 2017/05/15 18:48:44  №991242 320
>>991236

И еще, вот у тебя есть строчка

$this->abiturientData = new Abiturient;

она очень странная. А зачем тебе внутри TDG хранить одну пустую модель абитуриента? Зачем TDG вообще что-то сохранять? Это же просто не нужно. Если ты хочешь вставить абитуриента в БД, ты его передашь как аргумент в функцию вставки.
Аноним 2017/05/15 19:00:17  №991264 321
>>990969

Просто так. Это ни на что не влияет.

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

>>990968

Уточнения.

[+] это и есть примерно то же что \+

Если строго говорить, то \d это любая десятичная цифра из любого алфавита, а не только арабские цифры 0-9. Определение из мануала PCRE:

> \d any character that matches \p{Nd} (decimal digit)

Если вдруг любопытно, какие еще бывают цифры, то вот ссылочки:

- http://www.fileformat.info/info/unicode/category/Nd/list.htm
- https://en.wikipedia.org/wiki/Numerals_in_Unicode

>>990944

Копипасту надо убрать. Используй круглые скобки и квантификатор {N} для указания числа повторений.

Также, \W - это ведь любой символ, кроме букв, цифр и знака подчеркивания. То есть например знаки вопроса, звездочки итд. Слишком широко.

Ответы: >>991323
Аноним 2017/05/15 19:04:55  №991269 322
>>990913

else = "иначе, если ни одно из условий сверху не сработало, выполнить этот блок"
elseif (условие) = "иначе, если условия выше не сработали и если выполняется условие, выполнить этот блок"

То есть else всегда идет самым последним и в нем не указывается условие.

>>990911

Плохо, что ты не хочешь разобраться в проблеме, а убегаешь от нее. Лучше найди в чем была причина ошибки.

> Такое ощущение, что POST срабатывает при обновлении страницы
если страница загружена методом POST то конечно при обновлении он отправится повторно. Погугли про Post/Redirect/Get а еще лучше прочти мой урок про формы https://github.com/codedokode/pasta/blob/master/forms.md

> На второй вкладке и стоит форма для регистрации первого пользователя, плюс список существующих, с кнопками удаления и смены пароля.
А они защищены? Неавторизованный злоумышленник не сможет отправить такой запрос, который поменяет пароль другому пользователю или удалит его?


Ответы: >>992615
Аноним 2017/05/15 19:07:40  №991270 323
Screenshot4.jpg (38, 535x416)
416x535
>>991239
>У тебя же по сути в качестве модели класс TDG использует массив, а не объект.
Ну точно, можно в качестве аргумента и модель передать, я кажется понял все спасибо тебе.

А еще вопрос такой, вот в контроллере я могу кроме как обработки шаблона, делать методы нужные для конкретных шаблонов, то есть правильно ли так делать? Или же все нужно в отдельные классы хелперы выносить?
Ответы: >>991281
Аноним 2017/05/15 19:17:27  №991276 324
>>990840

В уроке писал про статические методы: https://github.com/codedokode/pasta/blob/master/arch/di.md#Чем-плохи-классы-из-статических-методов

Главная проблема в том что отсутствует DI и в коде явно прописаны все зависимости и код получается спутанный.

>>990911

В статье есть много вещей которые копировать не стоит. Например не стоит использовать MyISAM, стоит ставить внешние ключи, не стоит использовать устаревшие функции вроде mysql_select_db.

>>990835

Это же отношения к вопросу вообще не имеет. Если бы ты открыл сайт https://github.com/aFarkas/html5shiv то прочел бы

> This script is the defacto way to enable use of HTML5 sectioning elements in legacy Internet Explorer.

Ты бы изучил что делает библиотека, прежде чем ее использовать.

>>990814

Проверяй:

- правильно ли использованы теги, вот например инфа: https://developer.mozilla.org/ru/docs/Web/HTML/Element/video
- верная ли ссылка на файл, то есть что загружается если составить абсолютную ссылку на файл и попытаться открыть
- в чем вообще проблема: ссылка неверная, файл не загружается, или загружается но не воспроизводится из-за неподдерживаемого формата
- в каком формате закодирован файл (не какое расширение)
- поддерживает ли моб. браузер такой формат видео ( https://developer.mozilla.org/ru/docs/Web/HTML/%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D1%80%D0%B6%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D0%BC%D0%B5%D0%B4%D0%B8%D0%B0_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D1%8B )
- попробуй открыть страницу не в WebVIew, а в встроенном браузере андроида и в других браузерах, если они есть

Ответы: >>991337 >>992615
Аноним 2017/05/15 19:20:10  №991279 325
>>990774

Будь внимательнее. У тебя много ошибок:

- в регулярке нет разделителя в конце и нет флага u (хотя он тут ни на что не влияет, но все же)
- внизу выводятся ошибки
- переменной $number не существует, а ты ее пытаешься использовать
-preg_match работает только с одним номером за раз, а не принимает на вход массив номеров

Аноним 2017/05/15 19:24:46  №991281 326
>>991270

Конечно ты делаешь неправильно. Во-первых, единственные публичные методы у контроллера - это обычно методы вида "вывести страницу такую-то/обработать запрос".

Метод форматирования даты лучше всего сделать статическим в отдельном классе-хелпере реализующем паттерн Utility Class (класс с статическими методами).

Непонятно зачем в контроллере свойство date. Это свойство контроллера?

Неправильно выбрано название datamodel. Оно должно называться abiturientGateway.

Неправильно что ты используешь одну переменную $date для хранения строки и объекта.

Неправильно называть переменную dataArr так как это название ничего не значит: любая переменная хранит данные.

Не надо сокращать errors как err.

В помощь: https://github.com/codedokode/pasta/blob/master/good-code.md
Ответы: >>991285 >>991291
Аноним 2017/05/15 19:31:12  №991285 327
>>991281
>Непонятно зачем в контроллере свойство date. Это свойство контроллера?
Да, это свойство выводит текущую дату, и её наверно тоже в отдельный класс насколько я понимаю
Аноним 2017/05/15 19:34:48  №991287 328
>>990941
Что ты пытаешься сделать во втором цикле?

Во-первых count() считает сколько элементов в массиве. В php строка это строка, а не массив символов.

Во-вторых, в цикле for ты сравниваешь переменную $i с 0, а не присваиваешь его ей. Оператор ==, это сравнение а не присваивание. Почему ты решил что должно быть сравнение?
Затем ты сравниваешь $i <= $len, и цикл обойдет $len + 1 раз, потому что ты начинаешь с 0. Цикл будет выполняться пока значение второго аргумента истинно, то есть в твоем случае $i <= $len, цикл будет выполняться от 0 до и включая $len. Вот пример https://3v4l.org/EPLQc посчитай сколько раз выполнился цикл. Если ты хочешь чтобы цикл обходил ровно $len раз, то тебе нужно либо начинать цикл с 1, либо выполнять этот цикл пока $i меньше $len $i < $len.

Я тебе уже говорил, что ты делаешь из $CorrNumb не массив правильных номер а массив совпадений. Если ты хочешь получить массив правильных номеров, то лучше сначала создать еще массив $matches и затем поместить его в preg_match обычно так и делают. И далее уже добавлять в $CorrNumb >строку, соответствующую вхождению всего шаблона

if (preg_match($regexp, $number, $matches)) {
//добавляем строку в $CorrNumb
}

Перечитай как работает функция preg_match.

Для чего нужна переменная $regexpRepl?

Ты нарочно делаешь такое форматирование кода? Перечитай второй поста треда.
>- переменные и функции пишутся с маленькой буквы, подчеркивание не используется, используется camelCase, пример: $x, $numberOfPeople, printResults()

По-прежнему, очень много ошибок.
Аноним 2017/05/15 19:39:04  №991291 329
>>991281
> в отдельном классе-хелпере реализующем паттерн Utility Class (класс с статическими методами).
Зачём всё подряд из Java тянуть? В PHP ведь можно поместить функции в неймспейс, а Composer подгрузит (правда, не без пинка). Нет ничего плохого в чистых функциях: https://nikic.github.io/2012/08/10/Are-PHP-developers-functophobic.html
Всякие Utils лишь утяжеляют код ненужными приставками, когда можно написать use function namespace\foo;
Ответы: >>991557
Аноним 2017/05/15 20:16:44  №991320 330
>>988868 (OP)
инструктор сказал что форыч в пхп лучше не юзать.
поч кто знает?(
Ответы: >>991388 >>991412
Аноним 2017/05/15 20:24:04  №991323 331
>>991264
>Если строго говорить, то \d это любая десятичная цифра из любого алфавита, а не только арабские цифры 0-9
Ты чо дохуя умный штоле еба?777 Ща как уебу нахуй спасибо, не знал
Аноним 2017/05/15 20:49:04  №991329 332
>>991189
С удовольствием рассмотрю твою версию.
Ответы: >>991493
Аноним 2017/05/15 21:00:20  №991337 333
>>991276
>не стоит использовать MyISAM
Воу-воу-воу! Можно, пожалуйста, поподробнее, почему? Я для своего проекта выбрал ее, потому что пишут что она быстрее при определенных условиях (которые у меня соблюдаются), транзакции мне тут не нужны. Какие подводные?
Ответы: >>991409 >>991558
Аноним 2017/05/15 22:03:17  №991388 334
Аноним 2017/05/15 22:27:52  №991409 335
>>991337
Не быстрее. Единственное его приимущество - FULLTEXT SEARCH.
Ответы: >>991462 >>991558
Аноним 2017/05/15 22:29:54  №991412 336
>>991320
Он даун просто. Форыч норм, единственное чем он сбивает, что работает с копией массива, а если хочешь менять значения перебираемого массива inplace - то нужно явно передавать значения по ссылке. Но вообще лучше так не делать вовсе.
Ответы: >>991431
Аноним 2017/05/15 22:53:01  №991431 337
>>991412
>работает с копией массива
php7 же, не?
Ответы: >>991558
Аноним 2017/05/15 23:26:56  №991459 338
Аноним 2017/05/15 23:32:43  №991462 339
>>991409
Поломалась таблица MyISAM когда вставлял данные и отключили свет. Я так понимаю, с InnoDb такого бы не произошло?
Ответы: >>991559
Аноним 2017/05/16 00:09:11  №991482 340
>>991224
Проблема в том, что сохранить текущий тип сортировки можно только в сессию, ведь при вызове новой страницы - программа выполняется с нуля. ->в адресную строку попадает адрес с типом сортировки->FrontController получает ссылку, разбивает, запускает нужный контроллер и переадаёт ему параметры...
Ответы: >>991559
Аноним 2017/05/16 00:29:41  №991493 341
>>991329
Я пытался переписать на twig, но чет не получается. Там нет функций.
Ответы: >>991504 >>991559
Аноним 2017/05/16 00:50:03  №991504 342
>>991493
Заскринь код и выложи картинкой, чо как маленький? Твоя версия хоть умещается на экране?
Ответы: >>991512
Аноним 2017/05/16 01:08:27  №991512 343
Ответы: >>991806 >>992013
Аноним 2017/05/16 06:33:56  №991557 344
>>991291

Не подгрузит. PSR-4 работает только с классами, функции использовать (и импортировать) неудобно. Да и я не вижу большой разницы между статическим методом и функцией. Удобнее сделать именно класс.

Дело тут не в боязни, а в том, что просто с функциями менее удобно работать. Да и они не вписываются нормально в неймспейсы. Ведь в PSR-4 неймспейс соответствует папке, и непонятно, как хранить функции? Каждую в своем файле? В одном файле? Удобнее все же сгруппировать их в класс, а ностальгирующие по Го, Питонам и Руби могут отправиться писать на этих языках.

Кстати в Го примерно та же проблема: там модуль соответствует папке, и просто непонятно как раскладывать функции по файлам в этой папке. Ужасно сделано.
Аноним 2017/05/16 06:43:27  №991558 345
>>991337

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

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

>>991409

С какой-то версии он стал доступен и в InnoDB.

>>991431

php7 тут не при чем. Работа с копией массива это правильная вещь, так как это значит, что цикл работает предсказуемо даже если по ходу выполнения менять массив. Иначе как ты поймешь, как этот цикл будет работать, если сам массив меняется по ходу выполнения?


>>991459

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

Получение соседних id я бы советовал сделать отдельным методом.

В контроллере у тебя встречаются длинные выражения вроде

$this->data['quote']
$this->request->getProperty('quote_id')

Не надо их копипастить, удобнее сделать переменную и использовать ее.

if в контьроллере лучше перевернуть, чтобы в начале шла более короткая ветка. Если в конце ее поставить return , то else будет не нужен.

Ответы: >>991624
Аноним 2017/05/16 06:55:43  №991559 346
>>991462

Увы, не знаю. По идее в InnoDB есть логи, так что в теории не должна поломаться (но может стоит проверить на практике).

Тут написано что проблема повреждения таблиц в MyISAM есть: https://www.percona.com/blog/2006/07/30/mysql-crash-recovery/

Вообще, про сравнение MyISAM и InnoDB много копий сломано, например:

http://blog.danyll.com/myisam-vs-innodb/
http://stackoverflow.com/questions/20148/myisam-versus-innodb
https://www.percona.com/blog/2009/01/12/should-you-move-from-myisam-to-innodb/

Я всегда стараюсь использовать InnoDB.

>>991482

Текущий тип сортировки может быть указан в query string-параметрах:

/index.php?sort=-name&page=2&query=Ivan

Ты мыслишь не в парадигме REST. REST говорит о том, что параметры отображения страницы указываются в URL, а не спрятаны в каких-то сессиях, куках и тд.

То есть в REST мы сортировку указываем в URL.

Если сортировку хранить в сессии это только вызовет проблемы, так как куки и сессия общие для нескольких вкладок браузера и они будут влиять друг на друга.

Соответственно сессия тут не нужна. Определяешь тип сортировки в контроллере и передаешь переменную в шаблон.

>>991493

Такие сложные вычисления не надо делать в шаблоне. Шаблон для отображения данных.

Также, функции в твиге есть, и их можно туда добавлять. Но не для таких целей.

Ответы: >>991680
Аноним 2017/05/16 06:58:45  №991560 347
Ответы: >>991624
Аноним 2017/05/16 07:11:21  №991562 348
Аноны, а что делать если на ideone когда ввожу код и жму на запуск, то тупо все сбрасывается, а страница перезагружается?
Ответы: >>991566 >>991569
Аноним 2017/05/16 07:34:24  №991566 349
Ответы: >>991572
Аноним 2017/05/16 07:39:20  №991569 350
>>991562

Это какой-то баг, попробйу почистиь кеш браузера и зайти снова. Ну или использовать другой сайт, они ищутся по словам "run php code online".
Ответы: >>991572
Аноним 2017/05/16 07:42:16  №991572 351
>>991566
А чем он лучше?
>>991569
СпаПсибо. Почистил кеш и все заработало
Аноним 2017/05/16 10:43:28  №991624 352
>>991560
Да, лучше. А еще лучше в следующем проджекте взять эту или аналогичную ORM, как я и сделаю.

>>991558
>Если страница не найдена, то надо отдавать ошибку 404.
Так и сделаю.
Аноним 2017/05/16 11:44:33  №991644 353
123500114042.png (119, 436x435)
435x436
>>991459
Ну все интереснее, чем в миллионный раз обсуждать, как кто-то циклы или массивы понять не может
Аноним 2017/05/16 13:21:40  №991670 354
Аноны, а с каким багажом знаний можно начинать фрилансить за сущие копейки? Вот прям вообще за еду
Ответы: >>991681 >>991682
Аноним 2017/05/16 13:47:39  №991680 355
>>991559
КАК ОПРЕДЕЛИТЬ ТИП СОРТИРОВКИ? СКАЖИ ПРЯМО, хватит повторять - "засуть тип сортировки в адресную строку", параметры всегда там! Все там! Но нажатием на ОДНУ и ту же ссылку НЕВОЗМОЖНО передать разные параметры.
Ответы: >>991691
Аноним 2017/05/16 13:48:12  №991681 356
>>991670
Пиздец, вы серьёзно думаете, что фриланс выход? И решение всех ваших проблем?
Ответы: >>991688
Аноним 2017/05/16 13:50:09  №991682 357
>>991670
Можешь прямо сейчас начинать. 90% фриланса это абсолютно недееспособные дцпшники, ты никого не удивишь этим.
Аноним 2017/05/16 13:53:06  №991688 358
>>991681
Я не хочу фрилансить постоянно. Просто чтобы узнать как работать с людьми заказчиком, заставлять себя укладываться в сроки и тд
Ответы: >>991691
Аноним 2017/05/16 13:56:48  №991691 359
>>991680

Нужно генерировать разные ссылки в зависимости от текущей сортировки. То есть если у нас включена сортировка +name, то ссылка на колонке должна содержать -name.

>>991688

Для начала, как попробуй зайти на сайт фриланса и изучить имеющиеся там задания. Там есть категории, изучи их. Там есть faq и помощь. Изучив, можешь уже задавать вопросы.
Ответы: >>991740
Аноним 2017/05/16 14:28:45  №991702 360
Cделал задачку на цикл ни разу не посмотрев на подсказку. Ура :3 http://ideone.com/Ttm21y
Ответы: >>992728
Аноним 2017/05/16 15:35:08  №991740 361
>>991691
>Нужно генерировать разные ссылки в зависимости от текущей сортировки.
Как запоминать текущую сортировку?
>То есть если у нас включена сортировка +name, то ссылка на колонке должна содержать -name.
Что? Нажимаю на name - контроллер получает параметры /name/asc
Нажимаю снова на name - контроллер получает все те же параметры /name/asc КАК запомнить и переключить ASC в DESC?
Ответы: >>991789 >>991808 >>991903
Аноним 2017/05/16 16:34:13  №991789 362
>>991740
Ты совсем необучаемый, тебе уже разжевали ответ донельзя. Генерируешь ссылку /name/asc, кликаешь по ней, контроллер получает /name/asc. При выводе шаблона меняешь asc на desc и получаешь ссылку /name/desc. Тыкаешь опять по этой ссылке - в контроллер уже прилетает desc.
Ответы: >>991808 >>992728
Аноним 2017/05/16 16:57:36  №991806 363
>>991512
Што. Это. Блядь. Такое?
Ответы: >>991985 >>991988
Аноним 2017/05/16 17:00:12  №991808 364
>>991740
>>991789
Я бы передавал тип сортировки в GET переменной:

/name?sort_type=ask
Ответы: >>991810
Аноним 2017/05/16 17:03:01  №991810 365
>>991808
можно еще в виде выпадающего списка сделать, но тогда все равно надо будет писать функцию, чтобы текущий тип сортировки был выбран
Аноним 2017/05/16 17:18:43  №991821 366
Алсо, есть сейчас разница какую кодировку выбирать для своей БД? Например если я планирую хранить только русский-английский текст и цифры, всё равно брать utf8_unicode_ci?
Ответы: >>991822 >>992728
Аноним 2017/05/16 17:20:54  №991822 367
>>991821
Бери utf8mb4_unicode_ci чтобы можно было эмодзи хранить :3
Ответы: >>992728
Аноним 2017/05/16 18:21:12  №991856 368
Подскажите где взять среду для пхп ?
Ответы: >>992728
Аноним 2017/05/16 18:25:50  №991859 369
php-functions-t1.png (129, 750x658)
658x750
Подскажите, что в этом задаче писать ? Вообще не могу догнать, что в функцию захуячить надо. Оригинал задачи решил.
Ответы: >>992482 >>992728
Аноним 2017/05/16 18:43:26  №991867 370
Вроде же понял, что из себя представляют циклы. Ничего сложно же. А вот в задачах на них просто ступор. Что-то пишу, а это не работает, переделываю и это тоже не работает. Гуглить и спрашивать помощи тоже не хочу. И уже времени нет чтобы дальше решать. Завтра просижу весь день, но решу эти задачи
Ответы: >>992728
Аноним 2017/05/16 19:15:55  №991887 371
Ребят, а возможно ли сделать сайт в онлайн конструкторе, скачать его и вручную (оффлайн) сделать обычным, будто ты сам его делал? Или в таких сайтах всегда много подводных камней?
Ответы: >>991894
Аноним 2017/05/16 19:31:22  №991894 372
>>991887
Сразу вспомнился FrontPage с тоннами генерируемого дерьма на кубический сантиметр полезного кода.

О главном: ты не сможешь отредактировать его, если не разбираешься.
Аноним 2017/05/16 20:01:14  №991903 373
>>991740

если (в URL стоит ?sort=name/asc) {
выводим ссылку ?sort=name/desc
} иначе {
выводим ссылку ?sort=name/asc
}

Ответы: >>992153
Аноним 2017/05/16 20:05:47  №991907 374
>>990840
>Именно объекты а не статические свойства и методы, ведь в большинстве задач используется не больше одного экземпляра класса, зачем тогда нужны все эти копии? Какой смысл?
А ты можешь, например, изменять состояние статических свойств?
Аноним 2017/05/16 20:44:18  №991932 375
Запилил тут по гайду мини казино
http://ideone.com/W1iHIy
Что я сделал не так и как можно сделать лучше?
Ответы: >>991946 >>992728
Аноним 2017/05/16 21:13:06  №991946 376
>>991932
"дабл дабл" не выведет же, даже если одинаковые числа сгенерит
Ответы: >>991975
Аноним 2017/05/16 21:44:08  №991964 377
Приветствую, господа программисты.
Нужен совет.
Хочу написать сайт-энциклопедию. Грубо говоря у каждой статьи в ней должна быть своя категория, группа, дата и многое другое. После чего хочу организовать по всей энциклопедии удобную группировку по датам и т.д.
Изучил HTML, CSS и так понимаю, дальше надо копать в сторону MySQL, PHP(Ведь нужен, да?) и что еще?
В общем, что нужно еще для сайта-энциклопедии?
Ответы: >>992012 >>992065 >>992728
Аноним 2017/05/16 21:58:40  №991975 378
Аноним 2017/05/16 22:34:32  №991985 379
Ответы: >>992013
Аноним 2017/05/16 22:36:45  №991988 380
Ответы: >>992013
Аноним 2017/05/16 23:43:14  №992012 381
>>991964
Ты описал википедию
Аноним 2017/05/16 23:48:43  №992013 382
>>991988
>>991985
Как это относится к PHP? Как это >>991512 заставить работать вообще? А главное, зачем это мне, новичку, в этом треде?
Ответы: >>992020 >>992054
Аноним 2017/05/17 00:06:31  №992020 383
Аноним 2017/05/17 01:46:57  №992054 384
>>992013
>Как это заставить работать вообще?
Накатить jekyll.
Аноним 2017/05/17 01:54:50  №992057 385
2017-05-1701-55-56.png (174, 1920x1080)
1080x1920
Крудошлепствую дальше.

Сегодня запилил редактирование. Пожалуй 2/3 уже сделал. Правда, дохуя чего переделать надо из уже сделанного.
Аноним 2017/05/17 04:22:17  №992065 386
>>991964
>Изучил HTML, CSS
Хуя ты погромист. Разметку в ворде теперь выучи.
Аноним 2017/05/17 07:17:43  №992082 387
Ответы: >>992092 >>992093 >>992095
Аноним 2017/05/17 08:28:53  №992092 388
Ответы: >>992095
Аноним 2017/05/17 08:29:30  №992093 389
>>992082
В другой раз спрашивай в линукс-треде, питух. Больше тебе помогать не буду.
Аноним 2017/05/17 08:40:46  №992095 390
>>992082
>>992092

Вот не надо такие советы давать, и не надо им следовать так как вполне может сломаться система. Надо давать объяснения, а не умничать тут.

php7 есть не во всех версиях дебиан. Для начала, ознакомься, какие версии вообще существуют: https://wiki.debian.org/ru/DebianReleases

Ты скорее всего сидишь на stable версии - а туда включают только пакеты, которые какое-то время оттестированы и в которых большинство багов выявлено и исправлено. php7 пока не считается "стабильным" разработчиками debian.

Соответственно, выхода 2:

- апгрейдиться на более новую версию дебиана, testing или даже unstable (если это виртуальная машина то в принципе тебе терять особо нечего)
- подключить сторонний репозиторий вроде dotdeb, который содержит нужную версию php: https://www.dotdeb.org/

Помни, что подключая сторонний репозиторий ты добавляешь его цифровую подпись и автоматически начинаешь доверять его авторам. Они могут при установке php или любого другого пакета одновременно заменить любые программы и библиотеки в твоей системе, например, установить бекдор, если захотят, и выполнить любой код от имени root (по умолчанию бекдор могут установить только разработчики дебиан).

Почему-то про это никто не пишет. Кругом только люди, которые бездумно копируют инструкции, не понимая, что они делают.
Ответы: >>992511
Аноним 2017/05/17 09:28:35  №992103 391
Ответы: >>992728
Аноним 2017/05/17 10:54:50  №992123 392
Screenshot3.jpg (68, 777x375)
375x777
Аноны, объясните пожалуйста почему в этих местах стоят скобки?
Ответы: >>992128 >>992154 >>992715
Аноним 2017/05/17 11:13:22  №992128 393
>>992123
В первом случае для наглядности, наверное.
А в остальных, чтобы не рвать строку типа:
"блаблабла это", $значениеблаблабла, "продолжение текста"
Ответы: >>992129
Аноним 2017/05/17 11:14:41  №992129 394
>>992128
То есть это совсем не обязательно? В таких местах я сам могу ставить скобки для удобности?
Ответы: >>992130
Аноним 2017/05/17 11:16:54  №992130 395
Аноним 2017/05/17 11:26:43  №992134 396
>>988868 (OP)
Почему Symfony и Zend считается ынтырплайз фреймворкaми, а остальные нет?
Ответы: >>992715
Аноним 2017/05/17 12:07:50  №992153 397
Снимок.JPG (58, 1076x530)
530x1076
2.JPG (50, 1059x472)
472x1059
>>991903
Да я упорот был когда спрашивал, после 12 часовой смены идти учить пхп вообще плохая идея. Щас сел бодрый, за 15 минут решил проблему с сортировкой.
Класс не будет называться студент,
это ошибка. Условия не прозрачные и запутанные, i know. Условия здесь для нормального отображения когда сортировка пользователем не задана, а то начинают в строку запроса попадать лишние слэши, да типы сортировок по умолчанию.
Ответы: >>992188 >>992715
Аноним 2017/05/17 12:08:56  №992154 398
>>992123
Первый случай - для наглядности. В целом по приоритету операций умножение и так будет первым. Однако я сам всегда руками скобки ставлю от греха подальше, и для лучшей наглядности, притом на любых языках.
Второе опять же для удобства, можно и без этого, но лучше не надо, не будь говном.
Ответы: >>992157
Аноним 2017/05/17 12:12:59  №992157 399
>>992154
Но почему тогда во втором случае стоят фигурные скобки? Можно так же ставить обычные?
Ответы: >>992196 >>992715
Аноним 2017/05/17 13:09:28  №992188 400
>>992153

Функция должна возвращать ссылку, а не выводить. И нежелательно формировать HTML код в функции, а не в шаблоне. И htmlspecialchars не забывай.
Аноним 2017/05/17 13:50:38  №992196 401
>>992157
во вотором случае имя переменной подставляется. КОгда строчка будет выводиться, будет не имя апеременной, а ее значение.
Аноним 2017/05/17 14:00:21  №992198 402
У меня при больших кусках кода на всех сайтах, где можно потестить код выдает ''превышено время ожидание, бла бла бла'' и тд. Это значит надо переходить на программу? Или там тоже может быть такое, а вся проблема в моем коде?
Ответы: >>992206
Аноним 2017/05/17 14:14:01  №992206 403
>>992198

Это значит твой код выполняется дольше 3-5 секунд что довольно много. Может там вечный цикл? Попробуй уменьшать код и опытным путем найти тормозящее место.

Также можно мерять время выполнения через microtime(true).

Чтобы снять ограничение, надо установить на компьютер PHP и запускать код у себя, инструкции в ОП посте.
Ответы: >>992215
Аноним 2017/05/17 14:27:25  №992215 404
>>992206
Cпасибо большое! Я думал сойду с ума уже, но не решу задачу с айфоном в кредит. Час все проверял, а оказалось, что всего лишь лишняя фигурная скобка поставлено и сайт как на зло не говорил об этом. Но и php на комп поставлю. Все равно потом придется
Ответы: >>992274 >>992275
Аноним 2017/05/17 15:01:48  №992224 405
Снимок.JPG (15, 465x140)
140x465
Почему это не работает? Если не хеадерить и вывести на экран, то получаем закодированную строку, но если хеадерить - то получаем нихуя, как буд-то и не кодировали, в адреснюу строку попадает та же кириллица из $_POST.
Ответы: >>992229
Аноним 2017/05/17 15:05:40  №992229 406
>>992224

Браузеры иногда отображают адресную строку в декодированном виде. Также они иногда декодируют punycode в доменах. Попробуй кликнуть в адресную строку или скопировать УРЛ - может он выведется как есть.

Также, содержимое Location можно увидеть в отладчике на вкладке Network.
Ответы: >>992239
Аноним 2017/05/17 15:18:14  №992239 407
>>992229
Годный ответ, действительно в отладчике увидел, что ссылка закодирована, в итоге ошибка оказался не в том, что строка не кодируется, а совершенно в другом. thx.
Аноним 2017/05/17 16:35:07  №992274 408
>>992215
Ставь error_reporting(-1) перед кодом.
Ответы: >>992715
Аноним 2017/05/17 16:36:39  №992275 409
>>992215
Ты задачу-то покажи - инфа 99%, что там не всё идеально, поскольку можно улучшить. Либо вообще неправильно работает, хотя ОП вроде указал всё сейчас в учебнике для ориентира.
Аноним 2017/05/18 00:07:36  №992457 410
2017-05-1800-09-39.png (117, 1920x1080)
1080x1920
2017-05-1800-09-34.png (97, 1920x1080)
1080x1920
2017-05-1800-09-24.png (122, 1920x1080)
1080x1920
У меня есть подозрение, что мои класс MysqlModel не должен быть в Models, а Request и Errors не должны быть в Core. Тогда где они должны быть?
Ответы: >>992497
Аноним 2017/05/18 00:34:10  №992468 411
Чем опасно использование

<meta name='data' content='<?php echo META_JSON_DATA; ?>'>

?
Ответы: >>992486
Аноним 2017/05/18 00:58:19  №992482 412
>>991859
Че молчите то. Бамп
Аноним 2017/05/18 01:14:11  №992486 413
>>992468
тем, что я тебе в челюсть двину... Хотя бы санацию через htmlspecialchars делай, мало ли что там
Ответы: >>992590
Аноним 2017/05/18 01:22:26  №992487 414
Здесь ведь любители Idea / PHPStorm есть?

В общем, есть один абстрактный класс. Назовём его Animal. У абстрактного класса есть некий порождающий этот же класс метод. Допустим, что там просто
return clone $this;
Как мне в PHPDoc-блоке отметить, что этот метод возвращает не просто Animal, а для
class Cat extends Animal {}
этот метод возвращает Cat, ну и для собаки соответственно Dog?

Док вида
@return static
@return self
@return $this

Идеей не кушаются.
___________________-
Аналогично как мне задать в phpdoc-блоке некое виртуальное свойство, допустим $__clone_shit, которое тоже возвращает именно конечного потомка (static::class), а не Animal.


Это нужно только для того, чтобы я нормально видел ссылки на используемые поля и чтобы мне Идея сразу подсвечивала методы/поля наследников, и мне не приходилось через phpdoc писать
@var Cat $cat


Само собой я знаю, что есть метод лоб и можно просто писать у каждого наследника свой phpdoc-блок и переопределять функцию, которая просто будет делать return::parent(... но можно ли это сделать автоматически, без извращений?
Ответы: >>992701 >>992715
Аноним 2017/05/18 01:56:56  №992497 415
>>992457
Код стрёмный. По первому скрину:
Выносить действия конструктора в отдельный метод init смысла нет, код от этого не становится легче (на Yii не смотри, у них много сомнительных практик используется). Ну и ответь на вопрос, чем вообще характеризуется "Запрос"? Как минимум типом (GET, POST и т.д) и путём (/user/1). Без этих вещей запрос существовать не может, поэтому логично потребовать их в конструкторе.
Класс Request у тебя неудобный, я не могу из консоли создать объект вот так:
$request = new Request('/path', 'GET');
Такие реквесты удобно использовать в юнит-тестах, чтобы "эмулировать" запрос программно, а не руками вводить в браузере.
В Symfony ещё используется статический конструктор:
$request = Request::createFromGlobals(); // Создаёт объект на основе глобальных переменных.
Это вообще я основы ООП рассказываю.

По второму скрину:
Почему заголовки проставляются в обход класса Response? Или у тебя Request есть, а Response нет? Ну и название класса Errors неоднозначное, я вот подумал, что это класс, представляющий список ошибок, например валидации.

По третьему:
- PDO незачем в кишки прятать, что если я захочу в конфигурации БД указать PostgreSQL, а не MySQL? Мне нужно лезть в твой код и править, а такие вещи должны настраиваться вне класса, в конфиге. Если захочу использовать SQLite, то там вообще юзера и пароля не будет. Используй DI.
- ConfigModel читается как "модель конфига", странное название. И зачем синглтон для конфига?

Основные проблемы c ООП, DI, MVC. Обо всём этом написано у ОПа хорошо, особенно про DI.
Ответы: >>992504 >>1000398
Аноним 2017/05/18 02:40:24  №992504 416
>>992497
>Это вообще я основы ООП рассказываю.
Интересно, почему программисты такие токсичные. Ведь, наверняка, искренне уверен, что не пытается быть тщеславным и унизить другого. А получается именно это.

Синглтоны, внедрение зависимостей и статические конструкции, это не основы. Основы, это наследование Котов и Собак от класса Животные.

Я спросил одно, а в ответ весь код стали критиковать, хотя я этого не спрашивал и мне выше тоже самое уже написали, я просто не успеваю все читать и переделывать. Смешно, что бессмысленными называются конкретные примеры из Зандстра.

Просто бомбит. Собственно, отвечать на этот пост не надо, я лишь получу еще один ушат говна в мой адрес в абсолютно таком же стиле. Это просто черта характера с которой ничего не поделать.
Аноним 2017/05/18 02:43:38  №992507 417
>>992504
>Это просто черта характера с которой ничего не поделать.
Или профессиональная деформация.
Аноним 2017/05/18 02:49:21  №992509 418
>>992504
Еще вспомнил, что когда я откровенное говно полгода назад постил, где ни классов, ни архитектуры ни намеков на ООП, даже коннект к БД через mysql(), то желающих обосрать не было.
Ответы: >>992697
Аноним 2017/05/18 03:05:43  №992511 419
>>992095
>Помни, что подключая сторонний репозиторий ты добавляешь его цифровую подпись и автоматически начинаешь доверять его авторам. Они могут при установке php или любого другого пакета одновременно заменить любые программы и библиотеки в твоей системе, например, установить бекдор, если захотят, и выполнить любой код от имени root (по умолчанию бекдор могут установить только разработчики дебиан).
Это важно иметь ввиду, что сторонние репозитории могут установить бекдор, но почему вы посоветовали dotdeb.org в качестве доверенного, а не зеркала debian.org, с которого скачивают сам дистрибутив?

Ответы: >>992604
Аноним 2017/05/18 06:50:31  №992524 420
>>990862
Анон, а ты можешь переписать код в таком стиле, чтобы не использовать функции? ПАМАХИ, УМОЛЯЮ.

http://ideone.com/KwvN5W
Ответы: >>992648 >>992697 >>993102
Аноним 2017/05/18 07:52:30  №992530 421
Посоветуйте учебник хороший, что бы про мат часть, про основы, термины, примеры и тд. Ну вы понели.
Ответы: >>992572
Аноним 2017/05/18 09:26:25  №992572 422
>>992530
ОП-пост мы не читаем, да?
Аноним 2017/05/18 10:01:02  №992590 423
>>992486
В опенсурс проекте на гитхабе юзается. Я немного не понимаю нахуя, но то что видно какой-то key в исходнике страницы -- меня пугает. Объясни что за мета джсон данные и как они важны?
Ответы: >>992715
Аноним 2017/05/18 10:02:04  №992591 424
С вашим тредом я смогу через месяц зарабатывать 6к в месяц?
Ответы: >>992593 >>992601 >>992697
Аноним 2017/05/18 10:04:03  №992593 425
>>992591
Я уже неделю учу по шапке php и зарабатываю 300к/сек. Планирую через неделю до наносекунды добраться
Ответы: >>992596
Аноним 2017/05/18 10:07:38  №992596 426
>>992593
Блииииин, хочухочухочу! Отлично, если обычный человек зарабывает 300к/сек, то такой гений как я сможет заработать все деньги этого мира! Вкатываюсь через 5 минут, ждите!
Аноним 2017/05/18 10:22:59  №992600 427
Есть тут желающие изучившие в шапке пхп от корки до корки и думающие себя чем-нибудь занять? Есть легкое задание, немного поковыряться в бутстрепе 4 твиттера, получить немного знаний и $. Пишите контакты.
Ответы: >>992609 >>992630
Аноним 2017/05/18 10:23:04  №992601 428
Аноним 2017/05/18 10:37:28  №992604 429
>>992511

dotdeb это сторонний репозиторий, который не является заркалом debian.org. В нем выложены пакеты, которых в дебиане нет (иначе зачем он был бы нужен).

Дело кстати не только в бекдорах (dotdeb вроде известный), но еще и в том, что что-то могут случайно сломать, например, они могут обновить какую-то библиотеку, которая используется и другими программами, и нечаянно что-то сломать. Так как это сторонний репозиторий и никто в дебиане не тестирует свои пакеты на совместимость с ним.

Я сам им впрочем пользовался и вроде ничего не сломалось. Но важно понимать, какой уровень доступа к системе ты даешь авторам репозитория.
Аноним 2017/05/18 10:44:08  №992609 430
Ответы: >>992697
Аноним 2017/05/18 10:52:15  №992615 431
>>991269
>Плохо, что ты не хочешь разобраться в проблеме, а убегаешь от нее.
Уже четвёртый месяц пишу небольшую систему и хочется её, наконец, выпустить, хоть тушкой, хоть чучелом. Плюс, у меня там вообще почти все вызовы пхп-кода так оформлены. Единообразие полезно.
>если страница загружена методом POST то конечно при обновлении он отправится повторно. Погугли про Post/Redirect/Get а еще лучше прочти мой урок про формы https://github.com/codedokode/pasta/blob/master/forms.md
Не, страница просто грузится. А урок прочитаю.
>А они защищены?
Сложный вопрос. С одной стороны, страница, с которой идут вызовы кода, который работает с бд, защищена. Но если рядом положить другой пхп-файл без защиты и вызвать с него, то действия будут произведены. Это дыра, но на неё я, опять же, плюнул ради ускорения релиза.>>991276
>mysql_select_db
Знаю. Потом заменю на PDO.
>не стоит использовать MyISAM, стоит ставить внешние ключи
Запишу в to do list, потом погуглю, что к чему.
Ответы: >>992681
Аноним 2017/05/18 11:21:29  №992630 432
>>992600
> и $
и переменную?
Аноним 2017/05/18 12:16:04  №992647 433
Аноним 2017/05/18 12:21:12  №992648 434
>>992524
Лолчто? Если под функциями ты имеешь в виду встроенные функции по работе с массивами (count, array_search, array_slice, implode), то НЕ могу, яж новичок. Чтоб вот так просто, как в твоем примере — нет. Это какая-то высшая магия. Сорре.
Ответы: >>992655
Аноним 2017/05/18 12:34:38  №992655 435
>>992648
Если он об этом просит, то можно сделать изи. А вот смысла в этом никакого.
Ответы: >>992664
Аноним 2017/05/18 12:42:23  №992664 436
>>992655
Вот теперь и мне интересно стало. Получится длинная лапша из форичей?
Ответы: >>992731
VS Code Аноним 2017/05/18 12:46:05  №992671 437
Кто-нибудь сталкивался с проблемами кодировок win-1251?
Установил Atom, установил расширение Remote-FTP. При открытии файла с ftp в кодировке win1251(CMS Bitrix): http://joxi.ru/RmzYLDgIWXZokr. Смена кодировок не дает результата.
Установил VS Code. Установил расширение FTP-Simple. Тоже самое. VS Code автоматически определяет кодировку как UTF-8. Повторное открытие файла в кодировке Windows-1251 ничего не исправляет.
ОС Windows 10 Pro

Atom был для сравнения установлен на Kubuntu 16.04 с расширением Remote-FTP. Кодировка применяется и все работает отлично. ЧЯДНТ?
Ответы: >>992681
Аноним 2017/05/18 13:04:04  №992681 438
>>992671

Может файл не в Windows-1251? Если его скопировать и открыть с диска, та же проблема?

>>992615

Так как у нас учебный тред, то для нас самое важное - это научить людей писать правильно.

>>А они защищены?
> Сложный вопрос. С одной стороны, страница, с которой идут вызовы кода, который работает с бд, защищена. Но если рядом положить другой пхп-файл без защиты и вызвать с него, то действия будут произведены. Это дыра, но на неё я, опять же, плюнул ради ускорения релиза.

Мне кажется, тут кто-то кого-то не понял. Злоумышленник имеет возможность отправлять любые HTTP-запросы к сайту. Соответственно, проверки должны стоять в том скрипте, который выполняет действие.

Ну например, у тебя есть скрипт 1, который выводит форму с кнопкой удаления пользователя и есть скрипт 2, обрабатывающий POST запрос, который отправляется при нажатии кнопки и допустим скрипт 2 в ответ на этот запрос удаляет выбранного пользователя. Проверка должна стоять в скрипте 2, он должен проверять, что запрос отправлен администратором, а не злоумышленником без прав. А если отставить скрипт 2 без проверки, а защищать скрипт 1, то это лишь видимость защиты.

> Но если рядом положить другой пхп-файл без защиты и вызвать с него, то действия будут произведены.
Это не уязвимость так как такой файл злоумышленник загрузить не может.

>если страница загружена методом POST то конечно при обновлении он отправится повторно.
> Не, страница просто грузится.
Действия, которые меняют состояние сервера (удаление, изменение, добавление информации) должны делаться только через POST-запросы (то есть в форме должен стоять method="POST"). GET-запросы только для случаев, когда информация не меняется, то есть для получения информации с сервера.

Если тебе непонятны слова вроде POST-запрос, то может быть стоит почитать где-нибудь про основы протокола HTTP.

Ответы: >>992684 >>994673
Аноним 2017/05/18 13:09:38  №992684 439
>>992681
>е в Windows-1251? Если его скопировать и открыть с диска, та же проблема?
VS Code: с диска он открывается сначала в utf-8 затем принудительно указываю открыть в Win-1251
Atom: в обоих случаях открывает в UTF-8
Кодировка Win-1251, т.к. при установке CMS Битрbкс была указана она.
Два ПК проверил на Win10 - одинаковые ошибки.
Один ПК на Kubuntu - ошибок нет и кодировка пменяется.
Ответы: >>992729 >>992742
Аноним 2017/05/18 13:26:46  №992697 440
>>992609

Чтобы не обманули, можно использовать escrow-сервисы вроде тех, что есть на fl (безопасная сделка), но для маленьких сумм там наверно слишком много возни.

>>992591

Вряд ли, мало кто может за месяц изучить все нужное. Месяцев 6-8 уходит. Если твоя цель - зарабатывать 6000 р в месяц (меньше МРОТ?) то может тебе проще дворником устроиться и пару часов в день дворы подметать? Программисты за 100 долларов в месяц не работают.

>>992524

Какие у тебя странные пожелания.

По твоей задаче, тебе же вроде уже писали:

- сортируем годы по возрастанию или убыванию
- удаляем все что меньше (или больше заданного)
- берем первые (последние) N элементов

Другой вариант: сортируем годы, находим на какой позиции находится текущий, и вырезаем кусок массива вокруг этой позиции.

То есть это задача на работу с массивами. В нашем учебнике в ОП посте кстати есть глава про массивы.

>>992509

Может быть у ОПа не было времени, в таких случаях он комментирует только решения своих задач, а может он решил что новичку не очень нужна эта критика.

>>992504

Где токсичность-то? Запостил код в тред - получил комментарии. Там же код комментируют, а не твою личность. Это ты по моему как-то резко воспринимаешь критику своего кода.

Да и тем более может он первый раз твой пост увидел. Откуда он должен знать что тебе уже писали эти замечания?

Если тебе кажется что что-то пишут неправильно, так дай аргментированный ответ. Вспомнил Зандстру - так хоть главу или номер страницы напиши, чтобы можно было найти и сравнить.

А ты вместо этого начинаешь переходить на личности и обвиняешь людей в "токсичности".

Тебе ведь пишут, почему лучше так или иначе сделать, а не просто предлагают верить на слово.

А что касается твоего вопроса, то я уже писал, что тебе для начала надо определиться, что ты будешь называть "моделью" и только после этого можно сказать, правильно ты назвал класс или нет.
Ответы: >>992737
Аноним 2017/05/18 13:33:58  №992699 441
Снимок.JPG (12, 421x116)
116x421
Снимок2.JPG (13, 392x106)
106x392
3.JPG (19, 377x300)
300x377
О, ОП, раз уж ты здесь.
Как компосер настроить? Что прописать?
Ответы: >>992738
Аноним 2017/05/18 13:36:53  №992701 442
>>992487

Никак. Более того, если у тебя в методе написано @return Animal, и ты получаешь из этого метода объект, то ты не должен додумывать, что будет возвращен именно объект Cat и должен использовать только имеющиеся в Animal поля и методы.

@return Animal значит что будет возвращен объект Animal или любой его наследник, в том числе Wolf, который может еще даже не написан.

Можно в Cat и Dog впрочем переопределить этот метод и сделать, чтобы они возвращали не Animal, а конкретного его наследника.

При этом надо соблюдать принцип Лисков, что объект-наследник можно подставить в код вместо предка, и метод-наследник должен возвращать объект Animal или его наследника.
Ответы: >>993656
Аноним 2017/05/18 13:52:59  №992710 443
Проверьте пожалуйста задачку. Хоть ответ и верен, но мне кажется я сделал все не так http://ideone.com/8SYQnk

>Дан рост школьника и рост его одноклассников. Надо найти, сколько человек в классе выше, чем наш герой.
Ответы: >>992712 >>992738 >>993659
Аноним 2017/05/18 13:55:14  №992712 444
>>992710
Однозначно.
Совсем все не так сделал.
Если коротко, алгоритм должен быть таким: в цикле идешь по одноклассникам, каждую итерацию сравниваешь рост анона с текущим одноклассникам, если он больше, то инкрементируешь счетчик, а после цикла выводишь счетчик свой.
Ответы: >>992734
Аноним 2017/05/18 14:10:57  №992715 445
>>992487

> Аналогично как мне задать в phpdoc-блоке некое виртуальное свойство, допустим $__clone_shit, которое тоже возвращает именно конечного потомка (static::class), а не Animal.
Никак, и есть ощущение, что ты там что-то переусложняешь. Также, имена, начинающиеся с 2 подчеркиваний, зарезервированы для использования разработчиками PHP и ты не должен свои поля называть так.

Сами "виртальные" свойства, создаваемые через __get, можно описать с помощью @proeprty, но магических методов по возможности лучше избегать. Лучше сделать реальное свойство.

>>992590

Это константа, определенная где-то в коде проекта. Тебе стоит начать с изучения синтаксиса языка PHP.

>>992274

Хороший совет в общем-то, но тут бы он не помог.

>>992157
>>992123

Скобки ставят, чтобы писать более сложные выражения и чтобы отделить переменную от окружающего текста. Ставить круглые нельзя, именно фигурные надо. Можно без них в некоторых случаях, описано в мануале http://php.net/manual/ru/language.types.string.php#language.types.string.parsing

>>992153

Я бы советовал не заморачиваться с вставкой сортировки в URL, а просто использовать аргументы ?sort=.... (то есть у нас есть одна страница списка студентов, и разные параметры ее отображения), а если ты вставляешь аргументы в URL - то обеспечить чтобы каждая страница была доступна ровно по одному URL. С точки зрения поисковиков в общем это плохо, что есть куча страниц с разными URL, но с одними и теми же данными, просто выводящимися в разном порядке (это однако можно исправить добавлением метатега canonical).

>>992134

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

Также, предполагается что в хорошем фреймворке есть какие-то готовые решения для часто встречающихся задач. Ну например, роутер. В некоторых фреймворках нет произвольных роутов, а используется схема вида /контроллер/экшен/параметры/параметры/. Эта схема позволяет сгенерировать много УРЛ для одной страницы, что негативно отражается на индексировании поисковиками.

Ну вот самый простой пример: допустим в фреймворке все контроллеры лежат в одной папке. В этом случае за несколько лет там может набраться сотня контроллеров и будет тяжело ориентироваться. А Зенд и Симфони позволяют разбить код на отдельные модули, в каждом из которых будут свои контроллеры.

Или неймспейсы: если фреймворк не поддерживает неймспейсы, то работать с кодом из множества классов будет неудобно.

Другой пример - поддержка DI. В зенде 1 кстати было много проблем, связанных с архитектурой, для DI там ничего не было, модели создавались где попало и по всему коду было разбросано new Model_Users.

Или более сложный пример: понадобилось сделать сайт двухязычным. С этим справится не любой фреймворк.

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

Еще для "энтепрайза" важна поддержка "стандартов" или чего-то похожего. Ну к примеру, стандарт на автозагрузчик, логгер, итд, чтобы не было такого, что каждая библиотека использует свой логгер и непонятно как их объединять. В Яве, которая считается "энтерпрайзным" языков, есть определенный формально процесс принятия стандартов JSR и самих стандартов довольно много:

https://ru.wikipedia.org/wiki/Java_Community_Process
https://www.jcp.org/en/jsr/all

Ну и вот еще вопрос на англ по теме https://www.quora.com/What-are-the-best-frameworks-for-large-scale-enterprise-web-development-and-why
Ответы: >>993656
Аноним 2017/05/18 14:28:58  №992728 446
>>992103

> $totalNumberOfBills
лучше $billCount или просто $count

> if ($numberOfBills > $totalNumberOfBills) {
> $numberOfBills = $totalNumberOfBills;
Это лучше сделать через min/max вместо if

Решено верно.

>>991964

Да, php и sql. Посмотри ОП пост, там есть уроки и задания по теме.

>>991932

У тебя форматирование очень странное, что за лестница?

Также, проверка на дабл стоит в конце и до нее выполнение просто не дойдет - раньше сработает одно из 3 предыдущих условий. В группе if/elseif/else сработать может только один блок.

Попробуй вместо mt_rand поставить даблы и посмотреть, что выйдет.

>>991867

Ставь команды echo и выводи значение переменных, чтобы видеть как имено выполняется цикл. Может это поможет.

>>991859

Здесь нужно выполнить расчет кредита, но для 3 разных комбинаций начальных условий. Здесь нам помогут функции. Мы создаем свою функцию расчета кредита, которая на вход получает его условия, а на выходе например возвращает сумму выплат. И вызываем эту функцию 3 раза, получаем 3 суммы выплат, которые и выводим на экран.

>>991856

Урок в ОП посте читал про установку PHP? Ставишь PHP на компьютер, после чего ставишь IDE ("среду" как ты называешь) вроде Netbeans, Eclipse PDT (беспл), PhpStorm (платно) и в них настраиваешь расположение интерпретатора, чтобы они могли его запускать.

>>991822

Хороший совет. utf8mb4 это какая-то улучшенная версия utf8 в MySQL, как я помню.

>>991821

utf8mb4 наверно. utf8_unicode_ci это не кодировка, а collation (набор правил сравнения и сортировки строк): http://gahcep.github.io/blog/2013/01/05/mysql-utf8/

Лучше брать utf8, так как завтра у тебя встретится какой-нибудь хитрый символ в тексте, и не получится его сохранить. Также utf8 самая популярная кодировка и менее популярные кодировки могут какими-то функциями просто не поддерживаться. Хотя сейчас ситуация противоположная - регулярки (RLIKE) в MYSQL не поддерживают utf-8.

>>991789

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

>>991702

Что-то по ссылке не виден код.

Ответы: >>992732
Аноним 2017/05/18 14:30:38  №992729 447
>>992684
Сможет все же кто-нибудь помочь в этом вопросе?
Аноним 2017/05/18 14:31:58  №992731 448
>>992664
https://ideone.com/PusPco
Получилось нихуя не элегантно. Разучился думать уже. Если он имел совсем без функций, то как-то так. Если еще и форич убрать, то там немного по другому.
Ответы: >>992742 >>993019
Аноним 2017/05/18 14:34:33  №992732 449
>>992728
> и до нее выполнение просто не дойдет - раньше сработает одно из 3 предыдущих условий
Блин а ведь и правда. Что с можно с этим сделать?
Ответы: >>992742
Аноним 2017/05/18 14:36:51  №992734 450
>>992712
Я просто не понимаю, где я не верно мыслю. Сейчас ход моих мыслей такой
1)Делается массив с данными всех одноклассников
2) Перебераю массив с помощью foreach
3) if рост анона < одноклассника, то прибавляю к количеству высоких +1
Ответы: >>992735
Аноним 2017/05/18 14:38:47  №992735 451
>>992734
Думаешь ты правильно.
Вижу ты реализацию поправил - больше похоже на правду. Вернее правда и есть, ты ошибся в написании кода. Обрати внимание, что у тебя условие сразу же точкой с запятой закрывается.
Ответы: >>992741
Аноним 2017/05/18 14:39:00  №992737 452
14922771007610.jpg (36, 409x405)
405x409
>>992697
>Где токсичность-то? Запостил код в тред - получил комментарии.
Одно дело просто код прокомментировать, а другое дело подчеркивать, что я основы ООП не знаю. Это как раз переход на личности.

По поводу его замечаний я ничего не сказал. С чем-то согласен, с чем-то нет, а что-то еще не изучал.

>Тебе ведь пишут, почему лучше так или иначе сделать, а не просто предлагают верить на слово.
Да в том то и дело, что он просто пишет как считает лучше и мне вопросы задает, как будто я в Синагогу пришел.

Вот в голове не укладывается, почему когда я постил говнокод, его никто не комментировал, а когда стал более-менее что-то читаемое писать, то у меня вдруг все плохо стало.

Я согласен, на некоторую критику так же токсично реагирую, как пишут мне, я тоже человек и иногда у меня бомбит.
Ответы: >>992740 >>992742
Аноним 2017/05/18 14:39:36  №992738 453
>>992710

У тебя неправильный код. Посмотри:

> if ($anonHeight < $height);
Что делает этот if? if пишется в виде if (условие) { действия; } , а у тебя действия не указаны, и он ничего не делает в итоге (увы PHP позволяет такие кривые if писать).

В итоге у тебя $number++ выполняется на каждом шаге и просто считает число учеников.

То есть идея решения правильная, но написано неверно.

Ответ тоже неверный так как там по моему не 9, а 8 человек которые выше.

>>992699

Первый пик неправильный по моему.

Я тебе советую следовать PSR-4 и сделать для моделей и контроллеров отдельные неймспейсы. Иначе где гарантия что не будет конфликта имен?

Второй выглядит верно. Проверь регистр букв в composer.json - он там важен, я помнб человек написал PSR-4 вместо psr-4 и ничего не работало.

Вот документация, если что https://getcomposer.org/doc/04-schema.md#autoload

Путь надо указывать от корня проекта, то есть не models, а App/models. И кстати в PSR-4 неймспейсы (models) обычно пишутся с большой буквы (хотя в PSR это не указано).

Ответы: >>992741
Аноним 2017/05/18 14:43:42  №992740 454
>>992737
>я основы ООП не знаю
Все верно, не знаешь.
>переход на личности.
Не льсти себе, какая из тебя "личность"
>почему когда я постил говнокод, его никто не комментировал
Потому что безнадежные дебилы никому не интересны.
>а когда стал более-менее что-то читаемое писать
А не совсем безнадежные - уже другое дело.
>иногда у меня бомбит.
>иногда
Какие мы оптимисты.
Ответы: >>992743
Аноним 2017/05/18 14:45:13  №992741 455
Ответы: >>992743
Аноним 2017/05/18 14:47:22  №992742 456
>>992737

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

>>992732

Переставить блоки местами, так как условия проверяются сверху вниз.

>>992731

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

- для поиска индекса элемента можно использовать array_search, а чтобы элементоы в массиве шли с правильными индексами - array_values.
- для нахождения границ диапазона - min, max
- для взятия куска массива - array_slice

>>992684

Не знаю, что делать. Проверь настройки, может в настройках проекта как-то можно кодировку указать.

Вот тут например у VS Code есть настройка encoding https://code.visualstudio.com/docs/getstarted/settings

Аноним 2017/05/18 14:48:26  №992743 457
>>992740

Такие посты тут не нужны. Полезной информации в нем ноль.

>>992741

Так верно.
Ответы: >>992755
Аноним 2017/05/18 14:48:48  №992744 458
>>992742
>Тебе бы надо работу с массивами подучить. Не используешь готовые функции
Ты хоть смотри, что в треде происходит. Суть была в том, чтобы без функций это сделать.
Аноним 2017/05/18 14:50:20  №992745 459
>>992742
Делал. Ставлю NetBeans. Посмотрю, что на ней.
Аноним 2017/05/18 14:57:58  №992749 460
14246237471120.jpg (98, 462x634)
634x462
>>992742
>Может я тогда просто устал каждому второму новичку разъяснять про устаревшие функции.
Да понятно, что это дело добровольное дело, я ни от кого ничего не требую.

Я стараюсь уважительно общаться, не всегда получается, так что в конкретном случае извините, если кого-то обидел.
Ответы: >>992757
Аноним 2017/05/18 15:17:05  №992755 461
>>992743
Ты здесь не нужен.
Уходи.
Аноним 2017/05/18 15:17:58  №992757 462
>>992749
 
>я ни от кого ничего не требую.
Требуешь.
 
>не всегда получается
Очень редко получается.
Аноним 2017/05/18 15:25:56  №992762 463
А индексы и элементы массива имеют названия сами по себе? То есть например : $num - это индексы, а $b - это массивы?
Или им только самому переменные давать надо? И если так, то какой командой это сделать? foreach - это цикл, а он мне не нужен
Ответы: >>992763 >>992764 >>992774
Аноним 2017/05/18 15:26:27  №992763 464
>>992762
*элементы массива
Аноним 2017/05/18 15:32:55  №992764 465
Аноним 2017/05/18 15:53:20  №992774 466
>>992762

Массив состоит из элементов, у каждого есть индекс и значение. Индекс может быть строкой или целым числом, значение - любым типом данных. Массив оптимизирован для быстрого получения значений по индексу.
Ответы: >>992780
Аноним 2017/05/18 15:56:22  №992780 467
Screenshot4.jpg (73, 825x689)
689x825
>>992774
Я просто вопрос по идиотски задал. Я делаю команду рандом и мне выдает в ответе рандомный индекс. А мне нужен текст
Ответы: >>992782
Аноним 2017/05/18 15:59:13  №992782 468
>>992780

Тебе надо получить из массива значение элемента (в котором текст) по индексу. Для этого есть квадратные скобки, посмотри урок.
Ответы: >>992798
Аноним 2017/05/18 16:27:59  №992798 469
>>992782
Я сделал сам не знаю как. Но я совершенно не понимаю почему это работает http://ideone.com/ZXQSLU
Ответы: >>992803 >>992819
Аноним 2017/05/18 16:31:15  №992802 470
Аноны, учусь по учебнику ОПа, не могу разобраться с циклами, скиньте решение самой первой задачи, дальше сам как-нибудь разберусь
Ответы: >>992805 >>992819
Аноним 2017/05/18 16:31:52  №992803 471
>>992798
 
>я совершенно не понимаю почему это работает
Это неважно, главное что работает.
 
Аноним 2017/05/18 16:32:28  №992805 472
>>992802
 
>решение самой первой задачи
Читай учебник.
 
Аноним 2017/05/18 16:45:11  №992818 473
https://ideone.com/rDLTKa
Подскажите где проблема? Задача про школьника и айфон. У меня получается немного не так, как в ответе.
Ответы: >>992820
Аноним 2017/05/18 16:45:44  №992819 474
>>992802

Мы не скидываем решения задач, но ты можешь показать то, что смог написать, и спросить, если что-то непонятно.

>>992798

А что именно не понятно?
Ответы: >>992824
Аноним 2017/05/18 16:46:53  №992820 475
>>992818
>$paymentTotal += $monthlyPayment - $creditBalance;
Тут ошибка. Мб еще где есть, первое попавшееся даю.
Ответы: >>992850
Аноним 2017/05/18 16:50:16  №992824 476
>>992819
Вообще с командой вывода массива. То есть если я хочу в ответ содержание, то мне надо брать команду в фигурные скобки. А если хочу индекс, то не брать?
Ответы: >>992825
Аноним 2017/05/18 16:50:52  №992825 477
Аноним 2017/05/18 17:28:40  №992850 478
14937132204240.jpg (128, 842x768)
768x842
>>992820
Спасибо, вроде разобрался. Заменил на
$paymentTotal += $creditBalance;
Аноним 2017/05/18 18:17:34  №992863 479
Всем здрасти! И как быть новичку,который алчет вкатиться (есть 4 месяца спереди для этого) и потом найти работу?возьмут ли?на фрилансе ль смогу немножечко заработать?
Ответы: >>992874
Аноним 2017/05/18 18:53:57  №992874 480
>>992863
Ты сначала еще вкатись
Ответы: >>992883
Аноним 2017/05/18 19:12:37  №992883 481
>>992874
Так надо знать для начала положение дел реальных,не?
Ответы: >>992887
Аноним 2017/05/18 19:27:41  №992887 482
>>992883
Каких реальных? Есть ли работа? Дохуя. Через 4 месяца? Все зависит от тебя
Ответы: >>992890
Аноним 2017/05/18 19:41:58  №992890 483
>>992887
То,что в шапке само собой пропущу через себя
А вот от себя чего посоветуете?
Ответы: >>992910
Аноним 2017/05/18 20:32:12  №992910 484
>>992890
Делать все по шапке
Ответы: >>993045
Аноним 2017/05/18 21:36:00  №992947 485
Поясните пожалуйста про дату, вот я создаю объект DateTime или функцию стандартную вызываю для получения времени, время текущее берется локально у каждого загрузившего скрипт? Или с сервера?
Ответы: >>993078
Аноним 2017/05/18 22:37:28  №992987 486
Ответы: >>993402
Аноним 2017/05/18 23:10:06  №993019 487
>>992742
>Тебе бы надо работу с массивами подучить.
Оххлол.
>>992731
Вот и я думаю, нахуя? А представь, что это его тестовое задание для приема в говноконтору, так это вообще лол, что творится у вас, погромисты?!
Аноним 2017/05/18 23:59:40  №993045 488
>>992910
А сам как давно и как вкатился?
Аноним 2017/05/19 00:56:02  №993078 489
>>992947

PHP код выполняется на сервере, так что время сервера.
Аноним 2017/05/19 02:25:12  №993102 490
Аноним 2017/05/19 12:29:50  №993230 491
Аноны, объясните пожалуйста. Сделал вчера задание на генератор имен чуть с ума не сошел пока пытался слоги в одну строчку запихнуть. И я просто методом тыка скорее всего нашел как делать, но кое-что не понимаю:
1) Я сделал пустой массив $line[] и туда поместил $randomText, так? Но почему я не могу сразу сделать массив $line[$randomText]? Потому что $randomText уже часть другого массива?
2) Не понимаю как можно все написать в одну строчку с помощью точек, а не команды implode
Ответы: >>993231 >>993392
Аноним 2017/05/19 12:30:18  №993231 492
Аноним 2017/05/19 14:40:14  №993270 493
Как правильно сохранять файлы в слиме?

Делаю $file->moveTo("/files/$name") - получаю ошибку "Upload target path is not writable".

Делаю $file->moveTo(__DIR__ . "/files/$name") - получаю ошибку "is not valid a uploaded file".

Имя, естественно, это имя исходного файла $name = $file->getClientFilename();
Ответы: >>994052
Аноним 2017/05/19 16:58:01  №993371 494
Screenshot5.jpg (66, 822x689)
689x822
Помогите с задачей. Не понимаю как расшифровать обратно можно, array_flip() cовсем не работает
Ответы: >>993379
Аноним 2017/05/19 17:10:46  №993379 495
Ответы: >>993383 >>993400 >>993404
Аноним 2017/05/19 17:12:52  №993383 496
>>993379
А нет, не правильно
Аноним 2017/05/19 17:23:32  №993392 497
>>993230

> Я сделал пустой массив $line[] и туда поместил $randomText, так? Но почему я не могу сразу сделать массив $line[$randomText]?

Код $line[$randomText] - это вообще-то поиск элемента в массиве с индексом из переменной $randomText

Чтобы создать массив с одним элементом надо писать $x = [ $randomText ]; Элементу при этом будет присвоен индекс 0.

Потому советую пересмотреть примеры кода из урока.

Также, есть мануал (немного сложный) http://php.net/manual/ru/language.types.array.php

Что касается вопроса, если бы у нас сразу были все 4 слога, нам массив был бы и не нужен. Тот же проблема в том, что у нас слоги генерируются в цикле, по одному за раз. И надо где-то их сохранить до конца цикла. Для этого хорошо подходит массив - перед циклом создаем пустой массив (класть в него пока нечего), на каждом шаге генерируем и добавляем в него слог, а после цикла склеиваем содержимое массива в строку.

У тебя кстати код не совсем правильный, так как implode стоит внутри цикла. Зачем его делать несколько раз? Достаточно склеить слоги один раз.

> Потому что $randomText уже часть другого массива?
$randomText это строка и ее можно сохранить в любое число массивов. Нет такого правила, что содержимое переменной можно скопировать только в один массив.

> Не понимаю как можно все написать в одну строчку с помощью точек, а не команды implode
Для этого нужно перечислить все слоги явно. Например, так:

$result = $line[0] . $line[1] . ... $line[3];

Но не очень понятно, чем это лучше implode. Ведь если мы захотим сделать не 4, а 8 слогов, нам руками придется переделывать эту строчку.

Ответы: >>993400
Аноним 2017/05/19 17:33:38  №993400 498
>>993392
Cпасибо за подробное объяснение.
Не можешь пожалуйста посмотреть правильно ли я сделал расшифровку? >>993379
Ответы: >>993404
Аноним 2017/05/19 17:36:03  №993402 499
>>992987

Что-то сейчас sqlfiddle не открывается, показывает белую страницу, я может потом еще гляну.

По твоему вопросу: это задача на джойны, и она решается примерно так:

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

Ну тут очевидно, что надо взять таблицу пользователей и к ней приджойнить статистику лайков. Сгруппировать по пользователям, чтобы в каждой группе были лайки, относящиеся к одному пользователю. Дальше возникают довольно сложные вопросы, вроде "если у нас есть группа, как посчитать число уникальных пользователей-получателей-лайков в ней, при условии что они могут повторяться" или "как посчитать число взаимных лайков (то есть записей, где 2 поля равны) в группе".

Для ответа на первый вопрос надо изучить возможности MySQL:

https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html
http://www.mysql.ru/docs/man/Group_by_functions.html

Что касается взаимных лайков - дам такую подсказку. Как посчитать число записей в группе, соответствующих определенному условию (например x < 10) ? Примерно так:

x < 10 вернет 0 или 1
SUM(x < 10) найдет число записей, где условие выполняется


Аноним 2017/05/19 17:36:03  №993403 500
.jpg (13, 267x139)
139x267
Вот такая штука у меня получается. У меня несколько классов с зависимостями через создание объектов в конструкторах, и по логам видно что подключение происходит 3 раза за каждый проход всего скрипта, это ненормально ведь. Неймспейсы и компосер решат эту проблему? Или же DI? Я новичек, прошу сильно не пинать
Ответы: >>993405
Аноним 2017/05/19 17:37:42  №993404 501
>>993400
>>993379

Сделано верно. Только переменные не надо называть с большой буквы и имя ab тоже неудачное. Можно наверно было назвать decodeTable.
Ответы: >>993406
Аноним 2017/05/19 17:41:17  №993405 502
>>993403

Каждый раз, когда ты создаешь объект PDO (или объект-обертку над PDO), устанавливается новое соединение. Конечно, это неправильно. Нужно создать единственный объект и использовать его везде. И желательно без глобальных переменных и синглтонов, это описано в моем уроке по DI https://github.com/codedokode/pasta/blob/master/arch/di.md

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

В более сложном случае нужен DI контейнер.

composer - это менеджер зависимостей (зависимостей другого уровня), он только помогает установить сторонние библиотеки и настроить автозагрузку.
Аноним 2017/05/19 17:41:19  №993406 503
>>993404
Спасибо. Забыл поменять название на что-то более хорошее прежде чем показывать. Это я для себя по быстрому делал. Я просто еще не мог разобраться, потому что думал, что можно вписать array_flip($cipher) и мне все станет как раньше, лол
Аноним 2017/05/19 21:44:06  №993502 504
ОП, как бы ты хранил данные в php вебсокет чате? С помощью mysql?
Ответы: >>997321
Аноним 2017/05/19 22:53:10  №993527 505
Какие есть маленькие и легкие фреймворки для работы с БД?
Ответы: >>993548 >>993553 >>994193
Аноним 2017/05/19 23:32:56  №993547 506
В этом треде хоть кто-то есть живой?
Аноним 2017/05/19 23:33:29  №993548 507
Ответы: >>993559
Аноним 2017/05/19 23:36:50  №993553 508
Ответы: >>993559
Аноним 2017/05/19 23:43:03  №993559 509
>>993553
>>993548
Ну мне не полноценный фреймворк нужен. Я поставил https://medoo.in только для работы с бд. Один файл, 30КБ и запросы выглядят теперь нормально:
$row = $db->select('content', '*', ['id' => 3200517]);
Ответы: >>997321
Аноним 2017/05/19 23:51:09  №993563 510
Допустим, есть массив, в каждом элементе которого содержатся другой массив
array(1) { [0]=> array(1) { ["name"]=> string(3) "hui" } }

К первому элементу первого массива я могу обратиться array[0]. Как мне обратиться к значению name и получить "hui"?
Ответы: >>993568
Аноним 2017/05/19 23:57:18  №993568 511
Аноним 2017/05/20 01:26:39  №993621 512
В мануале написано, что var_dump — Выводит информацию о переменной. То есть его функция не добавлять элемент в массив?
Ответы: >>993623
Аноним 2017/05/20 01:29:47  №993623 513
>>993621
А не, вспомнил, это array_push. Если я правильно понял, то echo выводит значение переменной, а var_dump информацию о переменной?
Ответы: >>997321
Аноним 2017/05/20 01:40:45  №993627 514
14945098613292.jpg (194, 1024x768)
768x1024
Кажется, будто каждый раз, когда я захожу сюда, у меня этот кот спрашивает:"Ну нахуя ты такой тупой?".
Аноним 2017/05/20 03:24:15  №993650 515
Как получить тип переменной?
Ответы: >>997321
Аноним 2017/05/20 04:15:02  №993656 516
>>992701
> ты не должен додумывать, что будет возвращен именно объект Cat
Если я использую метод класса, который всегда конструирует мне объект этого класса, то я могу быть уверенным, что
get_class(Cat::get_instance()) === 'Cat'
>>992715
> начинающиеся с 2 подчеркиваний
Ты докопался до реализации, забив на суть.

Мдэ, надо стандарт для php-блоков дополнять и добавлять его в Idea. Мне правда нужен @return static и @property static $_blahblah
Аноним 2017/05/20 04:21:09  №993658 517
>>992504
> почему программисты такие токсичные
Потому что профа такая. Чтобы быть хорошим программистом надо иметь много времени, потраченного на программирование. Для этого надо иметь много свободного времени. А для этого надо не иметь девушку. А это тащит за собой неудовлетворенность, агрессивность и последующее желание самоутвердиться за счёт кого-то другого. Ну и сублимация, куда уж без нее?
Аноним 2017/05/20 04:29:58  №993659 518
>>992710
Есть два варианта решения:
1. за линейку проходишься по списку и сравниваешь, увеличивая счетчик = O(N)
2. за логарифм сортируешь функцией sort, потом за линейку проходишься до первого элемента выше нужного. Вычитаешь из кол-ва элементов позицию этого элемента. От O(log N) до O(log N + N), но тут как повезёт
Ответы: >>997321
Аноним 2017/05/20 09:21:28  №993685 519
x538.jpg (125, 846x538)
538x846
лол, апдейтнул одного студентика в базе, так забыл указать WHERE id = 3, так теперь в базе 31 студент с одним и тем же именем..как мне вернуть всё в зад? Я и так запарился придумывать имена этим мифическим существам. В гугле что-то про бинарные логи, нахуй так сложно? В 2017 году до сих пор не придумали CRTL+Z для баз данных?
Ответы: >>993760 >>997321
Аноним 2017/05/20 12:19:55  №993736 520
Ответы: >>997319
Аноним 2017/05/20 13:11:33  №993753 521
Как сделать зависимость? Пишу допустим:

class Student{
public function getStudent(){...}
}

$student = new Student;

class Profile{
public function getProfile(Student $student){...}
}

Ошибка must be an instance of , типо не создан экземпляр

Помогите дауничу
Ответы: >>993896
Аноним 2017/05/20 13:37:05  №993760 522
Аноним 2017/05/20 14:26:10  №993775 523
ОП, я допилил студентов. Весь функционал реализован, но с ООП проблемы. В методичке сказано - все SQL запросы вынести в отдельный класс, но что тогда останется в классе Student/Абитуриент? Весь вся работа программа - это сохранение/вывод данных из базы.
Сейчас имею такои методы в Database.php(раньше они висели в студенте)
>connectDb()
>addInfo()
>updateInfo()
>loadInfo($user_id)
>getInfoAllStudents()
>getInfoOnID()
>foundUserId()
>getFullName($user_id)
>searchID($search_query)
Ответы: >>993821
Аноним 2017/05/20 16:49:45  №993821 524
>>993775

А ты читал https://github.com/codedokode/pasta/blob/master/db/patterns-oop.md ?

Класс Student просто хранит информацию об одном студенте. А класс для работы с БД - содержит методы для записи и загрузки этих студентов из БД. Хотя, есть паттерн active record, когда обе этих задачи совмещаются в одном классе.

Ответы: >>994210
Аноним 2017/05/20 17:16:10  №993837 525
Screen.jpg (11, 257x109)
109x257
Это нормально что сессию вот так создаю? В файле контроллера перед созданием класса
Ответы: >>993868
Аноним 2017/05/20 18:15:55  №993868 526
>>993837

Нет, ненормально. Если в файле определяется класс или функции, то кода на верхнем уровне (не внутри функций) там быть не должно.

Ну и с точки зрения логики это ведь неправильно. Почему сессия должна создаваться в тот момент, когда подключается этот класс? тут логики нет. А если я подключу класс, но не буду создавать объект? сессия все равно запустится.

Ответы: >>993874
Аноним 2017/05/20 18:21:00  №993871 527
Аноны проверьте пожалуйста задачку. Я не понимаю, почему иногда мне выдает текст без $word5 http://ideone.com/V52aqA
Ответы: >>993877
Аноним 2017/05/20 18:24:28  №993874 528
>>993868
Как же тогда решить проблему с заголовками, ведь сессия или куки выполняется до вывода любых заголовков
Ответы: >>993877 >>993883
Аноним 2017/05/20 18:35:19  №993877 529
>>993871
Потому что ты видимо опечатался и вместо $word5[$text5] например $word5[$text4]. Там длины массивов разные у 5го и 4го.
>>993874
Что-то у тебя не то с архитектурой.
Ответы: >>993881
Аноним 2017/05/20 18:41:47  №993881 530
>>993877
Точно. Я же вроде проверил текст 20 раз, а в итоге все равно не заметил
Аноним 2017/05/20 18:45:32  №993883 531
>>993874

Можно начинать сессию в начале метода в контроллере. Но вообще, я не уверен что сессии нужны в задаче на студентов.
Аноним 2017/05/20 19:23:26  №993896 532
>>993753
class Student{
public function getStudent(){
echo "getStudent";
}
}

$student = new Student;

class Profile{
public function getProfile(Student $student){
var_dump($student);
}
}

$profile = new Profile;

$profile->getProfile($student);

Аноним 2017/05/20 20:55:59  №993931 533
2017-05-2020-54-56.png (183, 1920x1080)
1080x1920
>>991459
Готово 3/4. Делать админку сложнее всего. Пока код прошу не рейтить, там дохуя косяков, я еще не все исправил, что нарейтили раньше и накопились новые. Добью комментарии и буду рефракторить. Какие же уебищные названия у методов, все в разном стиле. Ну хоть папку с представлениями в порядок привел.
Ответы: >>994157 >>994193
Аноним 2017/05/21 05:14:29  №994052 534
2017-05-21090348.jpg (665, 1920x974)
974x1920
>>993270
Куда делись ответы на этот пост? Я попал в другую вселенную? Пожалуйста, скажите, что вы их тоже видели.

Там был совет сдампить $_FILES, но я не могу это сделать потому, что получаю страницу с исключением слима. Как это вывести?
Ответы: >>994062
Аноним 2017/05/21 09:41:06  №994062 535
>>994052

Можно сделать var_dump(...);die();

Иначе Слим перехватывает вывод (через ob_start - http://php.net/manual/ru/ref.outcontrol.php).

Сдампить я советовал не только FILES , но и объект Слима, представляющий файл.
Ответы: >>994072
Аноним 2017/05/21 10:43:08  №994072 536
>>994062
Ошибка была из-за того, что, во-первых, я перед загрузкой проверял, что код ошибки равен 1, который означает, что файл превышает размер допустимый настройками php, а не 0. Вот я дубовая голова, перепутал индексы! И во-вторых ещё, загружал файл с размером больше допустимого.
Ответы: >>1000398
Аноним 2017/05/21 10:51:49  №994073 537
Господа, столкнулся со слудующей проблемой. Просматривал один сайт и наткнулся на следующий код:
<a href="#listOfBonusBlock" data-url="/main-page/json/bonuses/DEPOSIT/" class="jsonBlock btn btn-xs m-b-xs btn-default " title="">Бонусы за депозит</a>
Конкретно не понимаю, что делает: data-url
К слову сказать не нашел и доки по данному атрибуту.
А на странице http://ru.casinoglobal.info/main/#listOfBonusBlock
происходит очень интересная магия: при переключении кнопок.
Как это возможно реализовать.
Ответы: >>994076 >>994088
Аноним 2017/05/21 10:58:08  №994076 538
>>994073

Гугли "data атрибуты"
Аноним 2017/05/21 11:53:50  №994088 539
>>994073
Доступ закрыт. Россия.
Ответы: >>994116
Аноним 2017/05/21 13:09:33  №994116 540
>>994088
Пфф, даже быдло посылает роскомпозор на хуй и качает киношки с запрещенных рашкой трекеров, а ты не можешь?
Аноним 2017/05/21 14:23:58  №994157 541
2017-05-2114-24-19.png (165, 1920x1080)
1080x1920
>>993931
>когда в 2к17 году запилил гостевуху на пхп
Побыстрому наклепал комментирование каждой цитаты.

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

Ща бы званого башорг изобретать.
Ответы: >>994165 >>994193
Аноним 2017/05/21 14:31:04  №994165 542
>>994157
Алсо, ты же понимаешь, что пилишь абсолютную хуйню? Лучше бы как все, борду пилил.
Ответы: >>994176
Аноним 2017/05/21 14:41:09  №994176 543
2017-05-2114-43-16.png (115, 1920x1080)
1080x1920
>>994165
Поясни.

Был файл с цитатками, интересными мне, который трудно читать, всё в одну строку https://github.com/grigoryMovchan/AphorismCMS/blob/master/support_scripts/doc/quotes.txt Сначала я его распарсил, потом сделал приятно представление, а потом захотел все это добро как-то организовать и понеслось

Чем борда лучше? Почему хуня? Я точно знаю, что это интересно нескольким анонам в нофап-треде.

Ответы: >>994193
Аноним 2017/05/21 15:16:34  №994193 544
>>993527
Propel: http://propelorm.org/

>>993931
>>994157
> Пока код прошу не рейтить
И смысл тогда этих постов? Анон, этот тред - не твой ежедневник, хватит вниманиеблядствовать.

>>994176
Вот в нофап-тред и кидай свои ежедневные отчёты и скрины.
Ответы: >>994224
Аноним 2017/05/21 15:31:31  №994210 545
Аноним 2017/05/21 15:51:24  №994224 546
14936403421850.png (867, 880x566)
566x880
>>994193
>И смысл тогда этих постов?
Мне интересно кто что сейчас пилит. А с точки зрения экзистенциализма, надо делать так, как хочешь чтобы все поступали. А я не прочь почитать чужие отчетики. Программирование, это не только абстрактные сущности, но и люди, мотивация.

Мне, например, не интересно в очередной раз читать как у кого-то массивы или циклы в голове не укладываются, но я им ничего не пишу.

>Вот в нофап-тред и кидай свои ежедневные отчёты и скрины.
Обязательно, держу в курсе.

Собственно, вот моя позиция, ничьи права я не нарушаю, за сим уведомляю, что буду продолжать. Можете жаловаться модератору, ваше право, если забанят меня - тогда другой разговор.

Алсо, можете скрывать посты, которые только лично вам не нравятся, есть такая кнопка. Анон, будь терпимее.
Ответы: >>994246 >>994250
Аноним 2017/05/21 16:15:55  №994246 547
>>994224
Я возмущён постом того анонимуса.
От лица всех анонимусов ссу ему в ебало приношу глубочайшие извинения.
Ну а кроме шуток, мотивируй, это интересно, такое нужно.
В конфу нашу еще пропишись, там нужны такие замотивированные, как ты.
Ответы: >>994256 >>994661
Аноним 2017/05/21 16:19:22  №994250 548
>>994224
Твои посты достаточно интересны на фоне остального. Я вот думаю свой фреймворк пилить, может тоже буду тут срать по этой теме.
Аноним 2017/05/21 16:25:27  №994256 549
14609878548840.png (4, 684x597)
597x684
>>994246
>мотивируй
Я акцентировал на том, что меня мотивирует, когда кто-то пишет о своих поделках. А то без этого создается впечатление, что только задачки про циклы решают или рокетсайнс занимаются, а по середине ничего.
Аноним 2017/05/21 18:36:02  №994354 550
Скачал свой же проект на Гитхабе. При переходе на любой линк кроме главного выдает Error 404. Apache/php 7.1. Фреймворк Laravel. В чём может быть проблема?
Ответы: >>996039
Аноним 2017/05/21 20:03:14  №994395 551
Ребят, у меня вопрос. Как можно реализовать что-то подобное бару нотификатии. Т.е. выдыется несколько сообщение, и нужно как-то их помечать прочитал их юзер или нет. Пока идея такая, смотреть находиться этот нотификайшен в области видимости и ajax'ом посылаем в базу запрос, чтобы там утановить read_date в значение не null. Нормальная идея или нет?
Ответы: >>996039
Аноним 2017/05/22 02:26:59  №994567 552
Объясните мне разницу между обычным массивом и массивом совпадений с регулярным выражением.
Ответы: >>994581
Аноним 2017/05/22 03:41:17  №994581 553
>>994567

"массив совпадений с регулярным выражением" - я думаю, это массив, который заполняет функция preg_match. Если она нашла в тексте совпадение с регулярным выражением, то она сохраняет в массив такие элементы:

- под индексом 0 сохраняется часть строки, совпавшая с регуляркой
- под индексом 1 - часть строки, совпавшая с первыми круглыми скобками в регулярке, если они есть
- под индексом 2 - со вторыми круглыим скобками, если они есть

Посмотри мануал еще:

- http://php.net/manual/ru/function.preg-match.php
- http://php.net/manual/ru/regexp.reference.subpatterns.php

Аноним 2017/05/22 04:50:53  №994588 554
Работаю в проекте, в котором в базе лежат емейлы вида:
podor'; DROP DATABASE;

И я не шучу. Как обмазаться базовой безопасностью такого проекта?
Ответы: >>996039
Аноним 2017/05/22 11:38:39  №994661 555
>>994246
Дай адрес конфы
другой анон
Ответы: >>994662
Аноним 2017/05/22 11:39:32  №994662 556
Аноним 2017/05/22 12:03:37  №994668 557
Не могу понять, почему при отправке файла на сервер через аякс, не выводится значок ожидания. В остальных местах выводится, а тут нет.

Вот код: https://jsfiddle.net/e2auoa54/1/ . Сначала идёт аякс, потом функция, в которой значок не работает, а потом функция, в которой работает.

Такое ощущение, что в глаза ебусь и не вижу что-то очевидное. Может вы посмотрите свежим взглядом?
Ответы: >>994671
Аноним 2017/05/22 12:08:41  №994671 558
>>994668
В первой функции ты $.ajax вызываешь, а не свой метод ajax().
Член юпитера, какой же это омерзительнейший код, гори ты в аду, если не перепишешь
Ответы: >>994676
Аноним 2017/05/22 12:24:14  №994673 559
>>992681
>Мне кажется, тут кто-то кого-то не понял.
Расписываю подробно.
Есть файл manager.php, который первым делом проверяет, залогинился ли юзер. Если нет - редирект на login.php. Если да, то отрисовывает страницу, на которой есть кнопки управления.
Допустим, одна из них "Показать таблицу". По нажатии на неё срабатывает js-скрипт, хватает введённые данные и отправляет их аяксом (type:"POST") в show.php. Там проверки на правомочность запроса нет, он просто выполняется. В начале скрипта стоит только
header("Content-type: text/plain; charset=utf-8");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
Нужно поставить проверку?
Ответы: >>994720
Аноним 2017/05/22 12:44:21  №994676 560
>>994671
Блин, ну точно же.
А что именно омерзительно в коде? Я самоучка, поэтому указывать на ошибки обычно некому. Что переписать?
Аноним 2017/05/22 14:32:51  №994720 561
>>994673

Ты сделал неправильно. Ты защитил страницу, которая просто выводит кнопку, а обработчик запроса, который и выполняет действие - никак не защитил. Что мешает злоумышленнику сразу отправить POST запрос к скрипту show.php?

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

Попробуй сам нарисовать схему взаимодействия и ты увидишь слабые места:

клиент сервер

GET manager.php -> проверка -> вывод формы
POST show.php -> выполнение действия

Взаимодействие сетевых программ удобно изображать с помощью вот такой вот диаграммы последовательности UML https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8

Я советую попробовать изобразить сеанс работы в админке с помощью такой диаграммы, и слабые места увидишь, и заодно правильно рисовать такие вещи научишься. На диаграмме можно сделать 2 вертикальных линии (браузер и сервер), браузер отправляет GET/POST запросы, а сервер проверяет авторизацию, выполняет какие-то действия, возвращает HTML страницы.
Ответы: >>994733
Аноним 2017/05/22 15:14:53  №994733 562
>>994720
Хорошо, попробую.

Сейчас у меня страница с проверкой реализована так (html сократил): https://jsfiddle.net/co4gmL3L/

Там html-код выполняется только если авторизация пройдена. Но так вообще можно его оформлять? Обычно строки выводятся через эхо или принт. У меня работает.
Ответы: >>994738 >>994741
Аноним 2017/05/22 15:21:56  №994738 563
Ответы: >>994778
someApprentice 2017/05/22 15:25:55  №994740 564
Задача на клон rghost

https://gist.github.com/codedokode/9424217

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

Чтобы получить оригинальное имя при скачивании можно добавлять в ссылку атрибут download="...", но это, наверно, не очень надёжно. Лучше при скачивании самому выставлять заголовки с помощью php. Это хорошо тем, что можно выставить в заголовке filename оригинальное имя файла, я прав?

>борьба с загрузкой HTML-файла: можно загружать файлы на отдельный от основного домен, можно при скачивании выставлять правильные заголовки, которые заставят браузер скачать файл, а не открыть его как веб-страницу (Content-Disposition: attachment, Content-Type не содержащий text/html)
>Content-Type не содержащий text/html
Почему нельзя содержать такой тип? Страница будет открываться в любом случае?

Я затрудняюсь на этом моменте потому, что чтобы выставить заголовки нужно вызвать отдельный контроллер, который будет это делать, вместо того чтобы давать прямую ссылку на файл. Здесь нету, какой-то серьёзной проблемы, просто я не хочу делать отдельный контроллер. Может здесь можно что-нибудь посоветовать? Хотя конечно вряд ли.

Генерацию директорий к файлу можно сделать проще - независимо от всего генерировать новую директорию для файла, и если файл с таким именем уже существует в директории, то рекурсивно заново вызвать эту функцию. Искать в ручную файлы, наверно, будет не удобно, но в любом бы случае пришлось бы первым делом смотреть путь в бд, если какой-то файл понадобиться.

Я правильно делаю, что передаю роутер в шаблон, чтобы сгенерировать ссылку?

https://github.com/someApprentice/filehosting/blob/master/public/index.php#L25
https://github.com/someApprentice/filehosting/blob/master/templates/index.phtml#L24


А как делается мультиязычность? Это, наверно, делается с помощью middleware - сначала определяется какой язык должен быть, а потом передаются данные на нужном языке. Где эти данные лучше хранить? В бд или константах прямо в коде (например EN_TITLE, RU_TITLE)?
Ответы: >>996038
Аноним 2017/05/22 15:27:07  №994741 565
>>994733

Вообще, код плохой. Ты пишешь большой сложный скрипт не пытаясь разбить его на функции, сделать более читаемым. У тебя там гигантские вложенные ифы.

Надо это переделывать. А то сейчас чтобы просто понять как это работает, надо долго вчитываться. Код должен быть проще:

проверить авторизацию;
если (нет авторизации) {
редирект и завершить скрипт;
}
если (параметры верные) {
выполнить действие, отдать ответ и завершить скрипт;
}

вывести страницу;
Ответы: >>995142
Аноним 2017/05/22 17:25:46  №994778 566
>>994738
Прочитал. Да, до шаблонов я ещё не добрался. Попробую переписать код, используя шаблоны.
Аноним 2017/05/22 19:10:40  №994830 567
Laravel годный?
Ответы: >>994887
Аноним 2017/05/22 20:44:37  №994887 568
>>994830
Да, если ты можешь все то же сделать без неё
Аноним 2017/05/22 23:49:06  №995032 569
как загрузить картинку (зная ее путь) на определенный url?
Ответы: >>996037
Аноним 2017/05/23 00:01:43  №995043 570
Ух, как я облажался! Так только сосунки ошибаются! Я должен был понять, когда еще контроллер не был и в половину таким жирным https://github.com/grigoryMovchan/AphorismCMS/blob/master/app/Controllers/AdminController.php

Сука, теперь придется MVC админки выносить в отдельную папку /admin, чистить модели /app от методов /admin, дрочиться с неймспейсами, чтобы юзать в /admin методы из модели /app

Пиздец, это еще на неделю. Ну все лучше чем в доту играть.
Ответы: >>995045 >>995047 >>995949
Аноним 2017/05/23 00:08:25  №995045 571
>>995043
Или не надо админку отдельно выносить, мне только засранный контроллер не нравится, можно ведь только его раздеть
Аноним 2017/05/23 00:15:58  №995047 572
>>995043

Тут лучше для каждого раздела админки сделать свой контроллер. Контроллеры можно поместить в отдельную папку и например унаследовать от какого-то общего предка, если надо.

Насчет моделей - не уверен, что с ними что-то надо делать. Обычно не требуется делать отдельные модели для админки, но если у тебя не соблюдается MVC и модели это на самом деле контроллеры то конечно возможно варианты.
Ответы: >>995049
Аноним 2017/05/23 00:31:58  №995049 573
>>995047
Спасибо. Тоже так считаю.

Чуть переписал роутер, чтоб он искал контроллеры в другой папке, если первый элемент пути в ссылке будет 'admin'. Осталось раскидать этот жирный контроллер. А модели и правда нет смысла разделять, только сильнее запутаю.

Чет я просто сначала запаниковал и расстроился. Теперь не все так плохо выглядит.

>если у тебя не соблюдается MVC и модели это на самом деле контроллеры то конечно возможно варианты
Оп говорит, что я там хуйни наворотил и вообще не шарю, но вроде модели и контроллеры не перепутаны, методы моделей инкапсулировал как мог.
Ответы: >>995053
Аноним 2017/05/23 00:39:46  №995053 574
>>995049

Еще нужны отдельная папка для шаблонов. И может быть для CSS/JS если в админке другие стили.
Ответы: >>995060
Аноним 2017/05/23 00:46:15  №995060 575
Ответы: >>995123 >>995949 >>996037
Аноним 2017/05/23 08:16:59  №995093 576
Платиновый вопрос.

Есть таблица с 50 колонками и пару тысячу строк. Что лучше, загрузить большой объем данных и обрезать его в пхп, или делать много запросов и получать маленький объем данных?
Ответы: >>995094 >>995237 >>995259
Аноним 2017/05/23 08:55:19  №995094 577
Аноним 2017/05/23 12:00:36  №995123 578
>>995060
Слушай, я по случаю тоже сижу в ноуфап треде. Может сверстаем ОПу годный сайт на бутстрапе? Будем его поддерживать вводить новые фишки, такой-то опыт командной работы.
Ответы: >>995200
Аноним 2017/05/23 12:57:49  №995142 579
>>994741
Переделал.
- Перешёл с простого mysql на PDO.
- Перенёс отрисовку страниц в отдельные файлы шаблонов, типа manager.html.
- Переписал скрипт проверки, убрав вложенность условий. Работает теперь так: если нет куков - отфутболить. Если есть, проверить соответствие в базе, не прошло - отфутболить. Если всё ок - ничего не делать.
- Сам скрипт перенёс в отдельный файл protection.php https://jsfiddle.net/3v48dsgo/

В управляющих скриптах страниц мало что осталось. Например, manager.php:
// Скрипт проверки
include('./protection.php');

// Это используется при отрисовке шаблона
$user_id = $userdata['user_id'];

// Загружаем шаблон
include('./template/manager.html');



Собираюсь внести include('./protection.php'); в начало каждого управляющего скрипта на php, но сначала надо их немного привести в порядок.

Ну как теперь? Стало лучше? Что ещё не по фен-шую?
Ответы: >>996037
Аноним 2017/05/23 14:42:25  №995197 580
>>988868 (OP)
оп, красавчик, спасибо что ты есть....
Аноним 2017/05/23 14:48:56  №995200 581
>>995123
>сверстаем
Я сейчас не собираюсь в верстку углублятся, освоил азы бутстрапаи и пока хватит. После цитатника надо Зандстра добить, а это надолго. Да и личного интереса нет, не цеплет меня идея.

Алсо, смотрел исходники его сайта, там класов и пространства имен нет, каждая функция в отдельном файле. Первый раз такое вижу. Я особо не пытался разбираться, но вроде, с бэком у него все норм раз работает https://nofap.ru/files/nofap-28.02.2k17.tar.bz2 Да и дизайн пойдет, менять его голый бустрап, что шило на мыло.
Ответы: >>995201
Аноним 2017/05/23 14:50:10  №995201 582
>>995200
Ну да в портфолио сайт о ноуфапе не добавишь.
Ответы: >>995205 >>995206
Аноним 2017/05/23 15:13:33  №995205 583
>>995201
Собственно схуяли?
Работа сдалана вот и заебись.
Я щас сайт для заказа шлюх сделаю и в портфолио он у меня будет красоваться повыше остальных из-за сложности.
Аноним 2017/05/23 15:15:53  №995206 584
>>995201
Я свой в гитхабе собираюсь оставить, то в очередь платформа для коллекции любых цитаточек. Да и если название достойное придумтаь, то можно и цитатки оставить, благо там нормальные авторы.

А нофа да, спецефический ресурс, случайному человеку даже объяснять будет стыдно нахуя он нужен. Хот видно, что работы там дохуя проделано.
Ответы: >>995207
Аноним 2017/05/23 15:17:23  №995207 585
>>995206
>Я свой в гитхабе собираюсь оставить
Правда, я там почти все оставляю, чтоб прогресс было видно, а его видно. Только в ридми пишу, что говно, но переделывать не собираюсь
Ответы: >>995208
Аноним 2017/05/23 15:23:47  №995208 586
>>995207
>говно, но переделывать не собираюсь
мы вам позвоним...
Аноним 2017/05/23 16:39:11  №995237 587
Ответы: >>995259
Аноним 2017/05/23 17:13:50  №995259 588
>>995237
>>995093
Мало данных. Не понятно что тебе нужно сделать и с чем. Постоянно показывать всю таблицу пользователям? Один раз обработать данные?
Ответы: >>995265
Аноним 2017/05/23 17:21:51  №995265 589
>>995259
>Постоянно показывать всю таблицу пользователям? Один раз обработать данные?
Ну смотри, у меня на сайте есть несколько хтмл таблиц, разбитые по категориям. Я могу сделать один запрос к БД и уже в пвп разрезать всю огромную таблицу на несколько мелких. А могу сделать несколько запросов с выборкой только нужной категории под каждую таблицу на сайте.
Будь у меня таблица в БД не такая большая с кучей текста, я бы сказал, что мне абсолютно похуй. Но теперь я хочу знать, что лучше один запрос, который возвращает дохуя, или штук десять разных, которые возвращают каждый 1/10 всей таблицы.
Ответы: >>995280 >>996037
Аноним 2017/05/23 18:31:21  №995280 590
Аноним 2017/05/24 03:25:05  №995503 591
Как правильно передавать в джаваскрипт, который в темплейте, переменную из модели/контроллера?
Ответы: >>995