2016-04-22 2 views
0

Я пытаюсь создать свою первую функцию в PHP, выпадающую. Он почти работает, но когда я отправляю/публикую данные, параметры с пробелом в нем будут показывать только первое слово на выходе.Функция раскрывающегося списка теряет слова после пробела в представленном выпуске

В примере у меня есть «Имя» в качестве опции в выпадающем списке. Когда я нажимаю submit, вывод будет только «первым». Когда я меняю «Имя» на «Первое имя», он работает, а результат - «Имя». Поэтому я думаю, что мне нужно добавить кавычки где-нибудь в коде, чтобы он обрабатывался как строка?

Надеюсь, кто-то может мне помочь, я настолько близок к тому, что хочу.

<!DOCTYPE HTML> 
<html> 
<body> 

<?php 

include('db_functions.php'); 

function clean_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $fName = clean_input($_POST['first_name']); 
} 

//drop down function 
function dropdown($name, $options) { 
    $dropdown = '<select type="text" name='.$name.'>'."\n"; 
    $rows = $options; 
    if($rows === false) { 
     $error = db_error(); 
    } 
    $totalrows = count($rows); 
    for ($x = 0; $x < $totalrows; $x++) { 
     $dropdown .= '<option value=' . $rows[$x][$name] . '>' . $rows[$x][$name] . '</option>'."\n"; 
    } 
    $dropdown .='</select>'."\n"; 
    return $dropdown; 
} 



echo '<form action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '" method="post">'; 

//start dropdown 
echo 'First Name:'; 
$name = 'first_name'; 
$options = db_select("SELECT DISTINCT first_name FROM nametable GROUP BY first_name ORDER BY first_name ASC LIMIT 20"); 
echo dropdown($name, $options); 

//end dropdown 

echo '<input type="submit" name="submit" value="Submit">'; 
echo '</form>'; 

echo $fName; 

?> 

</body> 
</html> 
+0

Не могли бы вы добавить код 'clean_input' функции? – Tomasz

+0

Спасибо. Я добавил функцию clean_input в код. – TGK

ответ

1

Ваш код пишет

<option value=First Name> 

Пространство концов значение, так Name это отдельный атрибут. Вы должны поместить значение в кавычки, так что

<option value="First Name"> 

Код должен быть:

$dropdown .= '<option value="' . $rows[$x][$name] . '">' . $rows[$x][$name] . '</option>'."\n"; 
+0

В этом была проблема. Теперь это кажется таким очевидным! Большое спасибо! – TGK

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