П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 180363 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 78653 раз(а).

Учебник HTML.
Просмотров 75671 раз(а).

Руководство по PHP5.
Просмотров 46689 раз(а).

Хостинг через призму DNS.
Просмотров 54144 раз(а).

Подборка текстов стандартных документов.
Просмотров 46602 раз(а).

Учебник PHP - Самоучитель
Просмотров 52783 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 53380 раз(а).

Внешние атаки...
Просмотров 43164 раз(а).

Учебник PHP.
Просмотров 38718 раз(а).

SSI в примерах.
Просмотров 28636 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 10. Формы

Динамическое конструирование форм

До настоящего момента я программировал все формы вручную. Любому программисту известно, что ручное кодирование — это плохо, поскольку оно увеличивает вероятность ошибок, не говоря уже о лишних затратах времени.

В следующем разделе я представлю сценарий, в котором раскрывающийся список строится динамически по содержимому массива. Этот прием несложен, однако он экономит немало времени как при исходном программировании, так и при последующем сопровождении программы.

Пример 7: построение раскрывающегося списка

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

В листинге 10.9, как и в предыдущих примерах, реализован вариант с одним сценарием. Сначала мы проверяем, было ли присвоено значение переменной $site. Если проверка дает положительный результат, вызывается функция header() с параметром, в котором значение $site присоединяется к строке «Location:http://». При передаче этой команды функция header О перенаправляет браузер на указанный URL. Если значение переменной $site не задано, форма выводится в браузере. Раскрывающийся список строится в цикле, количество итераций зависит от размера массива Sfavsites. В листинге 10.9 я включил в этот массив пять своих любимых сайтов. Конечно, вы можете добавить в него сколько угодно своих сайтов.

Запомните одно важное обстоятельство — функция header() должна вызываться до вывода данных в браузере. Ее нельзя просто вызвать в любой точке сценария РНР. Несвоевременные вызовы header() порождают столько проблем у неопытных программистов РНР, что я рекомендую повторить это правило раз пять, чтобы лучше запомнить его.

Листинг 10.9. Динамическое построение раскрывающегося списка

<?
if($site != "") :
  header("Location: http://Ssite");
  exit;
else :
  ?>
  <html>
  <head>
  <title>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;
?>

Динамическое конструирование форм особенно удобно при обработке больших объемов данных, которые в любой момент могут измениться, что приведет к устареванию всей жестко закодированной информации форм. Впрочем, я рекомендую жестко кодировать все статические данные(например, список штатов США), поскольку это ускорит работу программы.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru