Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132

Обработка формы

30.07.2013, 11:29. Показов 1230. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код HTML-формы, в которой отображена информация о покупателе:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
/* Имя файла:       displayForm
 * Описание:        Сценарий отображает форму и заполняет её значениями из массива.
 */
 echo   "<html>
        <head><title>Адрес покупателя</title></head>
        <body>";
$customer = array("firstName" => "Евгений",
                "midName" => "Падуто",
                "lastName" => "Александрович",
                "street" => "ул. Молоковича, 4",
                "city" => "г. п. Октябрьский",
                "state" => "Гомельская область",
                "zip" => "247319");
$labels = array ("firstName" => "Имя: ",
                "midName" => "Фамилия: ",
                "lastName" => "Отчество: ",
                "street" => "Улица: ",
                "city" => "Город: ",
                "state" => "Область: ",
                "zip" => "Индекс: ");
echo "<h2 align = 'center'>Адрес
                {$customer['firstName']}
                {$customer['midName']}
                {$customer['lastName']}</h2><br />";
echo "<p align = 'center'><b>Пожалйста, проверьте поля формы x
                и при необходимости внесите изменения.
                </b><hr>
                <form action = 'displayFormFields.php' method = 'post'>
                <table width =95% border = '0' cellspacing = '0' cellpadding = '2'><br />";
foreach ($customer as $field => $value)
{
    echo "<tr><td align = 'right'><B>{$labels[$field]}<br /></td>
                <td><input type = 'text' name = 'field' size = '65' 
                maxlength = '65' value = '{$customer[$field]}'></td>
                </tr>";
}               
echo "</table>
                <div align = 'center'><p><input type = 'submit' value = 'Отправить данные'></p></div>
                </form>";
?>
</body></html>
Есть обработчик формы, который должен выводить информацию о покупателе типа: индекс поля = значение поля.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
<?php
/* Имя сценария:     displayFormFields
 * Описание:            Сценарий который, выводит информацию, введённую в полях формы.
 */
echo    "<html><head><title>Адрес покупателя</title></head>
        <body>";
foreach ($_POST as $field => $value)
{
    echo "$field = $value<br />";
}
 ?>
 </body></html>
После нажатия на кнопку отправить данные обработчик выводит на экран только последнее значение - почтовый индекс. Как вывести остальные значения?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.07.2013, 11:29
Ответы с готовыми решениями:

Обработка формы
Всем привет! Есть форма: &lt;form action=&quot;&quot; method=&quot;POST&quot;&gt; &lt;input type=&quot;checkbox&quot; name=&quot;check_1&quot; value=&quot;пункт_1&quot;...

Обработка формы
Здравствуйте, сталкнулся с непонятной для меня проблемой, учусь так сказать с разных источников и везеде разные примеры. вот простая...

Обработка формы
Здрасте всем! Решил в рамках своего обучения написать первый более-менее серьезный скрипт - скрипт голосования. Как и положено создал...

6
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
30.07.2013, 12:02
Цитата Сообщение от Tot Посмотреть сообщение
name = 'field'
У вас у всех полей одиннаковые имена
1
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132
30.07.2013, 21:17  [ТС]
Да. Не name = 'field', а name = '$field'
field - это имя ключа из массива $customer.

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

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
/*  Имя файла:  validateForm
 *  Описание:   Отображает форму и проверяет введённую информацию.
 */
 include("./include/info.inc");                 #6
 ##############################
 ## Вывод пустой формы       ##
 ##############################
 if(!isset($_POST['$submit']))                  #10
 {
    include("./include/adressForm.inc");
 }
 
 #####################################################
 ## Проверка данных, введённых в форме. Создаётся ####
 ## массив пустых и некорректно заполенных полей. ####
 ## Если при заполнении формы были допущены ошибки, ##
 ## выводится соответствующее сообщение и форма     ##
 ## отображается повторно. В противном случае отобра##
 ## жается введённая информация.                   ##
 #####################################################
 else                                           #21
 {
    foreach($_POST as $field => $value)         #23
    {
        if(empty($_POST[$field]))               #25
        {
            if($field != "midName")
            {
                $blanks[$field] = "blank";      #29
            }
        }
    else                                        #33
    {
        $value = trim($value);
        if($field != "zipcode")
        {
            if(!ereg("^[А-яа-яA-za-z0-9' .-]{1,65}$", $value))
            {
                $formats[$field] = "bad";
            }
        }
        elseif($field == "zipcode")
        {
            if(!ereg("^[0-9]{5}(\-[0-9]{4})?", $value))
            {
                $formats[$field] = "bad";
            }
        }
    }
    }                                           #51
## если хотя бы в одном поле допущена ошибка, выводится соответствеующее сообщение и форма##
## отображается заново.##
if(@sizeof($blanks) > 0 or @sizeof($formats) > 0)#54
{
    if (@sizeof($blanks) > 0)
    {
        echo    "<b>Вы незаполнили одно или несколько 
                обязательных полей. Необходимо 
                заполнить следующие поля: </b><br />";
        foreach($blanks as $field => $value)
        {
            echo "&nbsp;&nbsp;&nbsp;{$labels[$field]}<br />";
        }       
    }
    if(@sizeof($formats) > 0)
    {
        echo    "<b>В одном или нескольких полях содержатся некорректные данные. Исправьте информацию в следующих полях: 
        </b><br />";
        foreach($formats as $field => $value)
        {
            echo "&nbsp;&nbsp;&nbsp;{$labels[$field]}<br />";
        }
    }
    echo "<hr>";
    include("./include/adressForm.inc");
}
else                                            #78
{
## Если ошибок не обнаружено, отображаются ##
## введённые имя и адрес.##
echo    "<html><head><title>Имя и адрес
        </title></head><body><br />";   
        foreach($_POST as $field => $value)
        {
            if($field != "Submit")
            {
                echo "{$labels[$field]}$value<br />";
            }
        }
echo    "</body></html>";
}
}
?>
И два подключаемых inc-файла.

