Поиск

Отправка данных

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

$Query="INSERT into $TabName values ('valuel', 'value2' , 'value3 ' , e t c . ) ";
mysql_db_query("DatabaseName",$Query,$Link);

Запрос начинается со строки INSERT into $TabName values. Затем в скобках перечисляются значения столбцов, взятые в одинарные кавычки и разделен ные запятыми. Количество значений должно точно совпадать с имеющимися в таблице столбцами, иначе запрос не будет работать. После этого запрос на правляется в MySQL с помощью функции mysql_db_query ( ) .

Чтобы наглядно показать, как это работает, используем HTMLформу, в ко торую пользователь вводит имя, фамилию, адрес электронной почты и коммен тарии. PHPсценарий, обрабатывающий форму, поместит полученную инфор мацию в базу данных.

Ввод данных в БД из HTMLформы

  1. Создайте новый HTMLдокумент в текстовом редакторе.
  2. Напишите стандартный HTMLзаголовок:
  3. <HTMLxHEADxTITLE>HTML Form</TITLEx/HEAD><BODY>
  4. Создайте форму.
  5. <FORM ACTION="HandleForm.php" METHOD=POST>
  6. Создайте четыре текстовых поля.
  7. First Name <INPUT TYPE=TEXT NAME="Array[FirstName]" SIZE=20xBR>
    Last Name <INPUT TYPE=TEXT 'NAME="Array [LastName] " SIZE=40xBR>
    Email Address <INPUT. TYPE=TEXT NAME="Array[Email]" SIZE=60xBR>
    Comments <TEXTAREA NAME='.'Array [Comments] " ROWS = 5 COLS=40>
    </TEXTAREAxBR>

    Вы можете сделать форму более эстетичной, чем эта, ноне забудьте запи сать имена неременных ввода они потребуются в странице HandleForm.php.

  8. Добавьте кнопку Submit, закройте форму и HTMLстраницу.
  9. <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit ! ">
    </FORMx/BODYx/HTML>
  10. Сохраните страницу как form.html (листинг 11.3) и загрузите ее на Web сервер.
  11. Листинг 11.3 т Варианты этой формы рассматривались в предыдущих гла вах. Очень важно помнить названия полей ввода в HTMLформах, чтобы мож но было сослаться на них в РНР.

    1 <HTML>
    2 <HEAD>
    3 <TITLE>HTML Form</TITLE>
    4 </HEAD>
    5 <BODY>
    6 <FORM ACTION="HandleForm.php" METHOD=POST>
    7 First Name •<INPUT TYPE=TEXT NAME="Array[FirstName]" SIZE=20xBR>
    8 Last Name <INPUT TYPE=TEXT NAME*11 Array [LastName]" SIZE=40xBR>
    9 Email Address <INPUT TYPE=TEXT NAME*"Array[Email]" SIZE=60xBR>
    10 Comments <TEXTAREA NAME="Array[Comments]" ROWS=5 COLS=40>
    </TEXTAREAxBR>
    11 <INPUT TYPE=SUBMIT NAME="SUBMIT" VALUE="Submit!">
    12 </FORM>
    13 </BODY>
    14 </HTML>

Напишем сценарий HandleForm.php, который берет сгенерированные фор мой данные и помещает их в базу.

  1. Создайте новый PHPдокумент в текстовом редакторе. '
  2. Напишите стандартный HTMLзаголовок.
  3. <HTMLxHEADxTITLE>Inserting Data into a Database</TITLEx/HEADxBODY>
  4. Откройте PHPраздел страницы и на всякий случай приведите в порядок входящие данные, избавившись от лишних пробелов.
  5. <?php
    $Array["FirstName"j = trim ($Array["FirstName"]);
    $Array["LastName"] = trim ($Array["LastName"]);
    $Array ["Email"] = trim ($Array ['"Email" ] ) ;
    $Array["Comments"] = trim ($Array["Comments"]);
  6. Задайте переменные для доступа в базу данных.
  7. $Host = "localhost";
    $User = "user";
    $Password = "password";
    $DBName = "NewDatabase";
    $TableName = "Feedback";
  8. Подсоединитесь к системе MySQL, затем напишите запрос.
  9. $Link = mysql_connect ($Host, $User, $Password);
    SQuery = "INSERT into $TableName values ( " 0 " , "$Array[FirstName]",
    —"$Array[LastName]", "$Array[Email]", "$Array[Comments]")";

    Запрос начинается с обязательного кода INSERT into $TableName values. Затем перечисляются пять значений (по одному для каждого столбца), каждое из которых взято в одинарные скобки и отделено от последующего запятой.

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

  10. Чтобы упростить отладку запроса, продублируйте его, напечатав в браузе ре следующее:
  11. print ("The query is:<BR>$Query<P>\n");

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

  12. Все функции обращения к БД, кроме действий собственно с данными, выдают значение «истина» при успешном выполнении и «ложь» во всех остальных случаях. Используйте это, создав условную конструкцию, кото рая выполняет определенные действия исходя из результатов запроса.
  13. if (mysql_db_query ($DBName, $Query, $Link)) {
    print ("The query was successfully executed!<BR>\n");
    } else { . . '
    print ("The query could not be executed!<BR>\n");
    }
  14. Закройте сеанс связи с MySQL, PHPраздел и HTML.
  15. mysql_close ($Link);
    ?></BODYx/HTML>
  16. Сохраните сценарий как HandleForm.php (листинг 11.4), загрузите его на сервер в один каталог с файлом form.html и протестируйте обе страницы в браузере (рис. 11.2 и 11.3).
  17. Листинг 11.4 т Инструкция запроса на добавление информации в базу дан ных достаточно проста. Однако не забывайте, что количество значений в скоб ках должно соответствовать числу столбцов в таблице.

    1 <HTML>
    2 <HEAD>
    3 <TITLE>Inserting Data into a Database</TITLEx/HEAD>
    4 <BODY> . .
    5 <?php
    6 /* Эта страница получает и обрабатывает данные, принятые
    от "form.html". */
    7 // Удаление пробелов в начале и в конце строк.
    8 $Array["FirstName"] = trim ($Array["FirstName"]);
    9 $Array["LastName"] = trim ($Array["LastName"]);
    10 $Array[" Email"] = trim ($Array[ "Email"] );
    11 $Array["Comments"] = trim ($Array["Comments"]);
    12
    13 // Установка значения переменных для доступа к базе данных.
    14 $Host = "localhost";
    15 $User = "user";
    16 $Password = "password";
    17 $DBName = "NewDatabase";
    18 $TableName = "Feedback";
    19
    20 $Link = raysql_connect ($Host, SUser, $Password);
    21 $Query = "INSERT into $TableName values ("0", "$Array[FirstName]",
    "$Array[LastName]", "$Array[Email]", "$Array[Comments]")";
    22 print ("The query is:<BR>$Query<P>\n");
    23 if (mysql_db_query (SDBName, $Query, $Link)) {
    24 print ("The query was successfully executed!<BR>\n");
    25 } else {
    26 print ("The query could not be executed!<BR>\n");
    27 }
    28 mysql_close ($Link);
    29 ?> •
    30 </BODY>
    31 </HTML>

    Если вы хотите проверять инструкции SQL так, чтобы пользователь явно не видел их, добавьте в вашу страницу следующую строку кода: print ("<! The query is $Query—>\n") ;. Теперь запрос будет выглядеть как HTMLкомментарий, ко торый можно просмотреть, открыв исходный текст (рис. 11.4 и 11.5).