2015-09-02 1 views
2

Как я могу сделать , этот формуляр предлагает слова в первый столбец $ data?
Это то, что я пытаюсь, но не работает. Как вы можете видеть, я не могу заставить ее работать с <option value>Значение параметра PHP предлагает из плоского файла

<?php 

$data = ' 
Naranja:Orange 
Manzana:Apple 
Tomate:Tomato 
Zanahoria:Carrot 
Lechuga:Lettuce 
Plane:Avión'; 


if($data && !empty($_GET['word'])) { 
    $line = explode("\n", $data); 
    for($i = 0; $i<count($line); $i++) { 
     $item = explode(":", $line[$i]); 
     if($_GET['word'] == $item[0]) { echo"<div>" . $item[0] . "</div> <div>" . $item[1] . "</div>"; break; } 
    } 
} 


else {echo ' 

<form> 
<input type="text" name="word" list="spanishlist" autocomplete="off"> 
<datalist id="spanishlist"> 
<option value="' . $item[0] . '"> 
</datalist> 
</form> 

'; 
} 
?> 
+0

Что вы имеете в виду «предложить»? – Amarnasan

+0

Чтобы показать диапазон опций в форме ввода для его автозаполнения, поскольку значение datalist/option имеет значение в html – Kathlyn

+0

, если вы после чего-то предложите параметры пользователям по мере их ввода, тогда вам нужно посмотреть на клиентскую сторону. – DevDonkey

ответ

0
<?php 

$data = 'Naranja:Orange 
Manzana:Apple 
Tomate:Tomato 
Zanahoria:Carrot 
Lechuga:Lettuce 
Plane:Avión'; 

$pairs = explode("\n",$data); 
$options = []; 
$selected = ''; 
$html = ''; 
foreach($pairs as $pair) { 
    $parts = explode(':', $pair); 
    if (!empty($_GET['word']) && $_GET['word']==$parts[0]) { 
     $html .= "<div>" . $parts[0] . "</div> <div>" . $parts[1] . "</div>"; 
    } 
    $options [] = '<option value="' . $parts[0] . '">'; 
} 
$html .= '<datalist id="fruits">'; 
$html .= implode($options); 
$html .= '</datalist>'; 
$html .= '<input list="fruits">'; 

echo $html; 
Смежные вопросы