Опубликован: 24.12.2006 | Уровень: для всех | Доступ: платный
Урок 16:

Написание простой CMS вручную

< Урок 15 || Урок 16: 123456789

Создание сценария для добавления данных

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

  1. Откройте документ admin_cp_insert_processor.asp в режиме Code (Код).

    Файл не должен содержать никакого кода. Если код присутствует, следует его удалить.

    Прежде, чем добавить сценарий, нужно подумать, какие действия он должен выполнять. Он должен извлекать данные, введенные в форму и вставлять их в виде новой записи в таблицу tbl_country. После этого он должен перевести пользователя на страницу admin_cp_master.asp.

  2. Вставьте код, создающий подключение к базе данных.

    Для ASP:

    <%
    Dim dbConn
    set dbConn = server.CreateObject("adodb.connection")
    dbConn.open("newland")
    %>

    Для ColdFusion:

    <cfquery name="rs_insertCountry" datasource="newland">
    </cfquery>

    Для PHP:

    <?php
    // Set up connection to MySQL
    $host = "localhost";
    $user = "[введите имя пользователя]";
    $pwd = "[введите пароль]";
    $dbConn = mysql_connect($host,$user,$pwd);
    // Connect to newland_tours database
    $database = "newland_tours";
    mysql_select_db($database);
    ?>

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

    Совет.Поскольку при подключении страниц к базе данных постоянно применяется один и тот же код, многие разработчики хранят шаблон кода для присоединения к базе данных в отдельном файле, который и включают в каждый документ. Это может быть специальный подключаемый файл, например, Application.cfm или обычный подключаемый файл, доступ к которому осуществляется при помощи функции, например, require_once() (PHP). Фактически именно это делает Dreamweaver в случае с ASP и PHP при "регистрации соединения". Другими словами, подключение conn_newland, которое применялось разработчиками ASP и PHP в других разделах книги, является обычным подключаемым файлом, содержащим основную информацию, необходимую для подключения к базе данных newland_tours.
  3. В пустой строке, которая осталась на предыдущем шаге, добавьте код, который вставляет данные в таблицу.

    Для ASP:

    dbConn.Execute("INSERT INTO tbl_country (region, countryName, population,     
    country_currency, description, imageURL, imageALT) VALUES ('" &  
       Request.Form("region") & "', '" & Request.Form("countryName") & "', '
      " & Request.Form("population") & "', '" & Request.Form("country_currency")     
      & "', '" & Request.Form("description") & "', '" & Request.Form("imageURL") & 
      "', '" & Request.Form("imageALT") & "');")

    Для ColdFusion:

    INSERT INTO tbl_country
    (region, countryName, population, country_currency, description, imageURL, imageALT)
    VALUES
    ('#form.region#', '#form.countryName#', '#form.population#','#form.country_currency#', 
        '#form.description#', '#form.imageURL#',
    '#form.imageALT#')

    Для PHP:

    $query_rs_insertCountry = "INSERT INTO tbl_country (region, countryname,
    population, country_currency, description, imageURL, imageALT) VALUES     
    ('".$_POST['region']."', '".$_POST['countryName']."',           
    '".$_POST['population']."', '".$_POST['country_currency']."',         
    '".$_POST['description']."', '".$_POST['imageURL']."',           
    '".$_POST['imageALT']."');";
    $rs_insertCountry = mysql_query($query_rs_insertCountry);

    Понять этот код окажется проще, если вспомнить синтаксис SQL-оператора INSERT:

    INSERT INTO tbl_table
      (field1,field2,field3)
    VALUES
      ('value1', 'value2', 'value3')

    В сценариях для ASP, ColdFusion и PHP содержатся SQL-операторы, использующие этот синтаксис. Но поскольку переменным присваиваются действующие значения, требуется дать серверу указание извлекать значения из соответствующих выражений перед добавлением в базу данных. Для этого в код ColdFusion вставляется несколько знаков #, а в код ASP и PHP – много знаков конкатенации.

    Совет.Пользователи ASP и PHP могут воспользоваться таким преимуществом, как выделение кода цветом. Если в коде есть ошибка, его цвет, как правило, меняется. Это помогает находить ошибки еще до тестирования страницы. В коде для ASP функция Request.Form всегда должна быть выделена фиолетовым цветом, а имена полей формы – зеленым. Знаки &, используемые для конкатенации, должны выделяться синим оттенком. В коде для PHP строковые литералы (в том числе, запятые и одинарные кавычки) всегда выделяются красным. $_POST всегда выделяется голубым, а точки и квадратные скобки – темно-синим цветом.
    Примечание.В коде для ASP и PHP применяются как обычные ( " ), так и одинарные ( ' ) кавычки, что может показаться непонятным. Содержимое, заключенное в двойные кавычки относится к ASP или PHP, это, к примеру, строковые литералы, которые должны добавляться в код страницы в неизменном виде. Данные, заключенные в одинарные кавычки, относятся к SQL-запросу и представляют значения, которые добавляются в базу данных.
  4. Добавьте код для перевода пользователя на основную страницу после добавления данных в базу.

    Для ASP перед закрывающим %>:

    Response.Redirect("admin_cp_master.asp")
    Для ColdFusion:
    <cflocation url="admin_cp_master.cfm">
    Для PHP перед закрывающим ?>:
     header("Location: admin_cp_master.php");

    Поскольку при возникновении проблем ASP, ColdFusion и PHP выдают сообщение об ошибке, код перевода на основную страницу будет выполнен, только если данные успешно добавлены в базу.

    Чтобы убедиться в работоспособности страницы, необходимо протестировать ее (в форму можно ввести любые данные). После добавления данных загрузится страница admin_cp_master.asp, создание которой еще не завершено. Но кроме списка на основной странице есть и другой способ убедиться в успешности добавления данных. Для этого следует загрузить страницу с профилями стран. Поскольку приложение предназначено для отображения всей информации о странах, содержащейся в базе данных, добавленная страна тоже окажется здесь. Неважно, если данные профиля вымышлены, – чуть позже будет создано приложение для удаления данных и для его тестирования потребуется одна или две выдуманные страны, так что сейчас следует оставить добавленную страну в базе данных.

    Примечание.При заполнении формы не следует использовать апострофы, так как в этом случае появится сообщение об ошибке. Эта проблема будет решена позже.
    Примечание.Пока в папку images не будет загружено изображение с тем же именем, что и указанное в форме, ссылка на изображение не будет работать.
< Урок 15 || Урок 16: 123456789
Екатерина Мезенцева
Екатерина Мезенцева
Россия
Маргарита Туктарова
Маргарита Туктарова
Соединенное Королевство, London, kingston university, 2012