|
 644.8 Кб |
|
| Помогите!!!! Как создать форму в виде таблицы для ввода оценок по предмету(который есть в бд), где первая колонка это фамилии учеников из бд, а первая строка таблицы даты за определенный период, на пересечении даты и фамилии выставляется оценка, интересует реализация при помощи mysql и php. и возможно это только при помощи mysql и php. примерно как в файле. | |
|
|
|
|
|
|
|
для: YF
(20.12.2012 в 21:45)
| | Конечно возможно, а в чем сложности то возникли? | |
|
|
|
|
|
|
|
для: YF
(20.12.2012 в 21:45)
| | гораздо проще и правильнее внести возможность редактирование каждой строки данной таблицы, нежели чем пытаться вбить все в одну таблицу. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 09:56)
| | Это почему же так выгоднее? | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 10:52)
| | Как почему ?
Придется решать вопрос сохранения измененных записей.
Не говоря уже о вопросе проверки корректности внесенных данных. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:24)
| | И в чем же сверх сложность такой задачи?
То что вы предлагаете оправдано для расширенного редактирования, например, индивидуальных данных ученика. Тогда да, иначе такие данные как оценка учеников нужно редактировать/обновлять комплексно, группой, а не дергать страницы по пустякам. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 11:28)
| | Представим что в базе оценка число - пользователь вбил строку, что далее произойдет ?
Ловим exception и набивать все заново ? | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:35)
| | каждое значение просто проверять на сервере на соответствие и корректные данные пишем в базу, а некорректные сообщаем пользователю, кстати если это электронный журнал то там и отсутствие и опоздания также проставляются, так что поле должно быть строковым в БД, хотя можно и числовым значением обойтись | |
|
|
|
|
|
|
|
для: Lotanaen
(21.12.2012 в 11:38)
| | Я еще раз повторю, оценка - число - что будете делать с данными введенными за этим недоразумением, вы поймали исключение, неужели думаете цикл продолжится ? | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:43)
| | конечно цикл продолжится :) | |
|
|
|
|
|
|
|
для: Lotanaen
(21.12.2012 в 11:49)
| | Я тогда здесь бессилен, объяснять не буду. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:57)
| | а зачем мне объяснять? я знаю как это реализовать(особых сложностей я не вижу) - ничего теряться не будет. Ввот что Вы пытаетесь доказать? Значения нужно проверять перед записью в базу и не допускать ошибки записи... | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:43)
| | Какое исключение? О чем Вы? Об exception на ошибке при попытке записать в БД некорректные данные?
Так вообще-то таких исключений дОлжно не допускать!
Сперва все данные проверять на корректность, и только потом принимать решение, что делать дальше. Либо писать в базу, есил все ОК, либо выдавать пользователю уведомление об ошибке, если таковые имеются.
После exception конечно ничего не продолжится (разве что в блоке обработки exception'a), но их не должно быть! | |
|
|
|
|
|
|
|
для: Sfinks
(21.12.2012 в 12:18)
| | >Какое исключение? О чем Вы? Об exception на ошибке при попытке записать в БД некорректные данные?
>
>Так вообще-то таких исключений дОлжно не допускать!
>Сперва все данные проверять на корректность, и только потом принимать решение, что делать дальше. Либо писать в базу, есил все ОК, либо выдавать пользователю уведомление об ошибке, если таковые имеются.
>
>После exception конечно ничего не продолжится (разве что в блоке обработки exception'a), но их не должно быть!
Ну это бред, интересно, кто вам сказал, что исключения это зло ?
Вы в курсе, что исключениями можно таки обработать ваши данные на корректность ? | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 12:57)
| | А вы в курсе что можно микроскопом гвозди забивать?
Но почему-то большинство людей этого не делает.
Или это от того, что им гениальности не хватает?
Присоединяюсь к остальным: Учите мат.часть! | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:35)
| | А вы заглядывали в раздел руководства РНР - функции для работы с массивами?
Если нет, то пора бы. То что вы описываете как крах и невозможность, на самом деле плевое дело для РНР. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 11:42)
| | Вы еще и массивы привлечете для такой задачи, не проще ли дать возможность редактировать строку пользователю и напрямую писать и обрабатывать результат... | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:48)
| | Да.... даже и комментировать ваше высказывание трудно - $_POST или $_GET данные полученные формой, это знаете ли уже массив, не знали? | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 11:56)
| | И что вы хотите этим сказать ?
Ну гоняйте данные пользователя, бога ради - это ваше право. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 12:00)
| | Я хочу сказать этим, что вам рано что либо советовать кому либо, сначала научитесь сами представлять задачи и выгодные пути их решения. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 12:07)
| | Я могу вам возразить, но не буду, потому что доказывать никому ничего не хочу, не пишите мне больше. Сделаем так. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 12:10)
| | Да не надо доказательств. Ну что это такое - удивляться по поводу применения функций для работы с массивами тогда, когда набор данных и является массивом? О каком представлении задачи вообще в этом случае может идти речь - нет этого представления. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 12:23)
| | Ау, кто вам сказал, что я удивлен, я прекрасно знаю что такое массивы, этим вы не актуальны для меня, поверьте, не надо здесь раздувать понятия...
Все что я хотел сказать, что подобную задачу, я не буду решать через ваши решение.
На этом моя писанина закончилась. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 12:54)
| | Да решайте как хотите, только не советуйте другим своего решения, оно пагубное, в лоб. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 09:56)
| | ну так и вбивать и редактировать можно практически одним и тем же скриптом - пользователю удобней будет сразу всем ученикам оценки выставить и за все даты, а не перезагружать страницу каждый раз | |
|
|
|
|
|
|
|
для: Lotanaen
(21.12.2012 в 11:09)
| | Расскажите тогда, подробнее как будет вести себя этот скрипт, если пользователь вдруг нечаянно в 5 строку 4 столбца вобьет не оценку, а крякозябру - ?
Словим мы исключение mysql, и что мы скажем пользователю - извини снегерировалось исключение, твоя строка не число, повтори все заново ? | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:33)
| | а пользователю можем ответить все что угодно - например вносим только верные значения в базу данных, а не верные во вновь окрытой форме помечаем красным цветом например | |
|
|
|
|
|
|
|
для: Lotanaen
(21.12.2012 в 11:36)
| | Милое дело, сижу себе забиваю данные все забил, правда ошибся в самом начале, нажал кнопку сохранить, а тут на тебе ошибка - вы ввели строку а не число, ловим исключение и что дальше ?
Работа на смарку ? | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:40)
| | все корректно введенные данные пишем в базу - проблем я не вижу что бы это сделать | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 11:40)
| | вы немного загоняетесь :)
даже если при допущенной ошибке мы ничего в базу не пишем (хотя нам ни что не мешает это сделать относительно корректно введенных данных), то можно вернуть форму с введенными значениями и пометкой что нужно исправить | |
|
|
|
|
|
|
|
для: YF
(20.12.2012 в 21:45)
| | Нет, только на mysql и php этого не сделать, нужен еще и html )
Сделать лучше так:
а) получаете из базы данные за период
б) выводите html таблицу заключенную в тег form, а в ячейки таблицы помещаете элемент input, значение которого равно оценке, а имя отображает массив, ключами в котором должен быть указан ключ связывающий колонку и строку записи в базе (то есть, колонка mysql таблицы и id ученика)
в) эти же данные (колонка mysql таблицы и id ученика) помещаете в сессионный массив
г) при получении формы из сессионного массива вычитаете те ключи, данные которых не изменились (то есть оценка ученика осталась прежней)
д) из сессионного массива формируете запрос для многострочного обновления и делаете запрос к базе.
Такой сценарий оправдан, если число записей выводимых большое, иначе не надо хранить массив в сессии, а просто произвести многострочное обновление по данным пришедшим в форме - при малом числе строк данных вторичная перезапись не измененных данных не так и обременительна, тем более, что это и проверять можно. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 11:07)
| | Спасибо, намек ясен :)), но только для связи ученика и оценки, а как быть с датами? Необходимо, чтобы даты на экране присутствовали независимо от того есть для этой даты оценка или нет, а потом как то это связать, может и вопрос конечно тупой, но тем не менее.. я в этой области пока еще чайник, и на данный момент организовано как раз как говорилось выше "редактирование каждой строки данной таблицы", а это неудобно для пользователя | |
|
|
|
|
|
|
|
для: YF
(21.12.2012 в 13:14)
| | >а как быть с датами? Необходимо, чтобы даты на экране присутствовали независимо от того есть для этой даты оценка или нет
Ну так вы же будете делать запрос на месяц, я правильно понимаю? Выводите в таблице эти данные - есть оценка за эту дату, значит она и будет в таблице, а нет (в базе пусто было) значит и не будет в таблице ничего.
>на данный момент организовано как раз как говорилось выше "редактирование каждой строки данной таблицы"
Учителя не жалко, у которого 50 учеников, к примеру, и который будет вынужден 50 раз ждать перезагрузки страницы, чтобы всем чадам своим оценки выставить?
Если производить построчное редактирование, тогда нужно привлечь для этого Ajax - в этом случае не надо отсылать на сервер форму, просто любые изменения учителем в таблице на странице будут автоматически изменяться и в базе. | |
|
|
|
|
|
|
|
для: confirm
(21.12.2012 в 13:50)
| | >Учителя не жалко, у которого 50 учеников, к примеру, и который будет вынужден 50 раз ждать перезагрузки страницы, чтобы всем чадам своим оценки выставить?
Это смотря как сделать, на скриншоте выбран ученик Петров для него и редактируются успеваемость, чушь не порите, пожалуйста. | |
|
|
|
|
|
|
|
для: oradev
(21.12.2012 в 15:53)
| | Вот что я вам скажу - вы либо понимаете РНР как просто список чего-то в нем содержащего, либо вы понимаете, что это не просто перечень, а инструменты, но тогда понимая это вы не имеете никакого представления где их можно, а главное где их нужно применять.
Я всегда говорил, и вам скажу тоже самое - умные учебники о языке и программировании, это конечно хорошо, но если изучающий язык не может сформулировать задачу, не может найти оптимальное и выгодное решение ее, то такому учащемуся лучше читать "Муму".
Вы не обижайтесь, но вы явно не представляете себе той среды, в которой пытаетесь программировать, не понимаете ее специфики взаимодействия сервер-клиент, а потому и несете чушь несусветную о трудностях проверки данных, о каких-то мифических сложностях в том, что решается просто. Отсюда видимо и ваши предложения как это сделать. И если автор темы говоря, что он в этом не понимает в общем то, и потому делает "по вашему", то это понятно и простительно для него. Для вас же, утверждающему, что вы все прекрасно знаете, ваш подход крайне не оправдан, и говоря о вашем подходе, в ваш адрес уже надо говорить - для вас это не простительно. | |
|
|
|