Первый создаёт массив данных для формы:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
/* Имя файла:   info.inc
 * Описание:    создаёт массив имён для
 *              использования в форме
 */
 $labels = array("firstName" => "Имя:",
                "midName" => "Второе имя:",
                "lastName" => "Фамилия",
                "street" => "Улица:",
                "city" => "Город:",
                "state" => "Штат:",
                "zipcode" => "Почтовый индекс:");
 ?>
А второй отображает форму:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
#   Имя файла:      adressForm.inc
#    Описание:      Сценарий для отображения формы.
echo    "<html>
        <head><title>Адрес покупателя</title></head>
        <body>";
echo    "<p align = 'center'>
        <form action = 'validateForm.php' method = 'POST'>
        <table width =95% border = '0' cellspacing = '0'
        cellpadding = '2'><br />";
foreach($labels as $field => $value)
{
    if(isset($_POST[$field]))                   #13
        {
            $value = $_POST[$field];
        }
        else
        {
            $value = "";
        }
    echo    "<tr><td align = 'right'>{$labels[$field]}<br /></td>
            <td><input type = 'text' name = '$field' size = '65'
            maxlength = '65'
            value = '$value'></td></tr>";
}
echo    "</table>
        <div align = 'center'>
        <p><input type = 'Submit' name = 'Submit'
        value = 'Отправить данные'></p></div>
        </form>";
?>
</body></html>
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
31.07.2013, 13:39
Цитата Сообщение от Tot Посмотреть сообщение
PHP
1
if(@sizeof($blanks) > 0 or @sizeof($formats) > 0)
попробуйте так:
PHP
1
if((@sizeof($blanks) > 0)or(@sizeof($formats) > 0))
и
Цитата Сообщение от Tot Посмотреть сообщение
незаполнили
пишится раздельно

Добавлено через 1 минуту
и sizeof замените на count
0
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132
31.07.2013, 15:26  [ТС]
сделал. Не работает по-прежнему.
0
 Аватар для Vas-e-na
420 / 417 / 79
Регистрация: 21.06.2010
Сообщений: 1,362
31.07.2013, 15:35
сделайте var_dump($blanks, $formats) и покажите что выдаст
0
 Аватар для Tot
6 / 3 / 0
Регистрация: 25.06.2012
Сообщений: 132
31.07.2013, 17:55  [ТС]
Дописал строку var_dump($blanks, $formats); в конце сценария. В браузере помимо пустой формы ещё два слова:

NULL NULL

То есть эти массивы не создаются. Значит, типа, ошибок и пустых полей нет. Хотя я их ввожу специально. Всё равно:

NULL NULL
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.07.2013, 17:55
Помогаю со студенческими работами здесь

Обработка формы
Добрый день уважаемые. Возникли глобальные проблемы. Нужно обработать 7 форм, каждая из них влияет друг на друга. Пример: есть расчет...

обработка формы
Доброй ночи! Возник такой вопрос... если у меня в форме на кнопку стоит обработчик onclick js и данные формы посылаются методом пост...,...

Обработка формы
По клику на элементе меню, средствами HTML открывается фиксированное окошко - форма входа в админку поверх всего контента: Разметка...

Обработка формы
Здравствуйте уважаемые форумчане! Направьте незнающего на путь истинный :pardon: В общем есть форма на главной странице: &lt;!--...

Обработка формы
После обработки html-формы с supername.php, в файл req.php поступают данные с этой формы. $ans1 = $_POST; Собственно, вопрос: как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru