Изучаем PHP программирование

   Search   

Русская версия | English version   

Скрипты :: Секреты профессионалов :: Link :: FAQ   Пишите письма  



 

главная :: основы PHP

Заголовок

Динамическое конструирование форм До настоящего момента я программировал все формы вручную. Любому программисту известно, что ручное кодирование — это плохо, поскольку оно увеличивает вероятность ошибок, не говоря уже о лишних затратах времени. В следующем разделе я представлю сценарий, в котором раскрывающийся список строится динамически по содержимому массива. Этот прием несложен, однако он экономит немало времени как при исходном программировании, так и при последующем сопровождении программы. Пример 7: построение раскрывающегося списка Предположим, у вас имеется список сайтов, которые вы хотите порекомендовать посетителю из-за классного дизайна. Вместо того чтобы жестко кодировать каждую строку списка, можно создать массив и воспользоваться его содержимым для заполнения списка. В листинге 10.9, как и в предыдущих примерах, реализован вариант с одним сценарием. Сначала мы проверяем, было ли присвоено значение переменной $site. Если проверка дает положительный результат, вызывается функция header( ) с параметром, в котором значение $site присоединяется к строке «Location:http://». При передаче этой команды функция header О перенаправляет браузер на указанный URL. Если значение переменной $site не задано, форма выводится в браузере. Раскрывающийся список строится в цикле, количество итераций зависит от размера массива Sfavsites. В листинге 10.9 я включил в этот массив пять своих любимых сайтов. Конечно, вы можете добавить в него сколько угодно своих сайтов. Запомните одно важное обстоятельство — функция header( ) должна вызываться до вывода данных в браузере. Ее нельзя просто вызвать в любой точке сценария РНР. Несвоевременные вызовы header( ) порождают столько проблем у неопытных программистов РНР, что я рекомендую повторить это правило раз пять, чтобы лучше запомнить его. Листинг 10.9. Динамическое построение раскрывающегося списка Listing 10-9</Fit1e> </head> <body bgcolor="#ffffff" text="#000000" Iink="#cbda74" vlink="#808040" alink="#808040" $favsites = array ("www.k10k.com". "."www.yahoo.com", ","www.drudgereport.com", ","www.phprecipes.com", ","www.frogdesign.com"): "):// Создать форму <? <form action = "Listing10-9.php" method="post"> <select name="site"> <option value = "">Choose a site: $х = 0: while ( $х < sizeof ($favsites) ) : print "<option value='$favsites[$x]'>$favsites[$x]"; $x++; endwhile; ?> </select> <input type="submit" value="go!"> </form> <? endif; ?> Динамическое конструирование форм особенно удобно при обработке больших объемов данных, которые в любой момент могут измениться, что приведет к устареванию всей жестко закодированной информации форм. Впрочем, я рекомендую жестко кодировать все статические данные (например, список штатов США), поскольку это ускорит работу программы. </p> </font> <!-- #EndEditable --> </td> </tr> <tr> <td colspan=2 height="67"> <table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0"><tr> <td class="line" valign="bottom"> <font size="1" face="Verdana" color="#808080">Designed by <a href="mailto:mobsl@mail.ru">Fedin</a><br>All right reserved<br>2003-2004<br></font> </td> <td class="line" align="right" width="191" height="67"><img src="../../osnovi/img/klava.jpg" width="191" height="67" alt="" border="0"></td> </tr></table> </td></tr> </TABLE> <!-- copyright (i1) --><div align="center"><a href="http://www.ucoz.ru/" title="Создать сайт бесплатно"><img style="margin:0;padding:0;border:0;" alt="Hosted by uCoz" src="http://s205.ucoz.net/img/cp/5.gif" width="80" height="15" title="Hosted by uCoz" /></a><br /></div><!-- /copyright --> </body><!-- #EndTemplate --></html>