Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2008, 11:57   #1
sleeper_Izh
Пользователь
 
Регистрация: 14.06.2008
Сообщений: 12
По умолчанию вопрос по php от начинающего

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

Захотел сделать это всё в одном скрипте.
определяю какая кнопка нажата( редактирование, удаление записи и т.д.) по свойству "hidden" в форме.

И вот получается такой код(точнее отрывок):

Код:
if (count($_REQUEST)==1 or isset($_REQUEST['choose_page']))
{
	print_table($_REQUEST['page']);
	main_page();
}
else
{
	if (isset($_REQUEST["add_student"]))
	{
		if ($_REQUEST["add_student"]=="step1")
		{
			add_student();
		}
		else
		{
			add_student2();
		}
	}
	else
	{
		if (isset($_REQUEST["delete_id"]))
		{
			if (substr($_REQUEST["delete_id"],0,2)=="id")
			{
				delete_id();
			}
			else
			{
				delete_id2();
			}
		}
		else
		{
			if (isset($_REQUEST["edit_id"]))
			{
				if (strlen($_REQUEST["edit_id"])==1)
				{
					edit_id2();
				}
				else
				{
					edit_id();
				}
			}
			else
			{
				if (isset($_REQUEST["search_student"]))
				{
					if ($_REQUEST["search_student"]=="step1")
					{
						search_student();
					}
				}
			}
		}
	}
}

Видно много вложенных условий, определяю нажата ли какая нить кнопка, и выполняется соответствующая функция.
Это то мне и не нравится. Слишком много вложений, а если ещё добовлять функции, то будет ещё больше. С точки зрения "производительности" тоже не очень правильно, т.к. если имеется, например, $_REQUEST["search_student"], то выполняется много проверок.

Как можно сделать по проще и чтобы всё было в одном скрипте?

ЗЫ: Надеюсь всё понятно
ЗЫЫ: Простите за ошибки.
заранее спасибо.
sleeper_Izh вне форума Ответить с цитированием
Старый 14.06.2008, 15:55   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Страшно как.. Сразу видно, дельфятник.

Покажи HTML твоей формы с кнопками.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 14.06.2008, 22:17   #3
sleeper_Izh
Пользователь
 
Регистрация: 14.06.2008
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Johnatan Посмотреть сообщение
дельфятник
это что значит?



а код вот:
Код HTML:
<center> 
<table border="0" align="center" cellspacing="0" cellpadding="0" >
<tr> 
<td> 
<table border="1" align="center" cellspacing="0" cellpadding="0" bordercolor="bisque" >
  <tr> 
    <th>ID_Student</th><th>Family</th><th>Name</th><th>FatherName</th><th>Sex</th><th>Birthday</th><th></th><th></th> 
  </tr> 
  <tr> 
    <td align="center"  bgcolor="thistle">&nbsp;1&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Крылов&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Денис&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Олегович&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Мужской&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;03-07-1989&nbsp;</td><td align="center" valign="center"> <form action="student.php" method="post"><input name="delete_id" type="HIDDEN" value="id1"><input name="image" type="image" src="b_drop.png"></form></td><td align="center" valign="center"> <form action="student.php" method="post"><input name="edit_id" type="HIDDEN" value="id1"><input name="image" type="image" src="b_edit.png"></form></td>

  </tr> 
  <tr> 
    <td align="center"  bgcolor="thistle">&nbsp;2&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Жильцов&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Олег&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Чеевич&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Мужской&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;01-01-1989&nbsp;</td><td align="center" valign="center"> <form action="student.php" method="post"><input name="delete_id" type="HIDDEN" value="id2"><input name="image" type="image" src="b_drop.png"></form></td><td align="center" valign="center"> <form action="student.php" method="post"><input name="edit_id" type="HIDDEN" value="id2"><input name="image" type="image" src="b_edit.png"></form></td>
  </tr> 
  <tr> 
    <td align="center"  bgcolor="thistle">&nbsp;4&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Михеевна&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Юлия&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Чеевна&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;Женский&nbsp;</td><td align="center"  bgcolor="thistle">&nbsp;01-02-1989&nbsp;</td><td align="center" valign="center"> <form action="student.php" method="post"><input name="delete_id" type="HIDDEN" value="id4"><input name="image" type="image" src="b_drop.png"></form></td><td align="center" valign="center"> <form action="student.php" method="post"><input name="edit_id" type="HIDDEN" value="id4"><input name="image" type="image" src="b_edit.png"></form></td>

  </tr> 
  <tr> 
    <td title="Add new student" align="center" valign="middle"> 
    <form action="student.php" method="post"><input name="image" type="image" src="add.gif"><input type="hidden" name="add_student" value="step1"> </form> 
    </td> 
    <td colspan="7" title="search of student" align="center" valign="middle"> 
    <form method="post"> <input type="text" title="Enter family " name="f" value=""><input name="image" type="image" src="search.gif"><input type="hidden" name="search_student" value="step1"></form> 
    </td> 
    </td> 
  </tr> 
