Основы работы в Dreamweaver

          

Создание сценария для обновления записей


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

  1. Откройте файл admin_cp_update.asp и в режиме Code (Код) удалите все его содержимое.

    Так же, как и в прошлый раз, страница создается с нуля, так как содержит только сценарий.

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

    Для ASP:

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

    %>

    Для ColdFusion:

    <cfquery name="update_cp" 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); ?>

    После создания соединения можно сформировать SQL-запрос.

  3. В пустой строке, которая осталась на предыдущем шаге, введите код, необходимый для обновления базы данных.

    Для ASP (весь код в одной строке):

    dbConn.Execute("UPDATE tbl_country SET region='" & Request.Form("region") & "', countryName='" & Request.Form("countryName") & "', population='" & Request.Form("population") & "', country_currency='" & Request.Form("country_currency") & "', description='" & Request.Form("description") & "', imageURL='" & Request.Form("imageURL") & "', imageALT='" & Request.Form("imageALT") & "' WHERE countryID=" & Request.QueryString("countryID"))

    Для ColdFusion (не запрещается разбивать код на строки):

    UPDATE tbl_country SET region='#form.region#', countryName='#form.countryName#', population='#form.population#', country_currency='#form.country_currency#', description='#form.description#', imageURL='#form.imageURL#', imageALT='#form.imageALT#' WHERE countryID=#URL.countryID#


    Для решения этой проблемы следует удалить из текста все апострофы. Но это решение не самое лучшее, поскольку синтаксическая конструкция для представления текста будет неверной.

    В последующих шагах на страницу будет добавлен код, который перед добавлением измененного текста в базу данных автоматически заменяет знаки апострофа соответствующей последовательностью символов (&#39;). SQL проигнорирует последовательность символов (что и требуется), а при выведении данных на странице браузер преобразует код последовательности обратно в знак апострофа. Ни конечный пользователь, ни сотрудник компании, управляющий контентом сайта Newland Tours, не будут даже знать о том, что происходит в коде. Единственное заметное изменение (только при использовании ASP) заключается в том, что в базе данных вместо апострофов появятся последовательности символов &#39;.

  4. Только пользователям ASP. Снова откройте страницу admin_cp_update_processor.asp.

    Сценарий, предназначенный для поиска и замены, будет размещаться в самом начале страницы, а, следовательно, будет выполняться до обновления.

  5. Только пользователям ASP. В верхней части страницы между открывающим элементом <% и строкой Dim dbConn добавьте следующий сценарий:

    Dim description_fixed, imageALT_fixed description_fixed = Replace(Request.Form("description"),"'","&#39;") imageALT_fixed = Replace(Request.Form("imageALT"),"'","&#39;")

    Создание сценария для обновления записей

    увеличить изображение

    ASP содержит встроенную функцию Replace(), в которой указывается:

    • переменная, в которой следует вести поиск,
    • строка, которую нужно найти, и строка, на которую следует заменить найденную.


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

    • Только пользователям ASP. Замените две переменные в SQL-запросе, так, чтобы оператором UPDATE использовались их исправленные версии.



      Следует заменить код description='" & Request.Form("description") & "' на description='" & description_fixed & "', а imageALT='" & Request.Form("imageALT") & "' на imageALT='" & imageALT_fixed & "'.

      После завершения этого шага нужно обратить внимание на то, что после участка кода с переменной description стоит запятая, а после участка кода imageALT (который является последним) запятой нет.

      Создание сценария для обновления записей

      увеличить изображение

    • Только пользователям ASP. Сохраните страницу, загрузите ее на сервер и протестируйте.

      На этот раз обновляются все записи даже для стран, в описаниях и альтернативных текстах которых содержатся апострофы.

      Поскольку способ решения проблемы апострофов теперь известен, следует устранить ее и на странице для добавления стран.

    • Только пользователям ASP. Откройте страницу admin_cp_insert_ processor.asp и устраните описанную выше проблему.

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





    Для PHP:

    //Update database $query_updateCountry = "UPDATE tbl_country SET region='".$_POST['region']."', countryName='".$_POST['countryName']."', population='".$_POST['population']."', country_currency='".$_POST['country_currency']."', description='".$_POST['description']."', imageURL='".$_POST['imageURL']." ', imageALT='".$_POST['imageALT']."' WHERE countryID=".$_GET['countryID']; $updateCountry = mysql_query($query_updateCountry);

    И вновь выделение цветом облегчает работу с кодом, особенно при использовании ASP или PHP. Важно убедиться в том, чтобы в конце кода перед предложением WHERE случайно не была добавлена запятая.

    Создание сценария для обновления записей

    увеличить изображение

  6. Добавьте на страницу код, необходимый для перемещения пользователя на основную страницу.

    Для ASP (строка над закрывающим элементом %>):

    Response.Redirect("admin_cp_master.asp")

    Для ColdFusion (строка после закрывающего тега </cfquery>):

    <cflocation url="admin_cp_master.cfm">

    Для PHP (перед закрывающим тегом ?>):

    header("Location: admin_cp_master.php");

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

    Создание сценария для обновления записей

    увеличить изображение

  7. Сохраните файл и загрузите его на сервер. Запустите основную страницу (F12), выберите страну, измените информацию о ней и нажмите кнопку Submit. Снова запустите страницу для обновления той же страны, чтобы восстановить первоначальное значение.

    В результате создание сценария для обновления завершено. Следует отметить, что он замечательно работает, – по крайней мере, для некото рых стран. Но если с помощью ASP попытаться изменить данные для Аргентины, Таиланда, Индии и некоторых других стран, появится сообщение об ошибке. Причина ее возникновения состоит в том, что в тексте описаний (description) или в альтернативном тексте к изображению (imageALT) могут содержаться знаки апострофа, которые непонятны обработчику кода SQL (PHP и ColdFusion автоматически пропускают этот символ, поэтому в случае с ColdFusion и PHP ошибки не возникнет).



    Для решения этой проблемы следует удалить из текста все апострофы. Но это решение не самое лучшее, поскольку синтаксическая конструкция для представления текста будет неверной.

    В последующих шагах на страницу будет добавлен код, который перед добавлением измененного текста в базу данных автоматически заменяет знаки апострофа соответствующей последовательностью символов (&#39;). SQL проигнорирует последовательность символов (что и требуется), а при выведении данных на странице браузер преобразует код последовательности обратно в знак апострофа. Ни конечный пользователь, ни сотрудник компании, управляющий контентом сайта Newland Tours, не будут даже знать о том, что происходит в коде. Единственное заметное изменение (только при использовании ASP) заключается в том, что в базе данных вместо апострофов появятся последовательности символов &#39;.

  8. Только пользователям ASP. Снова откройте страницу admin_cp_update_processor.asp.

    Сценарий, предназначенный для поиска и замены, будет размещаться в самом начале страницы, а, следовательно, будет выполняться до обновления.

  9. Только пользователям ASP. В верхней части страницы между открывающим элементом <% и строкой Dim dbConn добавьте следующий сценарий:

    Dim description_fixed, imageALT_fixed description_fixed = Replace(Request.Form("description"),"'","&#39;") imageALT_fixed = Replace(Request.Form("imageALT"),"'","&#39;")

    Создание сценария для обновления записей

    увеличить изображение

    ASP содержит встроенную функцию Replace(), в которой указывается:

    • переменная, в которой следует вести поиск,
    • строка, которую нужно найти, и строка, на которую следует заменить найденную.


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

    • Только пользователям ASP. Замените две переменные в SQL-запросе, так, чтобы оператором UPDATE использовались их исправленные версии.



      Следует заменить код description='" & Request.Form("description") & "' на description='" & description_fixed & "', а imageALT='" & Request.Form("imageALT") & "' на imageALT='" & imageALT_fixed & "'.

      После завершения этого шага нужно обратить внимание на то, что после участка кода с переменной description стоит запятая, а после участка кода imageALT (который является последним) запятой нет.

      Создание сценария для обновления записей

      увеличить изображение

    • Только пользователям ASP. Сохраните страницу, загрузите ее на сервер и протестируйте.

      На этот раз обновляются все записи даже для стран, в описаниях и альтернативных текстах которых содержатся апострофы.

      Поскольку способ решения проблемы апострофов теперь известен, следует устранить ее и на странице для добавления стран.

    • Только пользователям ASP. Откройте страницу admin_cp_insert_ processor.asp и устраните описанную выше проблему.

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




    • Содержание  Назад  Вперед