⊗ppPmFmOFH 299 of 447 menu

Обработка на форма в един файл PHP

В предишния урок нашата форма беше разположена на една страница, а се изпращаше на друга. Всъщност това не е задължително. Ако оставим атрибутът action празен или го премахнем напълно, то формата ще се изпраща на същата тази страница.

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

Нека разгледаме пример. Да предположим, че имаме в един файл форма и нейната обработка:

<form action="" method="GET"> <input name="test1"> <input name="test2"> <input type="submit"> </form> <?php var_dump($_GET); ?>

При първо посещение на страницата функцията var_dump ще изведе празен масив. А след изпращане на формата тя ще изведе вече данните от формата. Тоест първият път $_GET ще бъде празен, а вторият път - ще съдържа данните от формата.

Това може да доведе до проблеми. Да предположим, че например, в полетата на формата ще въвеждаме числа и искаме да изведем сумата на тези числа на екрана:

<form action="" method="GET"> <input name="test1"> <input name="test2"> <input type="submit"> </form> <?php echo $_GET['test1'] + $_GET['test2']; ?>

В този случай при първото посещение на страницата ще видим грешки от PHP, свързани с факта, че масивът $_GET е празен, а ние се опитваме да достъпим неговите елементи.

Тук трябва да се каже, че при вас грешки може и да не се появят в браузъра. В този случай проверете, че сте включили извеждането на грешки на PHP, както и се уверете, че това е първото ви посещение на страницата и в адресния бар няма данни от форма.

Нека поправим проблема. За целта ще добавим условие, в което ще проверяваме дали формата е била изпратена.

Например, може да се провери $_GET за непразнота. Ако $_GET не е празен - то формата е била изпратена и може да се извърши сумиране. В противен случай това е още първото посещение на страницата и сумирането няма да бъде извършено. Ето, коригираният код:

<form action="" method="GET"> <input name="test1"> <input name="test2"> <input type="submit"> </form> <?php if (!empty($_GET)) { echo $_GET['test1'] + $_GET['test2']; } ?>

Попитайте потребителя за фамилия, име и презиме. След изпращане на формата изведете на екрана въведените данни.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне