Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопросы от новичков [3]
Полнейший бред конечно, типичный представитель "индусского кода", основателями которого собственно и являются хитрые индусы, которые в свое время быстро смекнули, что их зарплата прямо пропорциональна зависит от кол-ва строк кода... В те далекие времена когда только-только вышел ie 5.0(если мне память не изменяет) не было у рядовых граждан такого слова-паразита как "выйти в интернет" итп, в те времена в моде было словосочетание "Пойду, поброжу по Nescape Communicator", в этот момент Биллу и пришла в головы навязчивая идея сделать свой клиент(браузер) для работы в интернет, а самой главной фишкой было то, что он был "намертво" впаян в винду, в те времена знаете не так просто было с дискетками громандыми бегать Nescap'ы всякие таскать. Это сейчас люди на улице смотрят косо от такого форса, а тогда было просто лень, да я как сейчас помню как на 1.44 мортал комбаты таскали "из рук в руки" Примечательно что разработчиками IE 6, 7, 8 являются почти все поголовно индусы
Команда разработчиков IE7. Вглядитесь в эти лица.
И на количество пальцев, что показывает нижний-правый программист, их сумма явно не стакается с "7 версией осла" да и надпись на майке seven, для этих людей тоже пустой звук - это имхо!
В таком коде не редко можно встретить такие вещи как :
Сложно конечно воздержаться от высказывания, что твой код отчасти - говнокод, в традиции которого "на века" вбиты такие вещи как название функций\методов\классов\переменных русскими словами, но написанные на транслите. Сюда можно отнести и комменты на русском или вообще полное отсутствие комментов. - имхо дурной тон!
Ну что за $kod, $numCab, $spec, $hoursOne, $hoursTwo и $vidZach в названиях переменных, которые плавно берут истоки из аргумента функции. Я вот не пониманию, что такое $hoursOne/Two, $vidZach и думаю никто тут без "стакана" не разберет. Да и вообще зачем плодить кучу функций с огромным количеством аргументов? Хотяб добавь к ним $kod = 0, чтоб дефолты какие-то были, дабы меньше заморачиваться пытаясь в очередной раз освежить в памяти что там за аргументы нужны истерично пытаясь найти эту функции в громадном инклуде который лежит в папке libs и называется func.php - утрирую.
Конечно идеальным вариантом на мой взгляд будет передавать в аргумент массив. Конечно можно и некий модуль под это дело подогнать, но тут вопрос проф пригодности встает очень остро, к примеру я попробую в общих чертах показать что нам нужно от модели "teachers", очень поверхностно я ее рассмотрю :
'teacherID'=>0,// это бывшаая $kod, думаю теперь это будет ID
'teacherSpecialty'=>0,// это бывшая $spec, я перевел её как "специальность".
'teacherFirstname'=>'',// Имя преподавателя
'teacherSecondname'=>'',// Фамилия
// 'cutName' я к сожалению как ни бился перевести не смог, буду считать это вышеуказанной фамилией.
// 'hoursOne/Two' я так понимаю это время когда учитель заступил на свой пост и покинул смену, изходя из этого расчитывается общее кол-во часов ?
'teacherEmployment'=>array('begin'=>0,'end'=>0,'total'=>0),// Достаточно просто в абстрактном плане понимания на мой взгляд.
// прости но '$vidZach' - я хз как вообще можно перевести кроме как "вид зачета" )
'teacherTypeoffSet'=>0,// Допустим это сокращение от Teacher Type of offset ака vidZach
'teacherClassroom'=>0,// Слово кабинет на англ. выглядит именно так как ты сократил $cabNum - cabinet, хотя можно и schoolroom или auditorium
// Далее у тебя идут какие-то группы и специальности, смысла хранить их в базе я не вижу вообще, вот хоть убей меня!
// Нету смысла их так-же пихать сюда, вот зачем они тут?
// Хотя конечно список групп можно при желании засунуть в какую нибудь табличку базы, а можно сделать текстовое поле рядом с персональными данными учителя,
// и туда через implode пихать значения констант групп, потом так-же легко это все распарсится.
// Объявим константы, сделаем битовые маски! Да здравствует полнота очущений от полноценного языка!
);
// Собственно я уже выше писал, что можно можно объявить специальности как константы, особенно если их мало.
// Группы аналогично можно пихнуть куда нибудь в таблицу teachers, получится одна красивая табличка в которой будет в одной строке вся инфа!
if($teacher_group& TEACHER_GROUP_ONE){// Учитель состоит в группе один,
}
if($teacher_group& TEACHER_GROUP_THREE){// Учитель состоит в группе три,
}
// Исключать из группы или увольнять по проф непригодности тоже проще пареной репы, надо знать всего лишь константу той группы от которой надо избавить учителя
$teacher_group&= ~ TEACHER_GROUP_ONE;
// Теперь сохранить новое значение переменной в базу и все. Учитель больше не состоит в группе один.
- Ты обладатель типичного представителя индусского кода, вреда от него скорей больше, чем пользы даже если ты получишь по рублю за каждую строку.
При каждом выполнении скрипа у тебя может открыться и тут-же закрыться Nнндцать подключений к базе, что само-собою скажется на скорости работы приложения.
Решения давно есть, нужно смотреть в сторону ООП. Серьезных приложений в которых все больше и больше разных вещей нужно как-то хранить в пределах жизни скрипта и получать из любого места кода не бывает в процедурном стиле!
Нужно строго контролировать текущее подключение к базе данных и хранить ссылку на него как-нибудь экзотическим для процедурного стиля понимания способом, ну как вариант использовать паттерн Singleton, а вообще можно при желании и паттерн Registry под это дело приспособить.
Подключение к базе должно быть (*опционально) инициировано автоматически при первом обращении к методу класса который должен будет заниматься собственно связью с этой базой (это должен контролировать какой нибудь класс, опять-же синглтон вполне справляется, но можно некий класс-прослойку написать, исчезнут лишние строки Singleton::getInstance(); в каждом методе который как-то работает с базой, но с другой стороны не самая лучшая идея плодить классы ради класса. Риторический вопрос конечно. )
Нужно как-то ловить ошибки (конструкция : try - catch), а чтоб их ловить нужен класс который собственно будет плеваться этими самыми ошибками, в этом плане PDO прекрасно справляется, но опять же без синглтона никуда ! К тому-же нету необходимости заморачиваться со всякими mysql_real_escape_string, в PDO своя система которая зачищает некоторые запросы от sql-инъекций, шансов нет!)
Покинул форум
Сообщений всего: 70
Дата рег-ции: Февр. 2012 Откуда: Пермь
Помог: 1 раз(а)
sKaa Спасибо за развернутый ответ!) Большое спасибо! Насчет говно кода понимаю!) Я учусь в техникуме, и мне диплом лишь сдать, потому что сроки подходят, после этого я этот проект полностью буду переписывать для себя. И во вторых не со школой связано, вы немного ошиблись Тема "Аттестация техникума".
Цитата:
Сюда можно отнести и комменты на русском или вообще полное отсутствие комментов. - имхо дурной тон!
Ну что за $kod, $numCab, $spec, $hoursOne, $hoursTwo и $vidZach
Знаю, знаю. Пишу тороплюсь, про коменты забываю.
$hoursOne, $hoursTwo - поле из таблицы дисциплин.
$numCab - поле из таблицы преподавателей.
Честно спасибо за развернутые комментарии вам, я не любитель говнокода и осознаю что сейчас у меня такой, но если я сейчас займусь еще и ООП то я не в сроки сдам))а к осени.
А насчет функции той я из трех сделал одну, передаю неизвестное количество параметров,название таблицы, и добавляю.
Насчет альтернативного синтаксиса, я понимаю что он делает, так что так подробно может и не надо было. Но зато другие почитают. Мне проще писать {}
Входной порог - пускай входят, говнокод пишут, дальше этого не уедут.
P.S. Не забывайте, вы когда тоже были в касте "Индусского кода", скажете не были, не поверю.
Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012
Помог: 0 раз(а)
Все ровно принимает значение false
LIME
Отправлено: 12 Мая, 2012 - 13:36:46
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
клиент принял значение фальс ))
Леди_Мари
Отправлено: 12 Мая, 2012 - 13:55:27
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012
Помог: 0 раз(а)
что делать?? (Добавление)
в чем еще может быть проблема? я не знаю((
EuGen
Отправлено: 12 Мая, 2012 - 14:08:43
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Леди_Мари
Приведенный Вами код не делает вывод ничего, кроме "Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!" (это единственное echo в коде) - и то в случае наступления некоторого условия.
Приведите код программы полностью, не отрезок (проблема, подозреваю, не в нем).
И убедитесь, что Вы ознакомились с материалами http://phpfaq[dot]ru/debug
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Леди_Мари
Отправлено: 12 Мая, 2012 - 14:33:19
Новичок
Покинул форум
Сообщений всего: 25
Дата рег-ции: Май 2012
}else{echo'Класс введен неправильно. Вы ошиблись. Попробуйте снова!!!';}
$r=mysql_query("select schedule_student.data, schedule_student.nomber_lesson, lesson.name from schedule_student, lesson where schedule_student.IS_lesson = lesson.ID_lesson and schedule_student.ID_class= '$id_class' order by schedule_student.nomber_lesson ASC");
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.