2014-01-26 2 views
0

Я создаю контактную страницу для сайта и сохраняю все поля формы, за исключением меню перетаскивания? Я сделал код так хорошо, как знаю, но новичок в PHP и просто понятия не имею, где проблема? Код выглядит следующим образом:Липкое меню выпадения не прилипает?

<?php 
    $WebSearch = $SocialMedia = $WordOfMouth = $Other =""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") 
{ 

//Question 
    if (empty($_POST["question"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["question"]);} 

//WebSearch 
    if (empty($_POST["WebSearch"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["WebSearch"]);} 

//SocialMedia 
    if (empty($_POST["SocialMedia"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["SocialMedia"]);} 

//WordOfMouth 
    if (empty($_POST["WordOfMouth"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["WordOfMouth"]);} 

//Other 
    if (empty($_POST["Other"])) 
    {$comment = "";} 
    else 
    {$comment = test_input($_POST["Other"]);} 

} 
function test_input($data) 
{ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
?> 

<form method="post" id="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 
    <p id="info-req">How did you find about This site?</p> 
    <!--Question--><select id="marketing" name="question"> 
     <option value="----------" style="color:black">----------</option> 
     <option value="Web Search" style="color:black" name="WebSearch">Google Search</option><?php if(isset($_POST['WebSearch'])) {echo $_POST['WebSearch']; } ?> 
     <option value="Social Media" style="color:black" name="SocialMedia">Social Media</option><?php if(isset($_POST['SocialMedia'])) {echo $_POST['SocialMedia']; } ?> 
     <option value="Word of mouth" style="color:black"name="WordOfMouth">Word of mouth</option><?php if(isset($_POST['WordOfMouth'])) {echo $_POST['WordOfMouth']; } ?> 
     <option value="Other" style="color:black" name="Other">Other</option><?php if(isset($_POST['Other'])) {echo $_POST['Other']; } ?> 
    </select> 

    <div> 
     <input type="submit" value="Send" id="submit"> 
    </div> 
</form> 

Надеюсь, это легкое исправление или что-то, что я пропустил? Я боюсь php после изучения в течение нескольких месяцев.

Большое спасибо за любую помощь,

Маргит

+1

Вам необходимо проверить, какая опция должна быть выбрана, а затем добавить атрибут 'selected =" selected "' в это '

+0

Umm ... что вы подразумеваете под «полями формы, торчащими за исключением меню перетаскивания». Это проблема дизайна или у вас проблемы с некоторыми значениями, которые не отображаются? –

+0

У меня есть другие поля формы на странице и все торчит, когда есть ошибка формы. То, что не придерживается, - это меню перетаскивания. Я не добавлял остальную часть кода в код, который я написал выше, поскольку он работает нормально. Все остальные записи отображают ошибки и придерживаются, как и должно быть. – Margate

ответ

0

Я пойду через одну строку, чтобы увидеть, что я нахожу. Не думай обо мне, как придирчивый. :-) Хамм, давайте посмотрим. Я начну с формы. Я смотрю на все. Надеюсь, мы сможем найти способ решить эту ошибку и свести к минимуму ошибки в будущем. :-) Я рад помочь.

<form method="post" id="form" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"> 

1. Да, вы пытаетесь быть безопасными, но если htmlspecialchars(), то почему бы не htmlentities()? Просто говорю.

PHP Manual: htmlentities()

<p id="info-req">How did you find about This site?</p> 

2. Узнайте о <label></label> HTML тег и использовать его для обозначения элементов управления формы.

W3C HTML 4.01: The label element.

(Ниже на самом деле одна линия, но я разбив его на до нескольких элементов.)

<option value="Web Search" style="color:black" name="WebSearch">Google Search</option> 

3. Просто вопрос стиля кодирования, но вы можете положите value="" ближе к закрытию '>' в вашем открытии <option> тег. Пример ...

<option value="Web Search">Google Search</option> 

Примечание Я удалил style="color:black" потому что вы будете лучше обслужены в будущем, если вы поставите этот стиль во внешнем листе стиля, как класс. Примечание. Цвет текста опций по умолчанию является черным по умолчанию в большинстве пользовательских агентов/браузеров. Пример.

.optionTextColor{color:black;} 

Тогда у ваших вариантов не было бы встроенного в них CSS. Естественно, если вы сделаете это ...

option{color:black;} 

... все опции элементы на странице наследуют стили, которые вы хотите, чтобы у них без необходимость атрибута class="".

<option class="optionTextColor" value="Web Search">Google Search</option> //using a specific class 

<option value="Web Search">Google Search</option>       //using a global, element level selector. 

Кроме того, обратите внимание, что атрибут имя исчезает, потому что не является допустимым атрибутом <option> тега.

W3C HTML 4.01: The Option Element

Поиск страницы для ВАРИАНТ определения атрибутов.

Здесь вы откроете для себя выбранных = «» атрибута <option> тега, который является то, что вам нужно сделать <option> в <select> управлений липкими. Вам понадобится условный оператор PHP, основанный на значении $_POST['question'] для печати selected="selected" как атрибута <option>, который вы хотите быть липким.

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

+0

Я не знаю, почему нумерованные предметы получили такой большой размер. Это не было преднамеренным. –

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