Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Mam problem z sprawdzaniem czy pole formularza jest wypełnione.

Tutaj mój kod:

http://hastebin.com/isuxefupam.xml

<php>
header('Content-Type: text/html; charset=utf-8');
$g1 = '		
	<form method="post">
		<input placeholder="1" type="text" name="1" required>
		<input placeholder="2" type="text" name="2" required>
		<input placeholder="3" type="text" name="3">	
		
		<input name="submit" type="submit" value="Generuj">
	</form>
';
$g2 = '
	<textarea id="g_koncowy" class="input-font" cols="40" rows="50">
[center]
[color=#ff66cc]Pole 1:'.$_POST["1"].'[/color]
[color=#ffffff]Pole 2:'.$_POST["2"].'[/color]
[color=#ffffff]Pole 3:'.$_POST["3"].'[/color]

	</textarea>
';

if(isset($_POST['submit'])) {

	if(empty($_POST['1']) || empty($_POST['2'])) {

		$g = $g1;

	} else {

		$g = $g2;
 
	}
}

</php>

<h1 class='ipsType_pagetitle'>:<</h1>

<div class='ipsBox'>
	{$g}
</div>

Opis zmiennych:

  • $g - wyświetlana jako treść strony
  • $g1 - formularz
  • $g2 - wynik formularza

Pole 1 oraz 2 są wymagane, natomiast pole 3 nie jest wymagane i nie chcę, aby w wyniku formularza generowany był zbędny kod dla tego pola (kod bbcode).

 

Przykład:

Wypełniłem pole 1 oraz pole 2, a pole 3 zostawiłem puste. Aktualnie wynik formularza wygląda tak:

Pole 1: wpisana wartość
Pole 2: wpisana wartość
Pole 3:

A chcę, aby wyglądało tak:

Pole 1: wpisana wartość
Pole 2: wpisana wartość

Niestety nie wiem jak zrobić warunek, który sprawdza czy pole 3 jest puste. Jeżeli jest puste to w wyniku formularza nie generuje się dodatkowy kod.

Opublikowano (edytowane)

Najprościej to tak:

if( !empty( trim( $this -> request[ 'pole3' ] ) ) )

Dlaczego trim? Ano dlatego, żeby zabezpieczyło przed wpisywaniem samych spacji :)

Edytowane przez Leihto

Zapraszam na moje portfolio oraz bloga wojtusdev.pl

Opublikowano

W obu przypadkach nadal nie działa, a forum po prostu "wywala" - każda strona jest pusta (biała).

 

Część kodu:

if( !empty( trim( $this -> request[ 'pole3' ] ) ) ) {
[color=#ffffff]Pole 3:'.$_POST["3"].'[/color]
}
Opublikowano (edytowane)

To może nie mieszaj tagów PHP z tagami BBCODE?

Co PHP ma zrobić jak zobaczy [color=.

No i jak wywala białą stronę to na pewno w error.logu jest wytłumaczenie :-D

Edytowane przez JamLasica
Opublikowano

W ifie nie można użyć "trim", bo nie działa :v

Poprawny kod:

$p3 = trim($_POST["3"]);
if(!(empty($p3))) {
  $g2 .= '[color=#ffffff][b]Wymagania: [/b]'.$_POST["3"].'[/color]'.PHP_EOL;
}

Tak to mniej więcej wygląda. Jeżeli ktoś wie jak można zrobić to inaczej (bez zbędnego tworzenia dodatkowej zmiennej) to proszę o sugestie :>

Opublikowano

No tak, działa bez problemów. Wiem o tym dobrze, bo testowałem :)

 

Chcę tylko wiedzieć czy można to zrobić bez dodatkowej zmiennej, czyli bez zmiennej $p3.

Opublikowano

No właśnie to nie będzie działać, bo w funkcji IF nie można dać trim. Co według mnie jest bardzo dziwne, bo przecież w zmiennej $p3 jest wartość trim.

Opublikowano (edytowane)

Można, widocznie błąd zrobiłeś gdzieś indziej.

Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words, the following will not work: empty(trim($name)). Instead, use trim($name) == false.

Edytowane przez JamLasica
Opublikowano

Dwie możliwości:

  • Zostawiasz to tak jak jest, z dodatkową zmienną
  • Aktualizujesz php do 5.5 (polecane)

Możesz też nie stosować w ogóle empty(), całość będzie też działać:

if(trim($_POST['pole']) == null)

Kolejny raz php pokazuje jakie jest upośledzone.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.