Пуст ли пост?

Статус
В этой теме нельзя размещать новые ответы.

vonica

Новичок
Пуст ли пост?

При отправке пустой формы
Post принимает такой вид

Array
(
[fname] =>
[iname] =>
[oname] =>
[street] =>
[tel] =>
)

как проверить попроще, пусты ли значения всего массива,

empty в данном случае не подходит
 

vonica

Новичок
Beavis

По твоему foreach лучше, или у тебя есть другие варианты?
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
vonica
Дело в том, что тебе _все равно_ прийдется делать проверку твоих значений по очереди.

А проверка _сразу_
это лишняя операция.

-~{}~ 11.03.08 16:36:

Мей-би стОит посмотреть в сторону
http://phpclub.ru/detail/article/quickform
 

vonica

Новичок
Я использую DbSimple
поэтому никаких проверок мне делать не прийдется,

а квикформы вообще тут не при делах

У Котерова библиотека META Form вот это сила http://dklab.ru/lib/HTML_MetaForm/

p/s/ В телефонном справочнике если не одно поля для поиска не заполнено то и запрос не делать

PHP:
<?
include_once "connect.php";
?>
<form action="" method="post"><fieldset><legend>Телефонный справочник</legend>
<label for="fname">Фамилия</label> <input id="fname" name="fname" type="text" size="14" maxlength="30" /> 
<label for="iname">Имя</label> <input id="iname" name="iname" type="text" size="14" maxlength="30" />
<label for="oname">Отчество</label> <input id="oname" name="oname" type="text" size="14" maxlength="30" />
<label for="street">Адрес</label> <input id="street" name="street" type="text" size="14" maxlength="30" />
<label for="tel">Телефон <input id="tel" name="tel" type="text" size="14" maxlength="30" />
<input name="" type="submit" value="Искать" />
</fieldset></form>
<?
if (    !empty( $_POST ) && !( '' == @trim( implode( '', $_POST ) ) )   ) {

$rows = $DB->select('
				SELECT *
				FROM peoples
				WHERE
					1=1
				  { AND fname LIKE ? }
				  { AND iname LIKE ? }
				  { AND oname LIKE ? }
				  { AND tel LIKE ? }
				  { AND street LIKE ? }
				  
			',
			(empty($_POST['fname']) ? DBSIMPLE_SKIP : "%$_POST[fname]%"),
			(empty($_POST['iname']) ? DBSIMPLE_SKIP : "%$_POST[iname]%"),
			(empty($_POST['oname']) ? DBSIMPLE_SKIP : "%$_POST[oname]%"),
			(empty($_POST['tel']) ? DBSIMPLE_SKIP : "%$_POST[tel]%"),
			(empty($_POST['street']) ? DBSIMPLE_SKIP : "%$_POST[street]%")
			
);
				
foreach ($rows as $numRow => $row)
{
	foreach ( $row as $key => $value ) $$key = $value;
	echo "<small>$pid</small> <strong>$fname $iname $oname</strong> $street $tel<br />";
}


}
?>
ТАк что ваш вариант очень даже подходит
 

Alexandre

PHPПенсионер
я бы для красивости (а так делает большинство), не правильному полю css подвесил бы (например розовый), чтоб ВНИМАНИЕ посетилеля привлечь именно к этому полю, а посему foreach просто необходим, и еще
ну очень уж неудовно вводить по 100 раз информацию, если одно поле забыл ввести,
по этому РЕКОМЕНДУЮ сохранять в полях ввода ранее введенную Пользователем инфоормацию.

-~{}~ 11.03.08 20:04:

Код:
<label_for="fname">Фамилия</label>_<input_id="fname"_name="fname"_type="text"_size="14"_maxlength="30"  value="<?=$_POST['fname']?>" class="<?=$error['fname']?>" /> 
<label_for="iname">Имя</label>_<input_id="iname"_name="iname"_type="text"_size="14"_maxlength="30"_value="<?=$_POST['iname']?>" class="<?=$error['iname']?>"/> 
<label_for="oname">Отчество</label>_<input_id="oname"_name="oname"_type="text"_size="14"_maxlength="30"_ value="<?=$_POST['oname']?>" class="<?=$error['oname']?>"/> 
<label_for="street">Адрес</label>_<input_id="street"_name="street"_type="text"_size="14"_maxlength="30"_ value="<?=$_POST['street']?>" class="<?=$error['street']?>"/> 
<label_for="tel">Телефон_<input_id="tel"_name="tel"_type="text"_size="14"_maxlength="30"_value="<?=$_POST['tel']?>" class="<?=$error['tel']?>"/>
 

vonica

Новичок
Alexandre

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

Alexandre

PHPПенсионер
vonica ты автор, тебе решать. это так - рекомендации на будущее.
а то много тупых сйтов развелось, иногда это бесит. вопрос - а кто их делает? Ба, да этоже те люди, которые тусуются на этом форуме, на опен-нет и etc... Так кого же винить, как не себя????
 

rotoZOOM

ACM maniac
Alexandre а вы уверены, что данные в input поля класть лучше из POST ? При нажатии юзером обновлении страницы табличка вам глаза не будет мозолить ? Не лучше ли при любом раскладе после получения POST делать редирект ?
Если не ошибаюсь у Фaнaта была такая тема уже.
Почему бы для временного хранения не использовать сессии, уничтожая их сразу после редиректа ?
 

Фанат

oncle terrible
Команда форума
Alexandre, пора тебе узнать, что значения, выводимые в value инпутов, должны быть обработаны функцией htmlspecialchars. Независимо от своего происхождения.
 

Alexandre

PHPПенсионер
Alexandre а вы уверены, что данные в input поля класть лучше из POST ? При нажатии юзером обновлении страницы табличка вам глаза не будет мозолить ? Не лучше ли при любом раскладе после получения POST делать редирект ?
Если не ошибаюсь у Фaнaта была такая тема уже.
Почему бы для временного хранения не использовать сессии, уничтожая их сразу после редиректа ?
Alexandre, пора тебе узнать, что значения, выводимые в value инпутов, должны быть обработаны функцией htmlspecialchars. Независимо от своего происхождения.
в этом коде, кроме указанных вами, можно найти еще недостатки. автор будет Вам благодарен. жаль, что отсутствует ветвь "Помидорник".
 

Фанат

oncle terrible
Команда форума
кстати, да.
если это телефонный справошник, то с какого перепугу там POST?
 

vonica

Новичок
Никто не говорит, что там POST лучше, этот пример - как пример, он просто показывает для чего все таки мне понадобилось проверить пусты ли все значения массива или нет без его прохода.

И с редиректом это все понятно как свет, и с заполнением, но вопрос я задавал совсем другой, в начале темы.


Так что давайте закроем тему.

зы. Хорошо хоть не начали советовать что структура html не правильная, типа нет html head title body
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху