2013-09-27 3 views
0

Я хочу найти в адресной книге со страницы, которую я разрабатываю. Адресная книга представляет собой содержимое другой страницы, а адрес адресной книги на этой странице - http://example.com/start.php. В этой адресной книге есть собственное поле поиска, которое я буду использовать для своей страницы. я написал следующую форму поиска:Пустое значение формы поиска

<form action="http://example.com/start.php" method="post" target="_blank"> 
<div> 

<input type="hidden" value="adress" name="cmd" /> 
<input id = "adressinput" name="search" type="text" title="Search in the adress book [ctrl-f]" accesskey="f" value="adress book" /> 
<input id="refresh" title="refreshnow" name="refresh" type="image" src="icons/Downloads/arrow-circle-single.png" class="iconbutton"/>        

</div> 
</form> 

Проблема в том, что, когда я пишу что-то в текстовое поле моей формы и после этого нажмите на значок refreshnow, страница http://example.com/start.php (адресная книга) является но поле поиска на этой странице все еще имеет пустое значение, и я, конечно, не получаю никакого результата.

Это была не моя первая поисковая форма. Я написал похожие формы, и они работают, поэтому я понятия не имею, почему это не работает.

ответ

0
  1. Удалить атрибут цели из формы, на планете Земля нет абсолютно никаких оснований использовать всплывающие окна.

2.) Какой язык скриптинга вы используете? Если PHP вы ссылаетесь на $_POST['search'] или вы случайно ссылаетесь на $_GET['search']?

+0

Я использую PHP в качестве языка сценариев, и вы правы. Мне не нужен атрибут target. Мне было лучше видеть, что происходит при поиске. – user2667837

0

Эта линия

<input id = "adressinput" name="search" type="text" title="Search in the adress book [ctrl-f]" accesskey="f" value="adress book" /> 

должен быть

<input id="adressinput" name="search" type="text" title="Search in the address book [ctrl-f]" accesskey="f" value="<?php echo $_POST['search']; ?>" /> 

или вы могли бы сделать что-то немного более умный

if (isset($_POST['search'])) { 
    ?> 
    <input id="adressinput" name="search" type="text" title="Search in the address book [ctrl-f]" accesskey="f" value="<?php echo $_POST['search']; ?>" /> 
    <?php 
} else { 
    ?> 
    <input id="adressinput" name="search" type="text" title="Search in the address book [ctrl-f]" accesskey="f" value="adress book" /> 
    <?php 
} 

Это немного грязный, вы можете также использовать переменную value из input, так что количество строк в вашем файле будет быть меньше, например.

if (isset($_POST['search'])) { 
    $value = $_POST['search']; 
} else { 
    $value = 'adress book' 
} 

<input id="adressinput" name="search" type="text" title="Search in the address book [ctrl-f]" accesskey="f" value="<?php echo $value; ?>" /> 

Где $_POST['search'] будет содержать значение условий поиска, введенных (после того, как форма представляется, что есть.

Это значение, которое нужно будет опрашивать базу данных для результатов поиска, соответствующих его содержанию.

+0

Вы не можете просто откликнуться на '$ _POST' переменная, вам нужно использовать 'isset()' first. '' хотя я думаю, Ур ответ может быть больше на цель, OP не совсем четко с самого начала. – John

+0

@ Джон, не уверен, что вы имеете в виду, я проверяю переменную 'POST' с' isset' уже? – martincarlin87

+0

Если вы не проверяете переменную, она выкинет небольшое предупреждение. Иногда хакеры будут пытаться опустить переменную GET/POST, чтобы увидеть, какие ошибки сервер будет отчитываться, когда они попытаются определить потенциальный вектор атаки. Единственное, что ваш код должен отчитываться в ошибке HTTP 4xx, и регистрировать * каждую ошибку PHP независимо от того, насколько незначительны. – John

Смежные вопросы