• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP/HTML - znacznik <textarea> raz działa, a raz nie.

Object Storage Arubacloud
+1 głos
177 wizyt
pytanie zadane 27 marca 2022 w PHP przez jamie80 Początkujący (320 p.)

Dzień dobry,

przepisałem skrypt z książki "PHP i MySql - szybki start" i mam problem ze znacznikiem <textarea>. Z pliku HTML zatytułowanym 'formularz.html' wysyłam formularz do pliku PHP o nazwie 'obsluz_formularz.php'. W pliku PHP sprawdzam każde pole, czy zostało wypełnione. Jeżeli kompletnie nic nie wypełnię w pliku HTML, to otrzymuję poszczególne informacje, iż konkretne dane zostały nieuzupełnione. Jednak inaczej jest z polem UWAGI (i tylko z tym polem mam problem). Jeżeli nic tam nie wypełnię, to i tak przejdzie jako wypełniony. Dziwne jest jeszcze to, iż jeżeli chcę wypełnić uwagi i kliknę w to pole, to kursor zaczyna pisać tekst w miejscu, w którym kliknąłem, a nie na początku pola. Wygląda to tak, jakby wcześniej już ktoś kliknął w to pole kilka razy TABULATOR. Bo jeżeli kliknę w to pole i usunę te TABULATORY to wtedy faktycznie wszystko działa. Przesyłam puste pole i dostaję informację, iż pole nie zostało wypełnione. Skąd się wzięły te TABULATORY w tym polu o uwagach?

Proszę o pomoc i wyjaśnienie. Z góry dziękuję.

Poniżej plik HTML:

<!DOCTYPE html>
<html lang="PL">

<head>
	<meta charset="UTF-8">
	<title>Szybki start - rozdział 2</title>
	<style type="text/css">
		label {
			font-weight: bold;
			color: #300ACC;
		}
	</style>
</head>

<body>
	<!-- LISTING 2.1 - FORMULARZ.HTML -->
	<form action="obsluz_formularz.php" method="post">
		<fieldset><legend>Wprowadź do formularza informację na swój temat:</legend>
			<p><label>Nazwisko: <input type="text" name="name" size="20" maxlength="40"></label></p>
			<p><label>Adres e-mail: <input type="email" name="email" size="40" maxlength="60"></label></p>
			<p><label for="gender">Płeć: </label><input type="radio" name="gender" value="M">Mężczyzna<input type="radio" name="gender" value="K">Kobieta</p>
			<p><label>Wiek:
				<select name="age">
					<option value="0-29">Poniżej 30</option>
					<option value="30-60">Pomiędzy 30 a 60</option>
					<option value="60+">Powyżej 60</option>			
				</select>
			</label></p>
			<p><label>Uwagi:
				<textarea name="comments" rows="3" cols="40">	
				</textarea>
			</label></p>
		</fieldset>

		<p align="center"><input type="submit" name="submin" value="Wyślij dane"></p>
	</form>

</body>
</html>

Poniżej plik PHP:

<!DOCTYPE html>
<html lang="PL">

<head>
	<meta charset="UTF-8">
	<title>Szybki start - rozdział 2</title>
	<style type="text/css">
		.error {
			font-weight: bold;
			color: #C00;
		}
	</style>
</head>

<body>
	<!-- OBSLUZ_FORMULARZ.PHP -->
	
	<?php

	// Sprawdzamy, czy formularz NAZWISKO został wypełniony i tworzymy skrót od zmiennej z formularza.
	if(!empty($_REQUEST['name']))
	{
	$name = $_REQUEST['name'];	
	}
	else
	{
	$name = NULL;
	echo "<p class='error'>Pole \"Nazwisko\" nie zostało wypełnione!</p>";
	}

	// Sprawdzamy, czy formularz ADRES E-MAIL został wypełniony i tworzymy skrót od zmiennej z formularza.
	if(!empty($_REQUEST['email']))
	{
	$email = $_REQUEST['email'];	
	}
	else
	{
	$email = NULL;
	echo "<p class='error'>Pole \"Adres e-mail\" nie zostało wypełnione!</p>";
	}

	// Sprawdzamy, czy formularz UWAGI został wypełniony i tworzymy skrót od zmiennej z formularza.
	if(!empty($_REQUEST['comments']))
	{
	$comments = $_REQUEST['comments'];	
	}
	else
	{
	$comments = NULL;
	echo "<p class='error'>Pole \"Uwagi\" nie zostało wypełnione!</p>";
	}

	$age = $_REQUEST['age'];
	//$submit = $_REQUEST['submit'];

	// Sprawdzamy, czy formularz PŁEĆ został wypełniony i tworzymy skrót od zmiennej z formularza.
	// Następnie tworzymy odpowiedzi warunkowe do zmiennej $gender.
	if (isset($_REQUEST['gender']))
	{
		$gender = $_REQUEST['gender'];

		if($gender=="M")
		{
			$greeting = "<p><b>Dziękujemy Panu!</b></p>";
		}
		elseif($gender=="K")
		{
			$greeting = "<p><b>Dziękujemy Pani!</b></p>";
		}
		else
		{
			$gender = NULL;
			echo '<p class="error">Płeć może mieć tylko wartośc "M" lub "K"!</p>';
		}
	}
	else
	{
		$gender = NULL;
		echo "<p class='error'>Pole \"Płeć\" nie zostało wypełnione!</p>";
	}

	if($name && $email && $gender && $comments)
	{
	// Wyświetlamy otrzymane informacje.
	echo 
	"<p>Dziękuję Ci, <b>$name</b>, za Twoje uwagi:<br><br>
	<tt>$comments</tt></p>

	<p>Odpowiedź prześlę na adres <i>$email</i>.</p>

	<p>Wybrany wiek i płeć to odpowiednio: $age oraz $gender.</p>\n";

	echo $greeting;
	}
	else
	{
	echo '<p class="error"><br>Proszę poprawnie wypełnić formularz!</p>';
	}

	?>

</body>
</html>

 

1 odpowiedź

+3 głosów
odpowiedź 28 marca 2022 przez VBService Ekspert (253,420 p.)
wybrane 28 marca 2022 przez ScriptyChris
 
Najlepsza

Przy takim zapisie

            <p><label>Uwagi:
                <textarea name="comments" rows="3" cols="40">.\n\r
................</textarea>
            </label></p>

winne są tzw. "białe znaki", w tym przypadku spacje (dla demonstarcji w postaci kropek) i znaki końca (\n\r) linii.

zapisz tak

<textarea name="comments" rows="3" cols="40"></textarea>

 

przy "pobieraniu" danych, które znajdują się w zmiennych (czy to $_POST, $_REQUEST itd.) dobrze jest też używać np. trim()

if (!empty(trim($_REQUEST['comments'])))

 

komentarz 28 marca 2022 przez jamie80 Początkujący (320 p.)
Dziękuję bardzo za szybką odpowiedź. Teraz jest już wszystko jasne. A wskazówka z funkcją trim() na pewno mi się przyda.

Podobne pytania

0 głosów
2 odpowiedzi 664 wizyt
pytanie zadane 14 kwietnia 2020 w PHP przez jupikajej Początkujący (440 p.)
–1 głos
1 odpowiedź 389 wizyt
pytanie zadane 24 stycznia 2017 w PHP przez Zychu Użytkownik (710 p.)
0 głosów
1 odpowiedź 141 wizyt
pytanie zadane 24 lutego 2020 w PHP przez Hardwell Dyskutant (8,980 p.)

92,583 zapytań

141,434 odpowiedzi

319,669 komentarzy

61,966 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...