Основы работы в 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 запросы страниц различаются, однако код, который необходимо заменить, остался прежним.




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