</table> 
</td> 
<td> 
<FORM method="post"> 

<SELECT NAME="page"> 
  <OPTION  selected  value="0">1</OPTION><BR> 
  <OPTION  value="1">2</OPTION><BR> 
</SELECT><BR> 
<INPUT TYPE="submit" NAME="go" VALUE="go" > 
<input name="choose_page" type="HIDDEN" value="step1"> 
</form> 
</td> 
</tr> 
</table> 
sleeper_Izh вне форума Ответить с цитированием
Старый 14.06.2008, 22:19   #4
sleeper_Izh
Пользователь
 
Регистрация: 14.06.2008
Сообщений: 12
По умолчанию

там как бы кнопки в виде рисунков - они пока не аккуратные, ещё не занимался ими
sleeper_Izh вне форума Ответить с цитированием
Старый 15.06.2008, 03:33   #5
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

http://www.php.net/manual/ru/control...res.switch.php
Должно тебе помочь.
Но прежде чем начинать программировать, я бы тебе посоветовал почитать книжку какую-нибудь по теме.. А то ты так никуда не уйдёшь. А рассказывать азы тебе никто не будет.

Я не понимаю зачем ты вообще формы делаешь и кнопки в них?
Чем тебе не подходит конструкция:
Код HTML:
<a href="student.php?delete_id=id3"><img src="b_edit.png" alt="" border="0" /></a>
???
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 15.06.2008, 20:09   #6
sleeper_Izh
Пользователь
 
Регистрация: 14.06.2008
Сообщений: 12
По умолчанию

дык что бы всё передовалось методом post.

А книжки я читал: просто синтоксис предпочитаю использовать привычный, а суть всё равно не изменится.
sleeper_Izh вне форума Ответить с цитированием
Старый 16.06.2008, 01:02   #7
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

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

Я ни в одной книжке такого не видел, что ты пишешь. Поэтому извини, но я не верю в то, что ты что-либо читал по теме.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 16.06.2008, 11:08   #8
sleeper_Izh
Пользователь
 
Регистрация: 14.06.2008
Сообщений: 12
По умолчанию

Да я вообще то не про синтаксис изначально спрашивал.

ну будет у меня написано так:
Код:
switch $_REQUEST['parametr'] {
case "edit_id":
    //...
    break;

.....


case "delete_id":
     //...
     break;
}

всё равно пока проверка дойдёт до последнего пунка произойдёт много "лишних" проверок, вот я и спросил можно ли как нить избавиться от нихю?
как понял, нельзя.
Спасибо.

Последний раз редактировалось sleeper_Izh; 16.06.2008 в 11:12.
sleeper_Izh вне форума Ответить с цитированием
Старый 16.06.2008, 13:43   #9
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Можно, но ты не сделаешь так, потому что прийдётся вообще всю архитектуру твоего проекта переделывать.
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 16.06.2008, 14:44   #10
SkyM@n
Laravel/Vue expert
Старожил Подтвердите свой е-майл
 
Аватар для SkyM@n
 
Регистрация: 08.08.2007
Сообщений: 2,832
По умолчанию

Цитата:
Сообщение от sleeper_Izh Посмотреть сообщение
можно ли как нить избавиться от них?
Можно, вынеся все названия страниц в БД и сравнивая одной строкой и читая из той же БД.
SkyM@n вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Stringgrid, Procedure, cells[m,n]:=DynMas[a,b]. Очередной вопрос начинающего (#003) Albert2008 Компоненты Delphi 4 04.08.2008 12:00
Procedure,function,Stringgrid (#004) Очередной вопрос начинающего. Albert2008 Компоненты Delphi 4 01.08.2008 21:30
Stringgrid, cells[m,n] и двумерные массивы.(#002) Очередной вопрос начинающего. Albert2008 Компоненты Delphi 4 28.07.2008 19:02
Вопрос от начинающего - отступ текста aquapage HTML и CSS 2 29.05.2008 19:02