Программирование для начинающих - совет по разработке веб-приложения - PullRequest
5 голосов
/ 23 августа 2009

Я делаю немного HTML / CSS для развлечения, но я собираюсь приобрести некоторые навыки программирования.

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

Моя идея ...

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

Особенности:

  • Приложение может проводить несколько экзаменов
  • Может рандомизировать вопросы или отображать их в порядке
  • Есть возможность отобразить ответ на каждый вопрос
  • Время проведения экзамена
  • Страница администратора для добавления новых экзаменов и вопросов / ответов

Хорошо, вы, ребята, можете перестать смеяться, я знаю, что это на шаг выше Hello World, но думал, что я где-то начну!

Я разработаю это на PHP / MYSQL или, возможно, RoR, если вы, ребята, считаете, что лучше для новичка. Я думаю, что я буду в порядке чтения / записи в БД, но я не уверен в структуре сайта, дизайне БД и, как правило, лучше всего это сделать.

Если у меня есть экзамен, состоящий из 50 вопросов, каждый из которых получает удостоверение личности. Если я удалю один вопрос, как мне обновить остальные с новыми идентификаторами? То есть если я удалю вопрос 3, все последующие вопросы должны будут сдвинуть свой идентификатор обратно на 1.

EDIT:

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


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

Ответы [ 5 ]

8 голосов
/ 23 августа 2009

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

Чтобы перейти к вашему вопросу: зачем вам нужны последовательные идентификаторы для вопросов? Для базы данных вам просто нужно иметь разные идентификаторы в строке.

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

Надеюсь, это то, что вы ищете, удачи!

2 голосов
/ 23 августа 2009

Если у меня есть экзамен, состоящий из 50 вопросов, каждому из которых присвоен идентификационный номер. Если я удалю один вопрос, как мне обновить остальные с новыми идентификаторами? То есть если я удалю вопрос 3, все последующие вопросы должны будут сдвинуть свой идентификатор обратно на 1.

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

Если вы решите поехать с Rails, посетите превосходный сайт Ryan Bates Railscasts .

2 голосов
/ 23 августа 2009

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

  1. Exams
  2. Экзамен Takers
  3. Вопросы
  4. Ответы

И некоторые из них будут привязаны друг к другу:

  1. Вопросы -> Экзамены
  2. Takers -> Экзамены
  3. Ответы -> Вопросы

Всякий раз, когда у вас возникают подобные ситуации, вам необходимо определить, являются ли отношения один-к-одному, один-ко-многим или многие-ко-многим. Вопросы могут принадлежать одному экзамену или нескольким. Это решать вам. Если Вопрос принадлежит только одному экзамену, вы можете создать поле в своей таблице Вопросов для хранения идентификатора экзамена. Если Вопрос может принадлежать многим экзаменам, вы создадите новую таблицу с двумя полями: QuestionID, ExamID. Это строит ваши отношения «многие ко многим».

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

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

1 голос
/ 23 августа 2009

Я согласен со всеми другими ответами, реализация полезного приложения - отличный способ изучить веб-разработку. Но, как сказал Джонатан, это не очень простое приложение, которое вы планируете создать. Тем не менее, вот мои мысли:

Ruby on Rails - это фреймворк для Ruby. Он также может использовать MySQL. PHP является языком программирования (так как ruby ​​для RoR) и не предоставляет фреймворка. Тем не менее, для PHP есть немало: CodeIgniter , Zend Framework , Symfony или CakePHP и многие другие. Фреймворки реализуют часто используемые аспекты приложения гибким способом, поэтому их можно использовать для различных приложений. Некоторыми из этих аспектов могут быть аутентификация, доступ к базе данных, кэширование, рендеринг шаблонов и многое другое.

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

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

Другой частью вашего приложения будет база данных. Некоторые фреймворки предлагают какой-то ORM , который «защитит» доступ к базе данных от вас, как только вы настроите свою схему. Я все еще рекомендовал бы взглянуть на то, как запрашивать базу данных, потому что тогда вы знаете, что делает платформа, когда она извлекает данные из базы данных.

Этот кажется хорошим ресурсом для введения в mysql-сервер и содержит некоторые ссылки на sql-руководства (для запросов к db-серверу). И я бы порекомендовал этот урок о том, как создать схему базы данных.

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

1 голос
/ 23 августа 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...